From ede4eb0aee99babdc32962e9153442d1d810a7f1 Mon Sep 17 00:00:00 2001
From: yan xiaonan <549250640@qq.com>
Date: Sun, 12 Feb 2023 14:15:20 +0000
Subject: [PATCH 01/60] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D=EF=BC=8C=E5=90=8C?=
 =?UTF-8?q?=E6=AD=A5dictTypeValue=E5=88=B0form=20=E5=90=A6=E5=88=99?=
 =?UTF-8?q?=E5=AF=BC=E8=87=B4=E8=A1=A8=E5=8D=95=E9=AA=8C=E8=AF=81=E4=B8=8D?=
 =?UTF-8?q?=E9=80=9A=E8=BF=87?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: yan xiaonan <549250640@qq.com>
---
 src/views/system/dict/index.vue | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/views/system/dict/index.vue b/src/views/system/dict/index.vue
index d4cce484..9324f764 100644
--- a/src/views/system/dict/index.vue
+++ b/src/views/system/dict/index.vue
@@ -197,6 +197,11 @@ const setDialogTile = (type: string) => {
   dialogVisible.value = true
 }
 
+// 同步dictTypeValue到form 否则导致表单验证不通过
+watch(dictTypeValue, (val) => {
+  unref(typeFormRef)?.setValues({ type: val })
+})
+
 // 提交按钮
 const submitTypeForm = async () => {
   const elForm = unref(typeFormRef)?.getElFormRef()

From c9cebcde41fb0289a6ea945d0fac2f8850fb7ee1 Mon Sep 17 00:00:00 2001
From: bimei <18812666091@163.com>
Date: Fri, 17 Feb 2023 15:58:57 +0800
Subject: [PATCH 02/60] =?UTF-8?q?topActionSlots:=20false=20=E6=8A=A5?=
 =?UTF-8?q?=E9=94=99=E6=8F=90=E7=A4=BA=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/bpm/task/done/index.vue         | 1 +
 src/views/bpm/task/todo/index.vue         | 1 +
 src/views/system/mail/log/index.vue       | 1 +
 src/views/system/notify/message/index.vue | 1 +
 4 files changed, 4 insertions(+)

diff --git a/src/views/bpm/task/done/index.vue b/src/views/bpm/task/done/index.vue
index 31df7bd9..da05549a 100644
--- a/src/views/bpm/task/done/index.vue
+++ b/src/views/bpm/task/done/index.vue
@@ -21,6 +21,7 @@ const { push } = useRouter() // 路由
 
 const [registerTable] = useXTable({
   allSchemas: allSchemas,
+  topActionSlots: false,
   getListApi: TaskApi.getDoneTaskPage
 })
 
diff --git a/src/views/bpm/task/todo/index.vue b/src/views/bpm/task/todo/index.vue
index 86208602..ab286c0b 100644
--- a/src/views/bpm/task/todo/index.vue
+++ b/src/views/bpm/task/todo/index.vue
@@ -22,6 +22,7 @@ const { push } = useRouter() // 路由
 
 const [registerTable] = useXTable({
   allSchemas: allSchemas,
+  topActionSlots:false,
   getListApi: TaskApi.getTodoTaskPage
 })
 
diff --git a/src/views/system/mail/log/index.vue b/src/views/system/mail/log/index.vue
index 7983e3c8..e147c52c 100644
--- a/src/views/system/mail/log/index.vue
+++ b/src/views/system/mail/log/index.vue
@@ -59,6 +59,7 @@ const queryParams = reactive({
 })
 const [registerTable] = useXTable({
   allSchemas: allSchemas,
+  topActionSlots: false,
   params: queryParams,
   getListApi: MailLogApi.getMailLogPageApi
 })
diff --git a/src/views/system/notify/message/index.vue b/src/views/system/notify/message/index.vue
index cb904d27..93a8ed68 100644
--- a/src/views/system/notify/message/index.vue
+++ b/src/views/system/notify/message/index.vue
@@ -37,6 +37,7 @@ const { t } = useI18n() // 国际化
 // 列表相关的变量
 const [registerTable] = useXTable({
   allSchemas: allSchemas,
+  topActionSlots: false,
   getListApi: NotifyMessageApi.getNotifyMessagePageApi
 })
 

From 9c38c33012189c1ed8097944c52b8576e624f8d8 Mon Sep 17 00:00:00 2001
From: bimei <18812666091@163.com>
Date: Fri, 17 Feb 2023 16:52:07 +0800
Subject: [PATCH 03/60] =?UTF-8?q?1.=20=E5=AD=97=E5=85=B8=E7=82=B9=E5=87=BB?=
 =?UTF-8?q?=E8=A1=A8=E6=A0=BC=E7=BA=A2=E8=89=B2=E6=8A=A5=E9=94=99=E4=BF=AE?=
 =?UTF-8?q?=E6=94=B9=20=202.keepalive=E7=BC=93=E5=AD=98toCamelCase?=
 =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=B8=AD=E5=8E=BB=E6=8E=89=E2=80=98-?=
 =?UTF-8?q?=E2=80=99=EF=BC=8C=E4=BF=9D=E7=95=99=E9=A9=BC=E5=B3=B0=E6=98=8E?=
 =?UTF-8?q?=E5=90=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/utils/routerHelper.ts         | 8 +++++---
 src/views/bpm/task/todo/index.vue | 2 +-
 src/views/system/dict/index.vue   | 1 +
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/utils/routerHelper.ts b/src/utils/routerHelper.ts
index 0ae8e1e2..af6a9c3c 100644
--- a/src/utils/routerHelper.ts
+++ b/src/utils/routerHelper.ts
@@ -212,9 +212,11 @@ const addToChildren = (
   }
 }
 const toCamelCase = (str: string, upperCaseFirst: boolean) => {
-  str = (str || '').toLowerCase().replace(/-(.)/g, function (group1: string) {
-    return group1.toUpperCase()
-  })
+  str = (str || '')
+    .replace(/-(.)/g, function (group1: string) {
+      return group1.toUpperCase()
+    })
+    .replaceAll('-', '')
 
   if (upperCaseFirst && str) {
     str = str.charAt(0).toUpperCase() + str.slice(1)
diff --git a/src/views/bpm/task/todo/index.vue b/src/views/bpm/task/todo/index.vue
index ab286c0b..bc21c597 100644
--- a/src/views/bpm/task/todo/index.vue
+++ b/src/views/bpm/task/todo/index.vue
@@ -22,7 +22,7 @@ const { push } = useRouter() // 路由
 
 const [registerTable] = useXTable({
   allSchemas: allSchemas,
-  topActionSlots:false,
+  topActionSlots: false,
   getListApi: TaskApi.getTodoTaskPage
 })
 
diff --git a/src/views/system/dict/index.vue b/src/views/system/dict/index.vue
index d4cce484..d3b52519 100644
--- a/src/views/system/dict/index.vue
+++ b/src/views/system/dict/index.vue
@@ -179,6 +179,7 @@ const tableTypeSelect = ref(false)
 const cellClickEvent: VxeTableEvents.CellClick = async ({ row }) => {
   tableTypeSelect.value = true
   queryParams.dictType = row['type']
+  await nextTick()
   await dataGetList()
   parentType.value = row['type']
 }

From 401794f1bff73a866150ae7bd45837b3304cd80a Mon Sep 17 00:00:00 2001
From: bimei <18812666091@163.com>
Date: Fri, 17 Feb 2023 17:23:42 +0800
Subject: [PATCH 04/60] =?UTF-8?q?=E6=A0=B9=E6=8D=AEkeepalive=E8=A7=84?=
 =?UTF-8?q?=E5=88=99=E4=BF=AE=E6=94=B9=E5=91=BD=E5=90=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/infra/server/index.vue    | 2 +-
 src/views/report/jmreport/index.vue | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/views/infra/server/index.vue b/src/views/infra/server/index.vue
index 8e748b26..cc7590d6 100644
--- a/src/views/infra/server/index.vue
+++ b/src/views/infra/server/index.vue
@@ -3,7 +3,7 @@
     <IFrame :src="src" />
   </ContentWrap>
 </template>
-<script setup lang="ts" name="Server">
+<script setup lang="ts" name="AdminServer">
 const BASE_URL = import.meta.env.VITE_BASE_URL
 const src = ref(BASE_URL + '/admin/applications')
 </script>
diff --git a/src/views/report/jmreport/index.vue b/src/views/report/jmreport/index.vue
index 3e33ad3a..bae999f4 100644
--- a/src/views/report/jmreport/index.vue
+++ b/src/views/report/jmreport/index.vue
@@ -3,7 +3,7 @@
     <IFrame :src="src" />
   </ContentWrap>
 </template>
-<script setup lang="ts" name="Jmreport">
+<script setup lang="ts" name="JimuReport">
 import { getAccessToken } from '@/utils/auth'
 
 const BASE_URL = import.meta.env.VITE_BASE_URL

From 5718c78811c6d2893614c8af99fa7741f7e0c0cc Mon Sep 17 00:00:00 2001
From: bimei <18812666091@163.com>
Date: Fri, 17 Feb 2023 17:25:15 +0800
Subject: [PATCH 05/60] =?UTF-8?q?1.tagsView.ts=E5=88=A0=E9=99=A4=E9=A1=B5?=
 =?UTF-8?q?=E9=9D=A2=E7=BC=93=E5=AD=98=E4=BC=98=E5=8C=96=202.=E6=96=B0?=
 =?UTF-8?q?=E5=A2=9ESearch=E7=BB=84=E4=BB=B6=E6=8F=92=E6=A7=BD=E4=BC=A0?=
 =?UTF-8?q?=E9=80=92?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/components/Search/src/Search.vue | 3 +++
 src/store/modules/tagsView.ts        | 4 ++--
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/components/Search/src/Search.vue b/src/components/Search/src/Search.vue
index ffff5681..a8ae601b 100644
--- a/src/components/Search/src/Search.vue
+++ b/src/components/Search/src/Search.vue
@@ -9,6 +9,8 @@ import { FormSchema } from '@/types/form'
 
 const { t } = useI18n()
 
+const slots = useSlots()
+
 const props = defineProps({
   // 生成Form的布局结构数组
   schema: {
@@ -123,6 +125,7 @@ const setVisible = () => {
         </ElButton>
       </div>
     </template>
+    <template v-for="(slot, name) in slots" #[name]><slot :name="name"></slot></template>
   </Form>
 
   <template v-if="layout === 'bottom'">
diff --git a/src/store/modules/tagsView.ts b/src/store/modules/tagsView.ts
index e9fbf371..a60d0e45 100644
--- a/src/store/modules/tagsView.ts
+++ b/src/store/modules/tagsView.ts
@@ -58,7 +58,7 @@ export const useTagsViewStore = defineStore('tagsView', {
     // 删除某个
     delView(view: RouteLocationNormalizedLoaded) {
       this.delVisitedView(view)
-      this.addCachedView()
+      this.delCachedView()
     },
     // 删除tag
     delVisitedView(view: RouteLocationNormalizedLoaded) {
@@ -80,7 +80,7 @@ export const useTagsViewStore = defineStore('tagsView', {
     // 删除所有缓存和tag
     delAllViews() {
       this.delAllVisitedViews()
-      this.addCachedView()
+      this.delCachedView()
     },
     // 删除所有tag
     delAllVisitedViews() {

From f2f564dc0c37671f97d7c3e48648d3623c383503 Mon Sep 17 00:00:00 2001
From: Siyu Kong <boil@vip.qq.com>
Date: Tue, 21 Feb 2023 18:29:27 +0800
Subject: [PATCH 06/60] =?UTF-8?q?chore:=20=E8=A7=84=E8=8C=83=E4=B8=8D?=
 =?UTF-8?q?=E7=AC=A6=E5=90=88eslint=E6=A0=A1=E9=AA=8C=E8=A7=84=E5=88=99?=
 =?UTF-8?q?=E7=9A=84=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../package/designer/ProcessDesigner.vue      |  2 +-
 .../package/palette/ProcessPalette.vue        |  7 ++--
 .../package/penal/PropertiesPanel.vue         | 15 ++++----
 .../package/penal/base/ElementBaseInfo.vue    |  7 ++--
 .../penal/flow-condition/FlowCondition.vue    | 25 ++++++-------
 .../package/penal/form/ElementForm.vue        | 27 +++++++-------
 .../penal/listeners/ElementListeners.vue      |  3 +-
 .../penal/listeners/UserTaskListeners.vue     |  5 +--
 .../multi-instance/ElementMultiInstance.vue   | 35 ++++++++++---------
 .../penal/other/ElementOtherConfig.vue        |  9 ++---
 .../penal/properties/ElementProperties.vue    | 15 ++++----
 .../penal/signal-message/SignalAndMessage.vue |  7 ++--
 .../package/penal/task/ElementTask.vue        |  5 +--
 .../task/task-components/ReceiveTask.vue      | 13 +++----
 .../penal/task/task-components/ScriptTask.vue |  6 ++--
 .../penal/task/task-components/UserTask.vue   |  6 ++--
 .../bpmnProcessDesigner/package/utils.ts      | 17 ++++-----
 src/hooks/web/useI18n.ts                      |  1 +
 src/hooks/web/useTimeAgo.ts                   |  2 ++
 src/types/auto-components.d.ts                |  6 +++-
 src/types/auto-imports.d.ts                   |  5 ++-
 src/views/bpm/model/modelEditor.vue           |  2 +-
 src/views/bpm/processInstance/detail.vue      |  2 +-
 src/views/system/notify/my/index.vue          |  2 +-
 24 files changed, 127 insertions(+), 97 deletions(-)

diff --git a/src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue b/src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue
index 1f471f3e..977e945d 100644
--- a/src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue
+++ b/src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue
@@ -331,7 +331,7 @@ const additionalModules = computed(() => {
 
   // 插入用户自定义扩展模块
   if (Object.prototype.toString.call(props.additionalModel) == '[object Array]') {
-    Modules.push(...props.additionalModel)
+    Modules.push(...(props.additionalModel as any[]))
   } else {
     props.additionalModel && Modules.push(props.additionalModel)
   }
diff --git a/src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue b/src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue
index f5272840..38e4ba17 100644
--- a/src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue
+++ b/src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue
@@ -8,9 +8,10 @@
 <script setup lang="ts" name="MyProcessPalette">
 import { assign } from 'min-dash'
 
-const addTask = (event, options = {}) => {
-  const ElementFactory = window.bpmnInstances.elementFactory
-  const create = window.bpmnInstances.modeler.get('create')
+const bpmnInstances = () => (window as any).bpmnInstances
+const addTask = (event, options: any = {}) => {
+  const ElementFactory = bpmnInstances().elementFactory
+  const create = bpmnInstances().modeler.get('create')
 
   console.log(ElementFactory, create)
 
diff --git a/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue b/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
index 03dec801..74d8b00a 100644
--- a/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue
@@ -109,6 +109,7 @@ const bpmnElement = ref()
 const timer = ref()
 provide('prefix', props.prefix)
 provide('width', props.width)
+const bpmnInstances = () => (window as any)?.bpmnInstances
 const initModels = () => {
   // console.log(props, 'props')
   // console.log(props.bpmnModeler, 'sakdjjaskdsajdkasdjkadsjk')
@@ -121,7 +122,8 @@ const initModels = () => {
   }
   if (timer.value) {
     clearTimeout(timer.value)
-    window.bpmnInstances = {
+    const w = window as any
+    w.bpmnInstances = {
       modeler: props.bpmnModeler,
       modeling: props.bpmnModeler.get('modeling'),
       moddle: props.bpmnModeler.get('moddle'),
@@ -134,7 +136,7 @@ const initModels = () => {
     }
   }
 
-  console.log(window.bpmnInstances, 'window.bpmnInstances')
+  console.log(bpmnInstances(), 'window.bpmnInstances')
   getActiveElement()
   // })
 }
@@ -161,8 +163,8 @@ const initFormOnChanged = (element) => {
   let activatedElement = element
   if (!activatedElement) {
     activatedElement =
-      window.bpmnInstances.elementRegistry.find((el) => el.type === 'bpmn:Process') ??
-      window.bpmnInstances.elementRegistry.find((el) => el.type === 'bpmn:Collaboration')
+      bpmnInstances().elementRegistry.find((el) => el.type === 'bpmn:Process') ??
+      bpmnInstances().elementRegistry.find((el) => el.type === 'bpmn:Collaboration')
   }
   if (!activatedElement) return
   console.log(`
@@ -173,7 +175,7 @@ const initFormOnChanged = (element) => {
               ----------
               `)
   console.log('businessObject: ', activatedElement.businessObject)
-  window.bpmnInstances.bpmnElement = activatedElement
+  bpmnInstances().bpmnElement = activatedElement
   bpmnElement.value = activatedElement
   elementId.value = activatedElement.id
   elementType.value = activatedElement.type.split(':')[1] || ''
@@ -191,7 +193,8 @@ onMounted(() => {
   }, 100)
 })
 onBeforeUnmount(() => {
-  window.bpmnInstances = null
+  const w = window as any
+  w.bpmnInstances = null
   console.log(props, 'props1')
   console.log(props.bpmnModeler, 'props.bpmnModeler1')
 })
diff --git a/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue b/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue
index d9f178a0..e2bfecba 100644
--- a/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue
@@ -59,11 +59,12 @@ const rules = reactive({
   name: [{ required: true, message: '流程名称不能为空', trigger: 'blur' }]
 })
 
+const bpmnInstances = () => (window as any)?.bpmnInstances
 const resetBaseInfo = () => {
   console.log(window, 'window')
   console.log(bpmnElement.value, 'bpmnElement')
 
-  bpmnElement.value = window?.bpmnInstances?.bpmnElement
+  bpmnElement.value = bpmnInstances()?.bpmnElement
   console.log(bpmnElement.value, 'resetBaseInfo11111111111')
   elementBaseInfo.value = bpmnElement.value.businessObject
   needProps.value['type'] = bpmnElement.value.businessObject.$type
@@ -125,13 +126,13 @@ const updateBaseInfo = (key) => {
     console.log(window, 'window')
     console.log(bpmnElement.value, 'bpmnElement')
     console.log(toRaw(bpmnElement.value), 'bpmnElement')
-    window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElement.value), {
+    bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
       id: elementBaseInfo.value[key],
       di: { id: `${elementBaseInfo.value[key]}_di` }
     })
   } else {
     console.log(attrObj, 'attrObj')
-    window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElement.value), attrObj)
+    bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), attrObj)
   }
 }
 onMounted(() => {
diff --git a/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue b/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue
index ee4512e7..5b804801 100644
--- a/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue
@@ -72,14 +72,15 @@ const bpmnElement = ref()
 const bpmnElementSource = ref()
 const bpmnElementSourceRef = ref()
 const flowConditionRef = ref()
+const bpmnInstances = () => (window as any)?.bpmnInstances
 const resetFlowCondition = () => {
-  bpmnElement.value = window.bpmnInstances.bpmnElement
+  bpmnElement.value = bpmnInstances().bpmnElement
   bpmnElementSource.value = bpmnElement.value.source
   bpmnElementSourceRef.value = bpmnElement.value.businessObject.sourceRef
   if (
     bpmnElementSourceRef.value &&
     bpmnElementSourceRef.value.default &&
-    bpmnElementSourceRef.value.default.id === this.bpmnElement.id
+    bpmnElementSourceRef.value.default.id === bpmnElement.value.id
   ) {
     // 默认
     flowConditionForm.value = { type: 'default' }
@@ -113,18 +114,18 @@ const resetFlowCondition = () => {
 const updateFlowType = (flowType) => {
   // 正常条件类
   if (flowType === 'condition') {
-    flowConditionRef.value = window.bpmnInstances.moddle.create('bpmn:FormalExpression')
-    window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElement.value), {
+    flowConditionRef.value = bpmnInstances().moddle.create('bpmn:FormalExpression')
+    bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
       conditionExpression: flowConditionRef.value
     })
     return
   }
   // 默认路径
   if (flowType === 'default') {
-    window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElement.value), {
+    bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
       conditionExpression: null
     })
-    window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElementSource.value), {
+    bpmnInstances().modeling.updateProperties(toRaw(bpmnElementSource.value), {
       default: bpmnElement.value
     })
     return
@@ -134,11 +135,11 @@ const updateFlowType = (flowType) => {
     bpmnElementSourceRef.value.default &&
     bpmnElementSourceRef.value.default.id === bpmnElement.value.id
   ) {
-    window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElementSource.value), {
+    bpmnInstances().modeling.updateProperties(toRaw(bpmnElementSource.value), {
       default: null
     })
   }
-  window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElement.value), {
+  bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
     conditionExpression: null
   })
 }
@@ -146,22 +147,22 @@ const updateFlowCondition = () => {
   let { conditionType, scriptType, body, resource, language } = flowConditionForm.value
   let condition
   if (conditionType === 'expression') {
-    condition = window.bpmnInstances.moddle.create('bpmn:FormalExpression', { body })
+    condition = bpmnInstances().moddle.create('bpmn:FormalExpression', { body })
   } else {
     if (scriptType === 'inlineScript') {
-      condition = window.bpmnInstances.moddle.create('bpmn:FormalExpression', { body, language })
+      condition = bpmnInstances().moddle.create('bpmn:FormalExpression', { body, language })
       // this.$set(this.flowConditionForm, "resource", "");
       flowConditionForm.value['resource'] = ''
     } else {
       // this.$set(this.flowConditionForm, "body", "");
       flowConditionForm.value['body'] = ''
-      condition = window.bpmnInstances.moddle.create('bpmn:FormalExpression', {
+      condition = bpmnInstances().moddle.create('bpmn:FormalExpression', {
         resource,
         language
       })
     }
   }
-  window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElement.value), {
+  bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
     conditionExpression: condition
   })
 }
diff --git a/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue b/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue
index a1b51623..cb96a2fb 100644
--- a/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue
@@ -239,17 +239,18 @@ const elExtensionElements = ref()
 const formData = ref()
 const otherExtensions = ref()
 
+const bpmnInstances = () => (window as any)?.bpmnInstances
 const resetFormList = () => {
-  bpmnELement.value = window.bpmnInstances.bpmnElement
+  bpmnELement.value = bpmnInstances().bpmnElement
   formKey.value = bpmnELement.value.businessObject.formKey
   // 获取元素扩展属性 或者 创建扩展属性
   elExtensionElements.value =
     bpmnELement.value.businessObject.get('extensionElements') ||
-    window.bpmnInstances.moddle.create('bpmn:ExtensionElements', { values: [] })
+    bpmnInstances().moddle.create('bpmn:ExtensionElements', { values: [] })
   // 获取元素表单配置 或者 创建新的表单配置
   formData.value =
     elExtensionElements.value.values.filter((ex) => ex.$type === `${prefix}:FormData`)?.[0] ||
-    window.bpmnInstances.moddle.create(`${prefix}:FormData`, { fields: [] })
+    bpmnInstances().moddle.create(`${prefix}:FormData`, { fields: [] })
 
   // 业务标识 businessKey, 绑定在 formData 中
   businessKey.value = formData.value.businessKey
@@ -266,12 +267,12 @@ const resetFormList = () => {
   updateElementExtensions()
 }
 const updateElementFormKey = () => {
-  window.bpmnInstances.modeling.updateProperties(toRaw(bpmnELement.value), {
+  bpmnInstances().modeling.updateProperties(toRaw(bpmnELement.value), {
     formKey: formKey.value
   })
 }
 const updateElementBusinessKey = () => {
-  window.bpmnInstances.modeling.updateModdleProperties(toRaw(bpmnELement.value), formData.value, {
+  bpmnInstances().modeling.updateModdleProperties(toRaw(bpmnELement.value), formData.value, {
     businessKey: businessKey.value
   })
 }
@@ -353,37 +354,37 @@ const saveFieldOption = () => {
 // 保存字段配置
 const saveField = () => {
   const { id, type, label, defaultValue, datePattern } = formFieldForm.value
-  const Field = window.bpmnInstances.moddle.create(`${prefix}:FormField`, { id, type, label })
+  const Field = bpmnInstances().moddle.create(`${prefix}:FormField`, { id, type, label })
   defaultValue && (Field.defaultValue = defaultValue)
   datePattern && (Field.datePattern = datePattern)
   // 构建属性
   if (fieldPropertiesList.value && fieldPropertiesList.value.length) {
     const fieldPropertyList = fieldPropertiesList.value.map((fp) => {
-      return window.bpmnInstances.moddle.create(`${prefix}:Property`, {
+      return bpmnInstances().moddle.create(`${prefix}:Property`, {
         id: fp.id,
         value: fp.value
       })
     })
-    Field.properties = window.bpmnInstances.moddle.create(`${this.prefix}:Properties`, {
+    Field.properties = bpmnInstances().moddle.create(`${prefix}:Properties`, {
       values: fieldPropertyList
     })
   }
   // 构建校验规则
   if (fieldConstraintsList.value && fieldConstraintsList.value.length) {
     const fieldConstraintList = fieldConstraintsList.value.map((fc) => {
-      return window.bpmnInstances.moddle.create(`${prefix}:Constraint`, {
+      return bpmnInstances().moddle.create(`${prefix}:Constraint`, {
         name: fc.name,
         config: fc.config
       })
     })
-    Field.validation = window.bpmnInstances.moddle.create(`${prefix}:Validation`, {
+    Field.validation = bpmnInstances().moddle.create(`${prefix}:Validation`, {
       constraints: fieldConstraintList
     })
   }
   // 构建枚举值
   if (fieldEnumList.value && fieldEnumList.value.length) {
     Field.values = fieldEnumList.value.map((fe) => {
-      return window.bpmnInstances.moddle.create(`${prefix}:Value`, { name: fe.name, id: fe.id })
+      return bpmnInstances().moddle.create(`${prefix}:Value`, { name: fe.name, id: fe.id })
     })
   }
   // 更新数组 与 表单配置实例
@@ -421,11 +422,11 @@ const removeField = (field, index) => {
 
 const updateElementExtensions = () => {
   // 更新回扩展元素
-  const newElExtensionElements = window.bpmnInstances.moddle.create(`bpmn:ExtensionElements`, {
+  const newElExtensionElements = bpmnInstances().moddle.create(`bpmn:ExtensionElements`, {
     values: otherExtensions.value.concat(formData.value)
   })
   // 更新到元素上
-  window.bpmnInstances.modeling.updateProperties(toRaw(bpmnELement.value), {
+  bpmnInstances().modeling.updateProperties(toRaw(bpmnELement.value), {
     extensionElements: newElExtensionElements
   })
 }
diff --git a/src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue b/src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue
index 0c29e6ff..5c2db5af 100644
--- a/src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue
@@ -266,9 +266,10 @@ const otherExtensionList = ref()
 const bpmnElementListeners = ref()
 const listenerFormRef = ref()
 const listenerFieldFormRef = ref()
+const bpmnInstances = () => (window as any)?.bpmnInstances
 
 const resetListenersList = () => {
-  bpmnElement.value = window.bpmnInstances.bpmnElement
+  bpmnElement.value = bpmnInstances().bpmnElement
   otherExtensionList.value = []
   bpmnElementListeners.value =
     bpmnElement.value.businessObject?.extensionElements?.values?.filter(
diff --git a/src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue b/src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue
index 7746ca86..e4201b52 100644
--- a/src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue
@@ -313,13 +313,14 @@ const bpmnElementListeners = ref()
 const otherExtensionList = ref()
 const listenerFormRef = ref()
 const listenerFieldFormRef = ref()
+const bpmnInstances = () => (window as any)?.bpmnInstances
 
 const resetListenersList = () => {
   console.log(
-    window.bpmnInstances.bpmnElement,
+    bpmnInstances().bpmnElement,
     'window.bpmnInstances.bpmnElementwindow.bpmnInstances.bpmnElementwindow.bpmnInstances.bpmnElementwindow.bpmnInstances.bpmnElementwindow.bpmnInstances.bpmnElementwindow.bpmnInstances.bpmnElement'
   )
-  bpmnElement.value = window.bpmnInstances.bpmnElement
+  bpmnElement.value = bpmnInstances().bpmnElement
   otherExtensionList.value = []
   bpmnElementListeners.value =
     bpmnElement.value.businessObject?.extensionElements?.values.filter(
diff --git a/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue b/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue
index 6d0229bb..962234d5 100644
--- a/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue
@@ -87,6 +87,7 @@ const defaultLoopInstanceForm = ref({
 const loopInstanceForm = ref<any>({})
 const bpmnElement = ref(null)
 const multiLoopInstance = ref(null)
+const bpmnInstances = () => (window as any)?.bpmnInstances
 
 const getElementLoop = (businessObject) => {
   if (!businessObject.loopCharacteristics) {
@@ -112,7 +113,7 @@ const getElementLoop = (businessObject) => {
     loopCardinality: businessObject.loopCharacteristics?.loopCardinality?.body ?? ''
   }
   // 保留当前元素 businessObject 上的 loopCharacteristics 实例
-  multiLoopInstance.value = window.bpmnInstances.bpmnElement.businessObject.loopCharacteristics
+  multiLoopInstance.value = bpmnInstances().bpmnElement.businessObject.loopCharacteristics
   // 更新表单
   if (
     businessObject.loopCharacteristics.extensionElements &&
@@ -127,17 +128,17 @@ const changeLoopCharacteristicsType = (type) => {
   // this.loopInstanceForm = { ...this.defaultLoopInstanceForm }; // 切换类型取消原表单配置
   // 取消多实例配置
   if (type === 'Null') {
-    window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElement.value), {
+    bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
       loopCharacteristics: null
     })
     return
   }
   // 配置循环
   if (type === 'StandardLoop') {
-    const loopCharacteristicsObject = window.bpmnInstances.moddle.create(
+    const loopCharacteristicsObject = bpmnInstances().moddle.create(
       'bpmn:StandardLoopCharacteristics'
     )
-    window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElement.value), {
+    bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
       loopCharacteristics: loopCharacteristicsObject
     })
     multiLoopInstance.value = null
@@ -145,17 +146,17 @@ const changeLoopCharacteristicsType = (type) => {
   }
   // 时序
   if (type === 'SequentialMultiInstance') {
-    multiLoopInstance.value = window.bpmnInstances.moddle.create(
+    multiLoopInstance.value = bpmnInstances().moddle.create(
       'bpmn:MultiInstanceLoopCharacteristics',
       { isSequential: true }
     )
   } else {
-    multiLoopInstance.value = window.bpmnInstances.moddle.create(
+    multiLoopInstance.value = bpmnInstances().moddle.create(
       'bpmn:MultiInstanceLoopCharacteristics',
       { collection: '${coll_userList}' }
     )
   }
-  window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElement.value), {
+  bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
     loopCharacteristics: toRaw(multiLoopInstance.value)
   })
 }
@@ -163,11 +164,11 @@ const changeLoopCharacteristicsType = (type) => {
 const updateLoopCardinality = (cardinality) => {
   let loopCardinality = null
   if (cardinality && cardinality.length) {
-    loopCardinality = window.bpmnInstances.moddle.create('bpmn:FormalExpression', {
+    loopCardinality = bpmnInstances().moddle.create('bpmn:FormalExpression', {
       body: cardinality
     })
   }
-  window.bpmnInstances.modeling.updateModdleProperties(
+  bpmnInstances().modeling.updateModdleProperties(
     toRaw(bpmnElement.value),
     multiLoopInstance.value,
     {
@@ -179,11 +180,11 @@ const updateLoopCardinality = (cardinality) => {
 const updateLoopCondition = (condition) => {
   let completionCondition = null
   if (condition && condition.length) {
-    completionCondition = window.bpmnInstances.moddle.create('bpmn:FormalExpression', {
+    completionCondition = bpmnInstances().moddle.create('bpmn:FormalExpression', {
       body: condition
     })
   }
-  window.bpmnInstances.modeling.updateModdleProperties(
+  bpmnInstances().modeling.updateModdleProperties(
     toRaw(bpmnElement.value),
     multiLoopInstance.value,
     {
@@ -193,14 +194,14 @@ const updateLoopCondition = (condition) => {
 }
 // 重试周期
 const updateLoopTimeCycle = (timeCycle) => {
-  const extensionElements = window.bpmnInstances.moddle.create('bpmn:ExtensionElements', {
+  const extensionElements = bpmnInstances().moddle.create('bpmn:ExtensionElements', {
     values: [
-      window.bpmnInstances.moddle.create(`${prefix}:FailedJobRetryTimeCycle`, {
+      bpmnInstances().moddle.create(`${prefix}:FailedJobRetryTimeCycle`, {
         body: timeCycle
       })
     ]
   })
-  window.bpmnInstances.modeling.updateModdleProperties(
+  bpmnInstances().modeling.updateModdleProperties(
     toRaw(bpmnElement.value),
     multiLoopInstance.value,
     {
@@ -210,7 +211,7 @@ const updateLoopTimeCycle = (timeCycle) => {
 }
 // 直接更新的基础信息
 const updateLoopBase = () => {
-  window.bpmnInstances.modeling.updateModdleProperties(
+  bpmnInstances().modeling.updateModdleProperties(
     toRaw(bpmnElement.value),
     multiLoopInstance.value,
     {
@@ -230,7 +231,7 @@ const updateLoopAsync = (key) => {
   } else {
     asyncAttr[key] = loopInstanceForm.value[key]
   }
-  window.bpmnInstances.modeling.updateModdleProperties(
+  bpmnInstances().modeling.updateModdleProperties(
     toRaw(bpmnElement.value),
     multiLoopInstance.value,
     asyncAttr
@@ -245,7 +246,7 @@ onBeforeUnmount(() => {
 watch(
   () => props.businessObject,
   (val) => {
-    bpmnElement.value = window.bpmnInstances.bpmnElement
+    bpmnElement.value = bpmnInstances().bpmnElement
     getElementLoop(val)
   },
   { immediate: true }
diff --git a/src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue b/src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue
index fe2d004d..2c55481c 100644
--- a/src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue
@@ -22,13 +22,14 @@ const props = defineProps({
 })
 const documentation = ref('')
 const bpmnElement = ref()
+const bpmnInstances = () => (window as any).bpmnInstances
 const updateDocumentation = () => {
   ;(bpmnElement.value && bpmnElement.value.id === props.id) ||
-    (bpmnElement.value = (window as any).bpmnInstances.elementRegistry.get(props.id))
-  const documentations = window.bpmnInstances.bpmnFactory.create('bpmn:Documentation', {
+    (bpmnElement.value = bpmnInstances().elementRegistry.get(props.id))
+  const documentations = bpmnInstances().bpmnFactory.create('bpmn:Documentation', {
     text: documentation.value
   })
-  window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElement.value), {
+  bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
     documentation: [documentations]
   })
 }
@@ -41,7 +42,7 @@ watch(
   (id) => {
     if (id && id.length) {
       nextTick(() => {
-        const documentations = window.bpmnInstances.bpmnElement.businessObject?.documentation
+        const documentations = bpmnInstances().bpmnElement.businessObject?.documentation
         documentation.value = documentations && documentations.length ? documentations[0].text : ''
       })
     } else {
diff --git a/src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue b/src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue
index 388c363f..f1670ffb 100644
--- a/src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue
@@ -70,10 +70,11 @@ const otherExtensionList = ref()
 const bpmnElementProperties = ref()
 const bpmnElementPropertyList = ref()
 const attributeFormRef = ref()
+const bpmnInstances = () => (window as any)?.bpmnInstances
 
 const resetAttributesList = () => {
   console.log(window, 'windowwindowwindowwindowwindowwindowwindow')
-  bpmnElement.value = window.bpmnInstances.bpmnElement
+  bpmnElement.value = bpmnInstances().bpmnElement
   otherExtensionList.value = [] // 其他扩展配置
   bpmnElementProperties.value =
     // bpmnElement.value.businessObject?.extensionElements?.filter((ex) => {
@@ -110,7 +111,7 @@ const removeAttributes = (attr, index) => {
       elementPropertyList.value.splice(index, 1)
       bpmnElementPropertyList.value.splice(index, 1)
       // 新建一个属性字段的保存列表
-      const propertiesObject = window.bpmnInstances.moddle.create(`${prefix}:Properties`, {
+      const propertiesObject = bpmnInstances().moddle.create(`${prefix}:Properties`, {
         values: bpmnElementPropertyList.value
       })
       updateElementExtensions(propertiesObject)
@@ -122,7 +123,7 @@ const saveAttribute = () => {
   console.log(propertyForm.value, 'propertyForm.value')
   const { name, value } = propertyForm.value
   if (editingPropertyIndex.value !== -1) {
-    window.bpmnInstances.modeling.updateModdleProperties(
+    bpmnInstances().modeling.updateModdleProperties(
       toRaw(bpmnElement.value),
       toRaw(bpmnElementPropertyList.value)[toRaw(editingPropertyIndex.value)],
       {
@@ -132,12 +133,12 @@ const saveAttribute = () => {
     )
   } else {
     // 新建属性字段
-    const newPropertyObject = window.bpmnInstances.moddle.create(`${prefix}:Property`, {
+    const newPropertyObject = bpmnInstances().moddle.create(`${prefix}:Property`, {
       name,
       value
     })
     // 新建一个属性字段的保存列表
-    const propertiesObject = window.bpmnInstances.moddle.create(`${prefix}:Properties`, {
+    const propertiesObject = bpmnInstances().moddle.create(`${prefix}:Properties`, {
       values: bpmnElementPropertyList.value.concat([newPropertyObject])
     })
     updateElementExtensions(propertiesObject)
@@ -146,10 +147,10 @@ const saveAttribute = () => {
   resetAttributesList()
 }
 const updateElementExtensions = (properties) => {
-  const extensions = window.bpmnInstances.moddle.create('bpmn:ExtensionElements', {
+  const extensions = bpmnInstances().moddle.create('bpmn:ExtensionElements', {
     values: otherExtensionList.value.concat([properties])
   })
-  window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElement.value), {
+  bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
     extensionElements: extensions
   })
 }
diff --git a/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue b/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue
index 285b3411..e2c406db 100644
--- a/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue
@@ -62,10 +62,11 @@ const modelConfig = computed(() => {
     return { title: '创建信号', idLabel: '信号ID', nameLabel: '信号名称' }
   }
 })
+const bpmnInstances = () => (window as any)?.bpmnInstances
 
 const initDataList = () => {
   console.log(window, 'window')
-  rootElements.value = window.bpmnInstances.modeler.getDefinitions().rootElements
+  rootElements.value = bpmnInstances().modeler.getDefinitions().rootElements
   messageIdMap.value = {}
   signalIdMap.value = {}
   messageList.value = []
@@ -91,13 +92,13 @@ const addNewObject = () => {
     if (messageIdMap.value[modelObjectForm.value.id]) {
       message.error('该消息已存在,请修改id后重新保存')
     }
-    const messageRef = window.bpmnInstances.moddle.create('bpmn:Message', modelObjectForm.value)
+    const messageRef = bpmnInstances().moddle.create('bpmn:Message', modelObjectForm.value)
     rootElements.value.push(messageRef)
   } else {
     if (signalIdMap.value[modelObjectForm.value.id]) {
       message.error('该信号已存在,请修改id后重新保存')
     }
-    const signalRef = window.bpmnInstances.moddle.create('bpmn:Signal', modelObjectForm.value)
+    const signalRef = bpmnInstances().moddle.create('bpmn:Signal', modelObjectForm.value)
     rootElements.value.push(signalRef)
   }
   modelVisible.value = false
diff --git a/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue
index 939116ab..23e750a1 100644
--- a/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue
@@ -45,11 +45,12 @@ const installedComponent = ref({
 })
 const bpmnElement = ref()
 
+const bpmnInstances = () => (window as any).bpmnInstances
 const changeTaskAsync = () => {
   if (!taskConfigForm.value.asyncBefore && !taskConfigForm.value.asyncAfter) {
     taskConfigForm.value.exclusive = false
   }
-  window.bpmnInstances.modeling.updateProperties(window.bpmnInstances.bpmnElement, {
+  bpmnInstances().modeling.updateProperties(bpmnInstances().bpmnElement, {
     ...taskConfigForm.value
   })
 }
@@ -57,7 +58,7 @@ const changeTaskAsync = () => {
 watch(
   () => props.id,
   () => {
-    bpmnElement.value = window.bpmnInstances.bpmnElement
+    bpmnElement.value = bpmnInstances().bpmnElement
     taskConfigForm.value.asyncBefore = bpmnElement.value?.businessObject?.asyncBefore
     taskConfigForm.value.asyncAfter = bpmnElement.value?.businessObject?.asyncAfter
     taskConfigForm.value.exclusive = bpmnElement.value?.businessObject?.exclusive
diff --git a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue
index d8e1b4af..63db1c75 100644
--- a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue
@@ -64,8 +64,9 @@ const bpmnElement = ref<any>()
 const bpmnMessageRefsMap = ref<any>()
 const bpmnRootElements = ref<any>()
 
+const bpmnInstances = () => (window as any).bpmnInstances
 const getBindMessage = () => {
-  bpmnElement.value = window.bpmnInstances.bpmnElement
+  bpmnElement.value = bpmnInstances().bpmnElement
   bindMessageId.value = bpmnElement.value.businessObject?.messageRef?.id || '-1'
 }
 const openMessageModel = () => {
@@ -77,7 +78,7 @@ const createNewMessage = () => {
     message.error('该消息已存在,请修改id后重新保存')
     return
   }
-  const newMessage = window.bpmnInstances.moddle.create('bpmn:Message', newMessageForm.value)
+  const newMessage = bpmnInstances().moddle.create('bpmn:Message', newMessageForm.value)
   bpmnRootElements.value.push(newMessage)
   messageMap.value[newMessageForm.value.id] = newMessageForm.value.name
   bpmnMessageRefsMap.value[newMessageForm.value.id] = newMessage
@@ -85,11 +86,11 @@ const createNewMessage = () => {
 }
 const updateTaskMessage = (messageId) => {
   if (messageId === '-1') {
-    window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElement.value), {
+    bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
       messageRef: null
     })
   } else {
-    window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElement.value), {
+    bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), {
       messageRef: bpmnMessageRefsMap.value[messageId]
     })
   }
@@ -97,7 +98,7 @@ const updateTaskMessage = (messageId) => {
 
 onMounted(() => {
   bpmnMessageRefsMap.value = Object.create(null)
-  bpmnRootElements.value = window.bpmnInstances.modeler.getDefinitions().rootElements
+  bpmnRootElements.value = bpmnInstances().modeler.getDefinitions().rootElements
   bpmnRootElements.value
     .filter((el) => el.$type === 'bpmn:Message')
     .forEach((m) => {
@@ -113,7 +114,7 @@ onBeforeUnmount(() => {
 watch(
   () => props.id,
   () => {
-    // bpmnElement.value = window.bpmnInstances.bpmnElement
+    // bpmnElement.value = bpmnInstances().bpmnElement
     nextTick(() => {
       getBindMessage()
     })
diff --git a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue
index ba3e6edf..bacdec0e 100644
--- a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue
@@ -58,6 +58,8 @@ const defaultTaskForm = ref({
 const scriptTaskForm = ref<any>({})
 const bpmnElement = ref()
 
+const bpmnInstances = () => (window as any)?.bpmnInstances
+
 const resetTaskForm = () => {
   for (let key in defaultTaskForm.value) {
     let value = bpmnElement.value?.businessObject[key] || defaultTaskForm.value[key]
@@ -76,7 +78,7 @@ const updateElementTask = () => {
     taskAttr.resource = scriptTaskForm.value.resource || null
     taskAttr.script = null
   }
-  window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElement.value), taskAttr)
+  bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), taskAttr)
 }
 
 onBeforeUnmount(() => {
@@ -86,7 +88,7 @@ onBeforeUnmount(() => {
 watch(
   () => props.id,
   () => {
-    bpmnElement.value = window.bpmnInstances.bpmnElement
+    bpmnElement.value = bpmnInstances().bpmnElement
     nextTick(() => {
       resetTaskForm()
     })
diff --git a/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue
index 118fa71b..725335eb 100644
--- a/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue
@@ -53,6 +53,8 @@ const defaultTaskForm = ref({
 const userTaskForm = ref<any>({})
 // const mockData=ref([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
 const bpmnElement = ref()
+const bpmnInstances = () => (window as any)?.bpmnInstances
+
 const resetTaskForm = () => {
   for (let key in defaultTaskForm.value) {
     let value
@@ -76,13 +78,13 @@ const updateElementTask = (key) => {
   } else {
     taskAttr[key] = userTaskForm.value[key] || null
   }
-  window.bpmnInstances.modeling.updateProperties(toRaw(bpmnElement.value), taskAttr)
+  bpmnInstances().modeling.updateProperties(toRaw(bpmnElement.value), taskAttr)
 }
 
 watch(
   () => props.id,
   () => {
-    bpmnElement.value = window.bpmnInstances.bpmnElement
+    bpmnElement.value = bpmnInstances().bpmnElement
     nextTick(() => {
       resetTaskForm()
     })
diff --git a/src/components/bpmnProcessDesigner/package/utils.ts b/src/components/bpmnProcessDesigner/package/utils.ts
index 41f06801..bb6c5d52 100644
--- a/src/components/bpmnProcessDesigner/package/utils.ts
+++ b/src/components/bpmnProcessDesigner/package/utils.ts
@@ -1,4 +1,5 @@
 import { toRaw } from 'vue'
+const bpmnInstances = () => (window as any)?.bpmnInstances
 // 创建监听器实例
 export function createListenerObject(options, isTask, prefix) {
   const listenerObj = Object.create(null)
@@ -25,16 +26,16 @@ export function createListenerObject(options, isTask, prefix) {
   }
   // 任务监听器的 定时器 设置
   if (isTask && options.event === 'timeout' && !!options.eventDefinitionType) {
-    const timeDefinition = window.bpmnInstances.moddle.create('bpmn:FormalExpression', {
+    const timeDefinition = bpmnInstances().moddle.create('bpmn:FormalExpression', {
       body: options.eventTimeDefinitions
     })
-    const TimerEventDefinition = window.bpmnInstances.moddle.create('bpmn:TimerEventDefinition', {
+    const TimerEventDefinition = bpmnInstances().moddle.create('bpmn:TimerEventDefinition', {
       id: `TimerEventDefinition_${uuid(8)}`,
       [`time${options.eventDefinitionType.replace(/^\S/, (s) => s.toUpperCase())}`]: timeDefinition
     })
     listenerObj.eventDefinitions = [TimerEventDefinition]
   }
-  return window.bpmnInstances.moddle.create(
+  return bpmnInstances().moddle.create(
     `${prefix}:${isTask ? 'TaskListener' : 'ExecutionListener'}`,
     listenerObj
   )
@@ -44,7 +45,7 @@ export function createListenerObject(options, isTask, prefix) {
 export function createFieldObject(option, prefix) {
   const { name, fieldType, string, expression } = option
   const fieldConfig = fieldType === 'string' ? { name, string } : { name, expression }
-  return window.bpmnInstances.moddle.create(`${prefix}:Field`, fieldConfig)
+  return bpmnInstances().moddle.create(`${prefix}:Field`, fieldConfig)
 }
 
 // 创建脚本实例
@@ -52,21 +53,21 @@ export function createScriptObject(options, prefix) {
   const { scriptType, scriptFormat, value, resource } = options
   const scriptConfig =
     scriptType === 'inlineScript' ? { scriptFormat, value } : { scriptFormat, resource }
-  return window.bpmnInstances.moddle.create(`${prefix}:Script`, scriptConfig)
+  return bpmnInstances().moddle.create(`${prefix}:Script`, scriptConfig)
 }
 
 // 更新元素扩展属性
 export function updateElementExtensions(element, extensionList) {
-  const extensions = window.bpmnInstances.moddle.create('bpmn:ExtensionElements', {
+  const extensions = bpmnInstances().moddle.create('bpmn:ExtensionElements', {
     values: extensionList
   })
-  window.bpmnInstances.modeling.updateProperties(toRaw(element), {
+  bpmnInstances().modeling.updateProperties(toRaw(element), {
     extensionElements: extensions
   })
 }
 
 // 创建一个id
-export function uuid(length = 8, chars) {
+export function uuid(length = 8, chars?) {
   let result = ''
   const charsString = chars || '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
   for (let i = length; i > 0; --i) {
diff --git a/src/hooks/web/useI18n.ts b/src/hooks/web/useI18n.ts
index 8b6e7650..d1ab70fa 100644
--- a/src/hooks/web/useI18n.ts
+++ b/src/hooks/web/useI18n.ts
@@ -41,6 +41,7 @@ export const useI18n = (
   const tFn: I18nGlobalTranslation = (key: string, ...arg: any[]) => {
     if (!key) return ''
     if (!key.includes('.') && !namespace) return key
+    //@ts-ignore
     return t(getKey(namespace, key), ...(arg as I18nTranslationRestParameters))
   }
   return {
diff --git a/src/hooks/web/useTimeAgo.ts b/src/hooks/web/useTimeAgo.ts
index 08f5d1e6..a6da2819 100644
--- a/src/hooks/web/useTimeAgo.ts
+++ b/src/hooks/web/useTimeAgo.ts
@@ -5,6 +5,7 @@ const TIME_AGO_MESSAGE_MAP: {
   'zh-CN': UseTimeAgoMessages
   en: UseTimeAgoMessages
 } = {
+  // @ts-ignore
   'zh-CN': {
     justNow: '刚刚',
     past: (n) => (n.match(/\d/) ? `${n}前` : n),
@@ -17,6 +18,7 @@ const TIME_AGO_MESSAGE_MAP: {
     minute: (n) => `${n} 分钟`,
     second: (n) => `${n} 秒`
   },
+  // @ts-ignore
   en: {
     justNow: 'just now',
     past: (n) => (n.match(/\d/) ? `${n} ago` : n),
diff --git a/src/types/auto-components.d.ts b/src/types/auto-components.d.ts
index 990f55cc..cbf6d856 100644
--- a/src/types/auto-components.d.ts
+++ b/src/types/auto-components.d.ts
@@ -21,6 +21,7 @@ declare module '@vue/runtime-core' {
     DictTag: typeof import('./../components/DictTag/src/DictTag.vue')['default']
     Echart: typeof import('./../components/Echart/src/Echart.vue')['default']
     Editor: typeof import('./../components/Editor/src/Editor.vue')['default']
+    ElAvatar: typeof import('element-plus/es')['ElAvatar']
     ElBadge: typeof import('element-plus/es')['ElBadge']
     ElButton: typeof import('element-plus/es')['ElButton']
     ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
@@ -49,6 +50,7 @@ declare module '@vue/runtime-core' {
     ElForm: typeof import('element-plus/es')['ElForm']
     ElFormItem: typeof import('element-plus/es')['ElFormItem']
     ElIcon: typeof import('element-plus/es')['ElIcon']
+    ElImage: typeof import('element-plus/es')['ElImage']
     ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
     ElInput: typeof import('element-plus/es')['ElInput']
     ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
@@ -63,13 +65,15 @@ declare module '@vue/runtime-core' {
     ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
     ElSelect: typeof import('element-plus/es')['ElSelect']
     ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
+    ElSpace: typeof import('element-plus/es')['ElSpace']
     ElSwitch: typeof import('element-plus/es')['ElSwitch']
     ElTable: typeof import('element-plus/es')['ElTable']
     ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
-    ElTableV2: typeof import('element-plus/es')['ElTableV2']
     ElTabPane: typeof import('element-plus/es')['ElTabPane']
     ElTabs: typeof import('element-plus/es')['ElTabs']
     ElTag: typeof import('element-plus/es')['ElTag']
+    ElTimeline: typeof import('element-plus/es')['ElTimeline']
+    ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
     ElTooltip: typeof import('element-plus/es')['ElTooltip']
     ElTransfer: typeof import('element-plus/es')['ElTransfer']
     ElTree: typeof import('element-plus/es')['ElTree']
diff --git a/src/types/auto-imports.d.ts b/src/types/auto-imports.d.ts
index 714d6be2..bd749b8e 100644
--- a/src/types/auto-imports.d.ts
+++ b/src/types/auto-imports.d.ts
@@ -1,4 +1,7 @@
-// Generated by 'unplugin-auto-import'
+/* eslint-disable */
+/* prettier-ignore */
+// @ts-nocheck
+// Generated by unplugin-auto-import
 export {}
 declare global {
   const DICT_TYPE: typeof import('@/utils/dict')['DICT_TYPE']
diff --git a/src/views/bpm/model/modelEditor.vue b/src/views/bpm/model/modelEditor.vue
index b5a41344..43836976 100644
--- a/src/views/bpm/model/modelEditor.vue
+++ b/src/views/bpm/model/modelEditor.vue
@@ -108,7 +108,7 @@ const initModeler = (item) => {
 
 const save = (bpmnXml) => {
   const data: ModelVO = {
-    ...model.value,
+    ...(model.value ?? ({} as ModelVO)),
     bpmnXml: bpmnXml // bpmnXml 只是初始化流程图,后续修改无法通过它获得
   }
   console.log(data, 'data')
diff --git a/src/views/bpm/processInstance/detail.vue b/src/views/bpm/processInstance/detail.vue
index 7bd89deb..59d993e4 100644
--- a/src/views/bpm/processInstance/detail.vue
+++ b/src/views/bpm/processInstance/detail.vue
@@ -406,7 +406,7 @@ const getDetail = () => {
         nextTick().then(() => {
           fApi.value?.btn.show(false)
           fApi.value?.resetBtn.show(false)
-          fApi.value?.disabled(true)
+          fApi.value?.btn.disabled(true)
         })
       }
 
diff --git a/src/views/system/notify/my/index.vue b/src/views/system/notify/my/index.vue
index 620a7430..9f3e9b10 100644
--- a/src/views/system/notify/my/index.vue
+++ b/src/views/system/notify/my/index.vue
@@ -35,7 +35,7 @@ const [registerTable, { reload, getCheckboxRecords }] = useXTable({
 })
 
 const handleUpdateList = async () => {
-  const list = getCheckboxRecords()
+  const list = getCheckboxRecords() as any as any[]
   if (list.length === 0) {
     return
   }

From 805f260dff86e8798de3303ccb29ea8f0fdb03a5 Mon Sep 17 00:00:00 2001
From: Siyu Kong <boil@vip.qq.com>
Date: Tue, 21 Feb 2023 18:41:29 +0800
Subject: [PATCH 07/60] =?UTF-8?q?chore:=20build=20script=E5=A2=9E=E5=8A=A0?=
 =?UTF-8?q?=E5=86=85=E5=AD=98=E9=85=8D=E7=BD=AE(=E8=A7=A3=E5=86=B3nodejs?=
 =?UTF-8?q?=E9=BB=98=E8=AE=A4=E9=85=8D=E7=BD=AE=E5=86=85=E5=AD=98=E7=9B=8A?=
 =?UTF-8?q?=E5=A4=84)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 package.json | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package.json b/package.json
index 5b55353a..b98dbfc6 100644
--- a/package.json
+++ b/package.json
@@ -8,9 +8,9 @@
     "i": "pnpm install",
     "dev": "vite --mode base",
     "ts:check": "vue-tsc --noEmit",
-    "build:pro": "vite build --mode pro",
-    "build:dev": "vite build --mode dev",
-    "build:test": "npm run ts:check && vite build --mode test",
+    "build:pro": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode pro",
+    "build:dev": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode dev",
+    "build:test": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode test",
     "serve:pro": "vite preview --mode pro",
     "serve:dev": "vite preview --mode dev",
     "serve:test": "vite preview --mode test",

From 7ec3550157849041718d2eb5125d1b97376f893f Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Mon, 27 Feb 2023 16:14:02 +0800
Subject: [PATCH 08/60] =?UTF-8?q?1=E3=80=81=E4=BB=BB=E5=8A=A1=E7=AE=A1?=
 =?UTF-8?q?=E7=90=86=20=E6=96=B0=E5=BB=BA=E6=B5=81=E7=A8=8B=E6=94=B9?=
 =?UTF-8?q?=E4=B8=BA=E5=8F=91=E8=B5=B7=E6=B5=81=E7=A8=8B=EF=BC=88vue2?=
 =?UTF-8?q?=E5=90=8C=E6=AD=A5=EF=BC=89=202=E3=80=81=E6=B5=81=E7=A8=8B?=
 =?UTF-8?q?=E5=88=86=E7=B1=BB=20=E5=AD=97=E5=85=B8=E5=9B=9E=E6=98=BEbug=20?=
 =?UTF-8?q?3=E3=80=81=E7=94=A8=E6=88=B7=E5=88=86=E7=BB=84=20=E7=BC=96?=
 =?UTF-8?q?=E8=BE=91=E6=97=B6=E7=82=B9=E5=87=BB=E7=A9=BA=E7=99=BD=E5=A4=84?=
 =?UTF-8?q?=E5=BC=B9=E6=A1=86=E6=B6=88=E5=A4=B1=EF=BC=88vue2=E5=90=8C?=
 =?UTF-8?q?=E6=AD=A5=EF=BC=8C=E4=B8=8D=E6=B6=88=E5=A4=B1=EF=BC=89=204?=
 =?UTF-8?q?=E3=80=81=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83=E4=BF=AE=E6=94=B9?=
 =?UTF-8?q?=E9=82=AE=E7=AE=B1=E8=A7=84=E8=8C=83=E6=A0=A1=E9=AA=8C=205?=
 =?UTF-8?q?=E3=80=81=E4=BB=BB=E5=8A=A1=E5=88=86=E9=85=8D=E8=A7=84=E5=88=99?=
 =?UTF-8?q?=20=E6=8C=87=E5=AE=9A=E8=A7=92=E8=89=B2=E5=AD=97=E6=AE=B5?=
 =?UTF-8?q?=E4=B8=8D=E4=B8=80=E5=AE=9A=E4=B8=BANumber?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/bpm/group/index.vue           | 2 +-
 src/views/bpm/model/index.vue           | 1 +
 src/views/bpm/processInstance/index.vue | 2 +-
 src/views/bpm/taskAssignRule/index.vue  | 4 ++--
 src/views/system/user/user.data.ts      | 9 ++++++++-
 5 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/views/bpm/group/index.vue b/src/views/bpm/group/index.vue
index 7aa2ca4a..b0f08516 100644
--- a/src/views/bpm/group/index.vue
+++ b/src/views/bpm/group/index.vue
@@ -43,7 +43,7 @@
     </XTable>
   </ContentWrap>
 
-  <XModal v-model="dialogVisible" :title="dialogTitle">
+  <XModal v-model="dialogVisible" :title="dialogTitle" :mask-closable="false">
     <!-- 对话框(添加 / 修改) -->
     <Form
       v-if="['create', 'update'].includes(actionType)"
diff --git a/src/views/bpm/model/index.vue b/src/views/bpm/model/index.vue
index 5fafb960..39f05d88 100644
--- a/src/views/bpm/model/index.vue
+++ b/src/views/bpm/model/index.vue
@@ -429,6 +429,7 @@ const handleUpdate = async (rowId: number) => {
   await setDialogTile('edit')
   // 设置数据
   saveForm.value = await ModelApi.getModelApi(rowId)
+  saveForm.value.category = Number(saveForm.value.category)
 }
 
 // 提交按钮
diff --git a/src/views/bpm/processInstance/index.vue b/src/views/bpm/processInstance/index.vue
index d2f81753..6cba9eaf 100644
--- a/src/views/bpm/processInstance/index.vue
+++ b/src/views/bpm/processInstance/index.vue
@@ -7,7 +7,7 @@
         <XButton
           type="primary"
           preIcon="ep:zoom-in"
-          title="新建流程"
+          title="发起流程"
           v-hasPermi="['bpm:process-instance:query']"
           @click="handleCreate"
         />
diff --git a/src/views/bpm/taskAssignRule/index.vue b/src/views/bpm/taskAssignRule/index.vue
index f93e4591..e6e4b88f 100644
--- a/src/views/bpm/taskAssignRule/index.vue
+++ b/src/views/bpm/taskAssignRule/index.vue
@@ -45,9 +45,9 @@
           <el-select v-model="formData.roleIds" multiple clearable style="width: 100%">
             <el-option
               v-for="item in roleOptions"
-              :key="parseInt(item.id)"
+              :key="item.id"
               :label="item.name"
-              :value="parseInt(item.id)"
+              :value="item.id"
             />
           </el-select>
         </el-form-item>
diff --git a/src/views/system/user/user.data.ts b/src/views/system/user/user.data.ts
index c5b617c3..12c777fc 100644
--- a/src/views/system/user/user.data.ts
+++ b/src/views/system/user/user.data.ts
@@ -5,7 +5,14 @@ const { t } = useI18n()
 export const rules = reactive({
   username: [required],
   nickname: [required],
-  email: [required],
+  email: [
+    { required: true, message: t('profile.rules.mail'), trigger: 'blur' },
+    {
+      type: 'email',
+      message: t('profile.rules.truemail'),
+      trigger: ['blur', 'change']
+    }
+  ],
   status: [required],
   mobile: [
     {

From 666a523fee2e57b120fd391e87f201cd53a6966e Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Mon, 27 Feb 2023 17:39:14 +0800
Subject: [PATCH 09/60] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=AE=9A=E4=B9=89?=
 =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E6=B5=81=E7=A8=8B=E5=9B=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/bpm/definition/index.vue | 26 +++++++++++++++++++++++---
 1 file changed, 23 insertions(+), 3 deletions(-)

diff --git a/src/views/bpm/definition/index.vue b/src/views/bpm/definition/index.vue
index 19a7cf06..742be5eb 100644
--- a/src/views/bpm/definition/index.vue
+++ b/src/views/bpm/definition/index.vue
@@ -43,6 +43,16 @@
         v-if="formDetailVisible"
       />
     </XModal>
+    <!-- 流程模型图的预览 -->
+    <XModal title="流程图" v-model="showBpmnOpen" width="80%" height="90%">
+      <my-process-viewer
+        key="designer"
+        v-model="bpmnXML"
+        :value="bpmnXML"
+        v-bind="bpmnControlForm"
+        :prefix="bpmnControlForm.prefix"
+      />
+    </XModal>
   </ContentWrap>
 </template>
 <script setup lang="ts">
@@ -51,8 +61,12 @@ import * as DefinitionApi from '@/api/bpm/definition'
 // import * as ModelApi from '@/api/bpm/model'
 import { allSchemas } from './definition.data'
 import { setConfAndFields2 } from '@/utils/formCreate'
-
-const message = useMessage() // 消息弹窗
+const bpmnXML = ref(null)
+const showBpmnOpen = ref(false)
+const bpmnControlForm = ref({
+  prefix: 'flowable'
+})
+// const message = useMessage() // 消息弹窗
 const router = useRouter() // 路由
 const { query } = useRoute() // 查询参数
 
@@ -89,7 +103,13 @@ const handleFormDetail = async (row) => {
 const handleBpmnDetail = (row) => {
   // TODO 芋艿:流程组件开发中
   console.log(row)
-  message.success('流程组件开发中,预计 2 月底完成')
+  DefinitionApi.getProcessDefinitionBpmnXMLApi(row).then((response) => {
+    console.log(response, 'response')
+    bpmnXML.value = response.bpmnXml
+    // 弹窗打开
+    showBpmnOpen.value = true
+  })
+  // message.success('流程组件开发中,预计 2 月底完成')
 }
 
 // 点击任务分配按钮

From f90c9a0c775e587a56ba9604152697ee3f07a286 Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Tue, 28 Feb 2023 09:59:44 +0800
Subject: [PATCH 10/60] =?UTF-8?q?1.=E6=B5=81=E7=A8=8B=E5=9B=BE=E6=98=BE?=
 =?UTF-8?q?=E7=A4=BA=E9=97=AE=E9=A2=98=202.=E4=BB=BB=E5=8A=A1=E5=88=86?=
 =?UTF-8?q?=E9=85=8D=E8=A7=84=E5=88=99=E5=88=97=E8=A1=A8=E6=98=BE=E7=A4=BA?=
 =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=88=E4=BC=A0=E9=80=92id=E9=94=99?=
 =?UTF-8?q?=E8=AF=AF=EF=BC=89=203.=E6=B5=81=E7=A8=8B=E5=88=86=E7=B1=BB?=
 =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=94=99=E8=AF=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/bpm/definition/definition.data.ts |  9 +++++++--
 src/views/bpm/definition/index.vue          | 10 ++++++++--
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/src/views/bpm/definition/definition.data.ts b/src/views/bpm/definition/definition.data.ts
index 919cbd9c..5e940ab0 100644
--- a/src/views/bpm/definition/definition.data.ts
+++ b/src/views/bpm/definition/definition.data.ts
@@ -26,8 +26,13 @@ const crudSchemas = reactive<VxeCrudSchema>({
     {
       title: '流程分类',
       field: 'category',
-      dictType: DICT_TYPE.BPM_MODEL_CATEGORY,
-      dictClass: 'number'
+      // dictType: DICT_TYPE.BPM_MODEL_CATEGORY,
+      // dictClass: 'string'
+      table: {
+        slots: {
+          default: 'category_default'
+        }
+      }
     },
     {
       title: '表单信息',
diff --git a/src/views/bpm/definition/index.vue b/src/views/bpm/definition/index.vue
index 742be5eb..f2ef640c 100644
--- a/src/views/bpm/definition/index.vue
+++ b/src/views/bpm/definition/index.vue
@@ -6,6 +6,10 @@
       <template #name_default="{ row }">
         <XTextButton :title="row.name" @click="handleBpmnDetail(row.id)" />
       </template>
+      <!-- 流程分类 -->
+      <template #category_default="{ row }">
+        <DictTag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="Number(row?.category)" />
+      </template>
       <!-- 表单信息 -->
       <template #formId_default="{ row }">
         <XTextButton
@@ -61,6 +65,8 @@ import * as DefinitionApi from '@/api/bpm/definition'
 // import * as ModelApi from '@/api/bpm/model'
 import { allSchemas } from './definition.data'
 import { setConfAndFields2 } from '@/utils/formCreate'
+import { DICT_TYPE } from '@/utils/dict'
+
 const bpmnXML = ref(null)
 const showBpmnOpen = ref(false)
 const bpmnControlForm = ref({
@@ -105,7 +111,7 @@ const handleBpmnDetail = (row) => {
   console.log(row)
   DefinitionApi.getProcessDefinitionBpmnXMLApi(row).then((response) => {
     console.log(response, 'response')
-    bpmnXML.value = response.bpmnXml
+    bpmnXML.value = response
     // 弹窗打开
     showBpmnOpen.value = true
   })
@@ -117,7 +123,7 @@ const handleAssignRule = (row) => {
   router.push({
     name: 'BpmTaskAssignRuleList',
     query: {
-      modelId: row.id
+      processDefinitionId: row.id
     }
   })
 }

From d8e540ee54ab0a5cf4ec3b616c8ec643f26f2963 Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Tue, 28 Feb 2023 10:50:23 +0800
Subject: [PATCH 11/60] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E6=A8=A1=E5=9E=8B=20?=
 =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=88=86=E7=B1=BB=E6=98=BE=E7=A4=BA=E9=97=AE?=
 =?UTF-8?q?=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/bpm/model/index.vue     | 4 ++++
 src/views/bpm/model/model.data.ts | 7 ++++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/views/bpm/model/index.vue b/src/views/bpm/model/index.vue
index 39f05d88..62d0edcc 100644
--- a/src/views/bpm/model/index.vue
+++ b/src/views/bpm/model/index.vue
@@ -24,6 +24,10 @@
       <template #name_default="{ row }">
         <XTextButton :title="row.name" @click="handleBpmnDetail(row.id)" />
       </template>
+      <!-- 流程分类 -->
+      <template #category_default="{ row }">
+        <DictTag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="Number(row?.category)" />
+      </template>
       <!-- 表单信息 -->
       <template #formId_default="{ row }">
         <XTextButton
diff --git a/src/views/bpm/model/model.data.ts b/src/views/bpm/model/model.data.ts
index ebbc5b87..89e886cc 100644
--- a/src/views/bpm/model/model.data.ts
+++ b/src/views/bpm/model/model.data.ts
@@ -44,7 +44,12 @@ const crudSchemas = reactive<VxeCrudSchema>({
       field: 'category',
       dictType: DICT_TYPE.BPM_MODEL_CATEGORY,
       dictClass: 'number',
-      isSearch: true
+      isSearch: true,
+      table: {
+        slots: {
+          default: 'category_default'
+        }
+      }
     },
     {
       title: '表单信息',

From d5c2494150baeff75683589603e4fd1a5bb05eb0 Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Tue, 28 Feb 2023 11:26:06 +0800
Subject: [PATCH 12/60] =?UTF-8?q?XModal=E6=B7=BB=E5=8A=A0=E6=98=AF?=
 =?UTF-8?q?=E5=90=A6=E5=85=81=E8=AE=B8=E7=82=B9=E5=87=BB=E9=81=AE=E7=BD=A9?=
 =?UTF-8?q?=E5=B1=82=EF=BC=8C=E6=8C=89Esc=E9=94=AE=E5=85=B3=E9=97=AD?=
 =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=AD=97=E6=AE=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/components/XModal/src/XModal.vue | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/components/XModal/src/XModal.vue b/src/components/XModal/src/XModal.vue
index c397edd9..95b9f4be 100644
--- a/src/components/XModal/src/XModal.vue
+++ b/src/components/XModal/src/XModal.vue
@@ -12,7 +12,9 @@ const props = defineProps({
   height: propTypes.string,
   minWidth: propTypes.string.def('460'),
   minHeight: propTypes.string.def('320'),
-  showFooter: propTypes.bool.def(true)
+  showFooter: propTypes.bool.def(true),
+  maskClosable: propTypes.bool.def(false),
+  escClosable: propTypes.bool.def(false)
 })
 
 const getBindValue = computed(() => {

From 0e894163575e5e06f4f8950a72fb57d6e55deeed Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Tue, 28 Feb 2023 14:14:00 +0800
Subject: [PATCH 13/60] =?UTF-8?q?bpmn=E6=B5=81=E7=A8=8B=E5=9B=BE=E6=B5=8F?=
 =?UTF-8?q?=E8=A7=88=E6=95=B0=E6=8D=AE=E5=BC=B9=E7=AA=97=E6=A0=B7=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../package/designer/ProcessDesigner.vue             | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue b/src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue
index 1f471f3e..cb8c0d26 100644
--- a/src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue
+++ b/src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue
@@ -190,12 +190,12 @@
     </div>
     <XModal title="预览" width="80%" height="90%" v-model="previewModelVisible" destroy-on-close>
       <!-- append-to-body -->
-      <pre v-highlight>
-            <code class="hljs">
-            <!-- 高亮代码块 -->
-            {{ previewResult }}
-            </code>
-        </pre>
+      <div v-highlight>
+        <code class="hljs">
+          <!-- 高亮代码块 -->
+          {{ previewResult }}
+        </code>
+      </div>
       <!-- <pre>
         <code class="hljs" v-html="highlightedCode(previewType, previewResult)"></code>
       </pre> -->

From 26442c0abedce817e4f6f2598b21ee3bcf5222a1 Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Tue, 28 Feb 2023 17:54:37 +0800
Subject: [PATCH 14/60] =?UTF-8?q?1=E3=80=81=E6=B5=81=E7=A8=8B=E6=A8=A1?=
 =?UTF-8?q?=E5=9E=8B=20=E5=AF=BC=E5=85=A5=E6=B5=81=E7=A8=8B=20=E4=BF=AE?=
 =?UTF-8?q?=E6=94=B9=E6=B5=81=E7=A8=8B=20=E6=B5=81=E7=A8=8B=E5=88=86?=
 =?UTF-8?q?=E7=B1=BB=E9=BB=98=E8=AE=A4=E4=B8=BAnull=20=E6=98=BE=E7=A4=BA?=
 =?UTF-8?q?=E4=B8=BA0=20=EF=BC=88=E7=8E=B0=E9=BB=98=E8=AE=A4=E4=B8=BA1?=
 =?UTF-8?q?=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/bpm/model/index.vue | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/views/bpm/model/index.vue b/src/views/bpm/model/index.vue
index 62d0edcc..298b0b6e 100644
--- a/src/views/bpm/model/index.vue
+++ b/src/views/bpm/model/index.vue
@@ -433,7 +433,11 @@ const handleUpdate = async (rowId: number) => {
   await setDialogTile('edit')
   // 设置数据
   saveForm.value = await ModelApi.getModelApi(rowId)
-  saveForm.value.category = Number(saveForm.value.category)
+  if (saveForm.value.category == null) {
+    saveForm.value.category = 1
+  } else {
+    saveForm.value.category = Number(saveForm.value.category)
+  }
 }
 
 // 提交按钮

From f0af1bf97b5d8d087ca5b90daa80105fb0578bce Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Tue, 28 Feb 2023 17:55:02 +0800
Subject: [PATCH 15/60] =?UTF-8?q?=E5=90=8C=E4=B8=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/bpm/definition/definition.data.ts | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/views/bpm/definition/definition.data.ts b/src/views/bpm/definition/definition.data.ts
index 5e940ab0..14a0c319 100644
--- a/src/views/bpm/definition/definition.data.ts
+++ b/src/views/bpm/definition/definition.data.ts
@@ -17,18 +17,19 @@ const crudSchemas = reactive<VxeCrudSchema>({
       title: '定义名称',
       field: 'name',
       table: {
-        width: 120,
+        // width: 120,
         slots: {
           default: 'name_default'
         }
       }
     },
     {
-      title: '流程分类',
+      title: '定义分类',
       field: 'category',
       // dictType: DICT_TYPE.BPM_MODEL_CATEGORY,
-      // dictClass: 'string'
+      // dictClass: 'number',
       table: {
+        // width: 120,
         slots: {
           default: 'category_default'
         }
@@ -38,7 +39,7 @@ const crudSchemas = reactive<VxeCrudSchema>({
       title: '表单信息',
       field: 'formId',
       table: {
-        width: 120,
+        // width: 200,
         slots: {
           default: 'formId_default'
         }
@@ -48,7 +49,7 @@ const crudSchemas = reactive<VxeCrudSchema>({
       title: '流程版本',
       field: 'version',
       table: {
-        width: 80,
+        // width: 80,
         slots: {
           default: 'version_default'
         }
@@ -58,7 +59,7 @@ const crudSchemas = reactive<VxeCrudSchema>({
       title: '激活状态',
       field: 'suspensionState',
       table: {
-        width: 80,
+        // width: 80,
         slots: {
           default: 'suspensionState_default'
         }
@@ -68,10 +69,10 @@ const crudSchemas = reactive<VxeCrudSchema>({
       title: '部署时间',
       field: 'deploymentTime',
       isForm: false,
-      formatter: 'formatDate',
-      table: {
-        width: 180
-      }
+      formatter: 'formatDate'
+      // table: {
+      // width: 180
+      // }
     }
   ]
 })

From 2d3227c5bcbe8e48b3ee7c093dd661c5205c7cd5 Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Wed, 1 Mar 2023 14:51:26 +0800
Subject: [PATCH 16/60] =?UTF-8?q?1=E3=80=81=E5=8F=91=E8=B5=B7=E6=B5=81?=
 =?UTF-8?q?=E7=A8=8B=E9=A1=B5=E9=9D=A2=20=E6=B5=81=E7=A8=8B=E5=88=86?=
 =?UTF-8?q?=E7=B1=BB=E6=97=A0=E6=B3=95=E6=98=BE=E7=A4=BA=202=E3=80=81?=
 =?UTF-8?q?=E9=82=AE=E7=AE=B1=E6=A0=A1=E9=AA=8C=E7=BB=9F=E4=B8=80=203?=
 =?UTF-8?q?=E3=80=81=E8=A7=92=E8=89=B2=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2?=
 =?UTF-8?q?=E8=A7=92=E8=89=B2=E7=BC=96=E5=8F=B7=E6=8D=A2=E6=88=90id?=
 =?UTF-8?q?=E5=AD=97=E6=AE=B5=EF=BC=88=E4=B9=8B=E5=89=8D=E6=98=AF=E5=BA=8F?=
 =?UTF-8?q?=E5=8F=B7=EF=BC=8Cvue2=E7=89=88=E6=9C=AC=E4=B8=BAid=EF=BC=8C?=
 =?UTF-8?q?=E6=B5=8B=E8=AF=95=E8=AF=B4=E5=AE=B9=E6=98=93=E5=92=8C=E6=98=BE?=
 =?UTF-8?q?=E7=A4=BA=E9=A1=BA=E5=BA=8F=E6=90=9E=E6=B7=B7=EF=BC=89=204?=
 =?UTF-8?q?=E3=80=81bpmnjs=E6=B5=81=E8=BD=AC=E6=9D=A1=E4=BB=B6=E6=97=A0?=
 =?UTF-8?q?=E6=B3=95=E8=87=AA=E5=8A=A8=E4=BF=9D=E5=AD=98=E5=9B=9E=E6=98=BE?=
 =?UTF-8?q?=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../package/penal/flow-condition/FlowCondition.vue | 14 ++++++++------
 src/views/bpm/processInstance/create.vue           |  5 +++++
 src/views/bpm/processInstance/process.create.ts    |  7 ++++++-
 src/views/system/dept/dept.data.ts                 | 10 +++++++++-
 src/views/system/mail/account/account.data.ts      | 12 +++++++++++-
 src/views/system/role/role.data.ts                 | 13 ++++++++++---
 6 files changed, 49 insertions(+), 12 deletions(-)

diff --git a/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue b/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue
index ee4512e7..ae1d1567 100644
--- a/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue
@@ -79,7 +79,7 @@ const resetFlowCondition = () => {
   if (
     bpmnElementSourceRef.value &&
     bpmnElementSourceRef.value.default &&
-    bpmnElementSourceRef.value.default.id === this.bpmnElement.id
+    bpmnElementSourceRef.value.default.id === bpmnElement.value.id
   ) {
     // 默认
     flowConditionForm.value = { type: 'default' }
@@ -175,11 +175,13 @@ onBeforeUnmount(() => {
 watch(
   () => props.businessObject,
   (val) => {
-    if (val) {
-      nextTick(() => {
-        resetFlowCondition()
-      })
-    }
+    console.log(val, 'val')
+    nextTick(() => {
+      resetFlowCondition()
+    })
+  },
+  {
+    immediate: true
   }
 )
 </script>
diff --git a/src/views/bpm/processInstance/create.vue b/src/views/bpm/processInstance/create.vue
index c0542b22..084c085c 100644
--- a/src/views/bpm/processInstance/create.vue
+++ b/src/views/bpm/processInstance/create.vue
@@ -3,6 +3,10 @@
     <!-- 第一步,通过流程定义的列表,选择对应的流程 -->
     <div v-if="!selectProcessInstance">
       <XTable @register="registerTable">
+        <!-- 流程分类 -->
+        <template #category_default="{ row }">
+          <DictTag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="Number(row?.category)" />
+        </template>
         <template #version_default="{ row }">
           <el-tag v-if="row">v{{ row.version }}</el-tag>
         </template>
@@ -56,6 +60,7 @@ import * as DefinitionApi from '@/api/bpm/definition'
 import * as ProcessInstanceApi from '@/api/bpm/processInstance'
 import { setConfAndFields2 } from '@/utils/formCreate'
 import { ApiAttrs } from '@form-create/element-ui/types/config'
+import { DICT_TYPE } from '@/utils/dict'
 
 const router = useRouter() // 路由
 const message = useMessage() // 消息
diff --git a/src/views/bpm/processInstance/process.create.ts b/src/views/bpm/processInstance/process.create.ts
index b2282406..7516c0b4 100644
--- a/src/views/bpm/processInstance/process.create.ts
+++ b/src/views/bpm/processInstance/process.create.ts
@@ -14,7 +14,12 @@ const crudSchemas = reactive<VxeCrudSchema>({
       title: '流程分类',
       field: 'category',
       dictType: DICT_TYPE.BPM_MODEL_CATEGORY,
-      dictClass: 'number'
+      dictClass: 'number',
+      table: {
+        slots: {
+          default: 'category_default'
+        }
+      }
     },
     {
       title: '流程版本',
diff --git a/src/views/system/dept/dept.data.ts b/src/views/system/dept/dept.data.ts
index 5e3d0761..c6945841 100644
--- a/src/views/system/dept/dept.data.ts
+++ b/src/views/system/dept/dept.data.ts
@@ -6,7 +6,15 @@ const { t } = useI18n() // 国际化
 export const rules = reactive({
   name: [required],
   sort: [required],
-  email: [required],
+  // email: [required],
+  email: [
+    { required: true, message: t('profile.rules.mail'), trigger: 'blur' },
+    {
+      type: 'email',
+      message: t('profile.rules.truemail'),
+      trigger: ['blur', 'change']
+    }
+  ],
   phone: [
     {
       len: 11,
diff --git a/src/views/system/mail/account/account.data.ts b/src/views/system/mail/account/account.data.ts
index a2e29f85..bd05ce4f 100644
--- a/src/views/system/mail/account/account.data.ts
+++ b/src/views/system/mail/account/account.data.ts
@@ -1,8 +1,18 @@
 import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 
+const { t } = useI18n() // 国际化
+
 // 表单校验
 export const rules = reactive({
-  mail: [required],
+  // mail: [required],
+  mail: [
+    { required: true, message: t('profile.rules.mail'), trigger: 'blur' },
+    {
+      type: 'email',
+      message: t('profile.rules.truemail'),
+      trigger: ['blur', 'change']
+    }
+  ],
   username: [required],
   password: [required],
   host: [required],
diff --git a/src/views/system/role/role.data.ts b/src/views/system/role/role.data.ts
index fef2ec47..d55b5e21 100644
--- a/src/views/system/role/role.data.ts
+++ b/src/views/system/role/role.data.ts
@@ -9,12 +9,19 @@ export const rules = reactive({
 })
 // CrudSchema
 const crudSchemas = reactive<VxeCrudSchema>({
-  primaryKey: 'id',
-  primaryTitle: '角色编号',
-  primaryType: 'seq',
+  // primaryKey: 'id',
+  // primaryTitle: '角色编号',
+  // primaryType: 'seq',
   action: true,
   actionWidth: '400px',
   columns: [
+    {
+      title: '角色编号',
+      field: 'id',
+      table: {
+        width: 200
+      }
+    },
     {
       title: '角色名称',
       field: 'name',

From 3e2b5e1887a123dbf597503dd866e0a8654f51fa Mon Sep 17 00:00:00 2001
From: chengyangwang <1223440313@qq.com>
Date: Wed, 1 Mar 2023 17:09:03 +0800
Subject: [PATCH 17/60] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Del-tree=E7=BB=84?=
 =?UTF-8?q?=E4=BB=B6setCheckedKeys=E8=AE=BE=E7=BD=AE=E4=B8=80=E6=97=A6?=
 =?UTF-8?q?=E9=80=89=E4=B8=AD=E7=88=B6=E7=BA=A7=E5=AD=90=E7=BA=A7=E4=B9=9F?=
 =?UTF-8?q?=E8=A2=AB=E9=80=89=E4=B8=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/system/tenantPackage/index.vue | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/views/system/tenantPackage/index.vue b/src/views/system/tenantPackage/index.vue
index a665b8af..f8b81171 100644
--- a/src/views/system/tenantPackage/index.vue
+++ b/src/views/system/tenantPackage/index.vue
@@ -125,7 +125,9 @@ const handleUpdate = async (rowId: number) => {
   const res = await TenantPackageApi.getTenantPackageApi(rowId)
   unref(formRef)?.setValues(res)
   // 设置选中
-  unref(treeRef)?.setCheckedKeys(res.menuIds)
+  res.menuIds?.forEach((item: any) => {
+    unref(treeRef)?.setChecked(item, true,false);
+  })
 }
 
 // 提交按钮

From a16751f25852aadae205becb5edc0ddb9f5b3e9a Mon Sep 17 00:00:00 2001
From: bimei <18812666091@163.com>
Date: Thu, 2 Mar 2023 09:47:36 +0800
Subject: [PATCH 18/60] =?UTF-8?q?=E5=BA=95=E5=BA=A7bug=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/system/role/index.vue               | 79 +++++++++++--------
 src/views/system/tenantPackage/index.vue      | 19 ++++-
 .../tenantPackage/tenantPackage.data.ts       |  7 +-
 src/views/system/user/index.vue               | 25 +++++-
 4 files changed, 96 insertions(+), 34 deletions(-)

diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue
index 72c602c1..645546a9 100644
--- a/src/views/system/role/index.vue
+++ b/src/views/system/role/index.vue
@@ -99,37 +99,47 @@
         </el-select>
       </el-form-item>
       <!-- 分配角色的菜单权限对话框 -->
-      <el-form-item
-        label="权限范围"
-        v-if="
-          actionScopeType === 'menu' || dataScopeForm.dataScope === SystemDataScopeEnum.DEPT_CUSTOM
-        "
-      >
-        <el-card shadow="never">
-          <template #header>
-            父子联动(选中父节点,自动选择子节点):
-            <el-switch v-model="checkStrictly" inline-prompt active-text="是" inactive-text="否" />
-            全选/全不选:
-            <el-switch
-              v-model="treeNodeAll"
-              inline-prompt
-              active-text="是"
-              inactive-text="否"
-              @change="handleCheckedTreeNodeAll()"
-            />
-          </template>
-          <el-tree
-            ref="treeRef"
-            node-key="id"
-            show-checkbox
-            :default-checked-keys="defaultCheckedKeys"
-            :check-strictly="!checkStrictly"
-            :props="defaultProps"
-            :data="treeOptions"
-            empty-text="加载中,请稍后"
-          />
-        </el-card>
-      </el-form-item>
+      <el-row>
+        <el-col :span="24">
+          <el-form-item
+            label="权限范围"
+            v-if="
+              actionScopeType === 'menu' ||
+              dataScopeForm.dataScope === SystemDataScopeEnum.DEPT_CUSTOM
+            "
+            style="display: flex"
+          >
+            <el-card class="card" shadow="never">
+              <template #header>
+                父子联动(选中父节点,自动选择子节点):
+                <el-switch
+                  v-model="checkStrictly"
+                  inline-prompt
+                  active-text="是"
+                  inactive-text="否"
+                />
+                全选/全不选:
+                <el-switch
+                  v-model="treeNodeAll"
+                  inline-prompt
+                  active-text="是"
+                  inactive-text="否"
+                  @change="handleCheckedTreeNodeAll()"
+                />
+              </template>
+              <el-tree
+                ref="treeRef"
+                node-key="id"
+                show-checkbox
+                :default-checked-keys="defaultCheckedKeys"
+                :check-strictly="!checkStrictly"
+                :props="defaultProps"
+                :data="treeOptions"
+                empty-text="加载中,请稍后"
+              />
+            </el-card>
+          </el-form-item> </el-col
+      ></el-row>
     </el-form>
     <!-- 操作按钮 -->
     <template #footer>
@@ -312,3 +322,10 @@ onMounted(() => {
   init()
 })
 </script>
+<style scoped>
+.card {
+  width: 100%;
+  max-height: 400px;
+  overflow-y: scroll;
+}
+</style>
diff --git a/src/views/system/tenantPackage/index.vue b/src/views/system/tenantPackage/index.vue
index a665b8af..61831489 100644
--- a/src/views/system/tenantPackage/index.vue
+++ b/src/views/system/tenantPackage/index.vue
@@ -25,7 +25,7 @@
       ref="formRef"
     >
       <template #menuIds>
-        <el-card class="w-120">
+        <el-card>
           <template #header>
             <div class="card-header">
               全选/全不选:
@@ -91,6 +91,16 @@ const dialogTitle = ref('edit') // 弹出层标题
 const handleCheckedTreeNodeAll = () => {
   treeRef.value!.setCheckedNodes(treeNodeAll.value ? menuOptions.value : [])
 }
+
+const validateCategory = (rule: any, value: any, callback: any) => {
+  if (!treeRef.value!.getCheckedKeys().length) {
+    callback(new Error('该项为必填项'))
+  } else {
+    callback()
+  }
+}
+rules.menuIds = [{ required: true, validator: validateCategory, trigger: 'blur' }]
+
 const getTree = async () => {
   const res = await listSimpleMenusApi()
   menuOptions.value = handleTree(res)
@@ -166,3 +176,10 @@ onMounted(async () => {
 })
 // getList()
 </script>
+<style scoped>
+.el-card {
+  width: 100%;
+  max-height: 400px;
+  overflow-y: scroll;
+}
+</style>
diff --git a/src/views/system/tenantPackage/tenantPackage.data.ts b/src/views/system/tenantPackage/tenantPackage.data.ts
index e28ea842..de06c2cb 100644
--- a/src/views/system/tenantPackage/tenantPackage.data.ts
+++ b/src/views/system/tenantPackage/tenantPackage.data.ts
@@ -33,7 +33,12 @@ const crudSchemas = reactive<VxeCrudSchema>({
     {
       title: '菜单权限',
       field: 'menuIds',
-      isTable: false
+      isTable: false,
+      form: {
+        colProps: {
+          span: 24
+        }
+      }
     },
     {
       title: t('form.remark'),
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index d125112d..3305b275 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -159,7 +159,7 @@
       :data="detailData"
     >
       <template #deptId="{ row }">
-        <span>{{ row.dept?.name }}</span>
+        <el-tag>{{ dataFormater(row.deptId) }}</el-tag>
       </template>
       <template #postIds="{ row }">
         <template v-if="row.postIds !== ''">
@@ -332,6 +332,29 @@ const getPostOptions = async () => {
   const res = await listSimplePostsApi()
   postOptions.value.push(...res)
 }
+
+const dataFormater = (val) => {
+  return deptFormater(deptOptions.value, val)
+}
+//部门回显
+const deptFormater = (ary, val: any) => {
+  var o = ''
+  if (ary && val) {
+    for (const v of ary) {
+      if (v.id == val) {
+        o = v.name
+        if (o) return o
+      } else if (v.children?.length) {
+        o = deptFormater(v.children, val)
+        if (o) return o
+      }
+    }
+    return o
+  } else {
+    return val
+  }
+}
+
 // 设置标题
 const setDialogTile = async (type: string) => {
   dialogTitle.value = t('action.' + type)

From 60691df3a6df0abb948130e97dd7fbdc50e3c25d Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Thu, 2 Mar 2023 11:26:28 +0800
Subject: [PATCH 19/60] =?UTF-8?q?bpmnjs=E6=B5=81=E7=A8=8B=E5=9B=BE=20?=
 =?UTF-8?q?=E6=B5=81=E8=BD=AC=E6=9D=A1=E4=BB=B6=E5=88=87=E6=8D=A2=E9=97=AE?=
 =?UTF-8?q?=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../package/penal/flow-condition/FlowCondition.vue             | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue b/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue
index ae1d1567..833a14c2 100644
--- a/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue
@@ -79,7 +79,8 @@ const resetFlowCondition = () => {
   if (
     bpmnElementSourceRef.value &&
     bpmnElementSourceRef.value.default &&
-    bpmnElementSourceRef.value.default.id === bpmnElement.value.id
+    bpmnElementSourceRef.value.default.id === bpmnElement.value.id &&
+    flowConditionForm.value.type == 'default'
   ) {
     // 默认
     flowConditionForm.value = { type: 'default' }

From d461fed75c51c60d0bf3ea08c82f08cf44ee31f1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=BC=A0=E8=BF=AA=E7=94=9F?= <2046353594@qq.com>
Date: Thu, 2 Mar 2023 15:15:47 +0800
Subject: [PATCH 20/60] =?UTF-8?q?chore:=20=E8=A7=84=E8=8C=83=E4=B8=8D?=
 =?UTF-8?q?=E7=AC=A6=E5=90=88eslint=E6=A0=A1=E9=AA=8C=E8=A7=84=E5=88=99?=
 =?UTF-8?q?=E7=9A=84=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 types/global.d.ts | 1 -
 1 file changed, 1 deletion(-)

diff --git a/types/global.d.ts b/types/global.d.ts
index 3179c200..6f583ba7 100644
--- a/types/global.d.ts
+++ b/types/global.d.ts
@@ -1,4 +1,3 @@
-import type { CSSProperties } from 'vue'
 declare global {
   declare interface Fn<T = any> {
     (...arg: T[]): T

From 3156606c9027e043ee28c8cc4f13b44fe6b44f68 Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Thu, 2 Mar 2023 15:34:14 +0800
Subject: [PATCH 21/60] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86?=
 =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7=E9=9C=80=E8=A6=81=E5=A1=AB?=
 =?UTF-8?q?=E5=86=99=E6=89=8B=E6=9C=BA=E5=8F=B7=EF=BC=88=E5=B7=A5=E4=BD=9C?=
 =?UTF-8?q?=E6=B5=81=E5=88=9B=E5=BB=BA=E9=9C=80=E8=A6=81=EF=BC=8C=E4=B8=8D?=
 =?UTF-8?q?=E7=84=B6=E4=BC=9A=E6=8A=A5=E9=94=99=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/system/user/index.vue | 39 +++++++++++++++++++--------------
 1 file changed, 23 insertions(+), 16 deletions(-)

diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index d125112d..bccab852 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -386,24 +386,31 @@ const handleDetail = async (rowId: number) => {
 
 // 提交按钮
 const submitForm = async () => {
-  loading.value = true
   // 提交请求
-  try {
-    const data = unref(formRef)?.formModel as UserApi.UserVO
-    if (actionType.value === 'create') {
-      await UserApi.createUserApi(data)
-      message.success(t('common.createSuccess'))
-    } else {
-      await UserApi.updateUserApi(data)
-      message.success(t('common.updateSuccess'))
+  const elForm = unref(formRef)?.getElFormRef()
+  if (!elForm) return
+  elForm.validate(async (valid) => {
+    if (valid) {
+      try {
+        const data = unref(formRef)?.formModel as UserApi.UserVO
+        if (actionType.value === 'create') {
+          await UserApi.createUserApi(data)
+          loading.value = true
+          message.success(t('common.createSuccess'))
+        } else {
+          await UserApi.updateUserApi(data)
+          loading.value = true
+          message.success(t('common.updateSuccess'))
+        }
+        dialogVisible.value = false
+      } finally {
+        // unref(formRef)?.setSchema(allSchemas.formSchema)
+        // 刷新列表
+        await reload()
+        loading.value = false
+      }
     }
-    dialogVisible.value = false
-  } finally {
-    // unref(formRef)?.setSchema(allSchemas.formSchema)
-    // 刷新列表
-    await reload()
-    loading.value = false
-  }
+  })
 }
 // 改变用户状态操作
 const handleStatusChange = async (row: UserApi.UserVO) => {

From 9e66efdc508d6ba582fdff01a51967e8d827c07c Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Thu, 2 Mar 2023 15:57:40 +0800
Subject: [PATCH 22/60] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86?=
 =?UTF-8?q?=E6=A0=A1=E9=AA=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/system/user/user.data.ts | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/views/system/user/user.data.ts b/src/views/system/user/user.data.ts
index 12c777fc..7648faf2 100644
--- a/src/views/system/user/user.data.ts
+++ b/src/views/system/user/user.data.ts
@@ -5,6 +5,7 @@ const { t } = useI18n()
 export const rules = reactive({
   username: [required],
   nickname: [required],
+  password: [required],
   email: [
     { required: true, message: t('profile.rules.mail'), trigger: 'blur' },
     {

From 31505ae35bb6b55347f5832d8333d8e9466b102c Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Thu, 2 Mar 2023 16:08:21 +0800
Subject: [PATCH 23/60] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86?=
 =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=AF=BC=E8=87=B4=E5=B7=A5=E4=BD=9C=E6=B5=81?=
 =?UTF-8?q?=E6=8A=A5=E9=94=99bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/system/user/user.data.ts | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/views/system/user/user.data.ts b/src/views/system/user/user.data.ts
index 7648faf2..eb20b999 100644
--- a/src/views/system/user/user.data.ts
+++ b/src/views/system/user/user.data.ts
@@ -6,6 +6,7 @@ export const rules = reactive({
   username: [required],
   nickname: [required],
   password: [required],
+  deptId: [required],
   email: [
     { required: true, message: t('profile.rules.mail'), trigger: 'blur' },
     {

From c5cb59f4ba25e67928d0e31af4ac287fa4c93fc6 Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Thu, 2 Mar 2023 16:46:39 +0800
Subject: [PATCH 24/60] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=88=86=E9=85=8D?=
 =?UTF-8?q?=E8=A7=84=E5=88=99=E9=A1=B5=E9=9D=A2vxe=E6=93=8D=E4=BD=9C?=
 =?UTF-8?q?=E6=A0=8F=E6=98=BE=E7=A4=BA=E9=9A=90=E8=97=8Fbug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/bpm/taskAssignRule/index.vue              | 12 ++++++++++--
 src/views/bpm/taskAssignRule/taskAssignRule.data.ts |  8 ++++++++
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/src/views/bpm/taskAssignRule/index.vue b/src/views/bpm/taskAssignRule/index.vue
index e6e4b88f..012e6f68 100644
--- a/src/views/bpm/taskAssignRule/index.vue
+++ b/src/views/bpm/taskAssignRule/index.vue
@@ -1,7 +1,7 @@
 <template>
   <ContentWrap>
     <!-- 列表 -->
-    <XTable @register="registerTable">
+    <XTable @register="registerTable" ref="xGrid">
       <template #options_default="{ row }">
         <span :key="option" v-for="option in row.options">
           <el-tag>
@@ -145,11 +145,12 @@ import { listSimpleUserGroupsApi } from '@/api/bpm/userGroup'
 import { listSimpleDeptApi } from '@/api/system/dept'
 import { DICT_TYPE, getDictOptions } from '@/utils/dict'
 import { handleTree, defaultProps } from '@/utils/tree'
-import { allSchemas, rules } from './taskAssignRule.data'
+import { allSchemas, rules, idShowActionClick } from './taskAssignRule.data'
 
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const { query } = useRoute()
+const xGrid = ref()
 
 // ========== 列表相关 ==========
 
@@ -165,6 +166,8 @@ const taskAssignScriptDictDatas = getDictOptions(DICT_TYPE.BPM_TASK_ASSIGN_SCRIP
 const modelId = query.modelId
 // 流程定义的编号。如果 processDefinitionId 非空,则用于流程定义的查看,不支持配置
 const processDefinitionId = query.processDefinitionId
+let isShow = idShowActionClick(modelId)
+
 // 查询参数
 const queryParams = reactive({
   modelId: modelId,
@@ -346,5 +349,10 @@ onMounted(() => {
   listSimpleUserGroupsApi().then((data) => {
     userGroupOptions.value.push(...data)
   })
+  if (!isShow) {
+    setTimeout(() => {
+      xGrid.value.Ref.hideColumn('actionbtns')
+    }, 100)
+  }
 })
 </script>
diff --git a/src/views/bpm/taskAssignRule/taskAssignRule.data.ts b/src/views/bpm/taskAssignRule/taskAssignRule.data.ts
index 1ced3425..cad74325 100644
--- a/src/views/bpm/taskAssignRule/taskAssignRule.data.ts
+++ b/src/views/bpm/taskAssignRule/taskAssignRule.data.ts
@@ -43,4 +43,12 @@ const crudSchemas = reactive<VxeCrudSchema>({
     }
   ]
 })
+
+export const idShowActionClick = (modelId?: any) => {
+  if (modelId) {
+    return true
+  } else {
+    return false
+  }
+}
 export const { allSchemas } = useVxeCrudSchemas(crudSchemas)

From 0b9022c8a5b26d368c44b0fe920fd51aa4f57dee Mon Sep 17 00:00:00 2001
From: chengyangwang <1223440313@qq.com>
Date: Fri, 3 Mar 2023 12:52:50 +0800
Subject: [PATCH 25/60] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Del-tree=E7=BB=84?=
 =?UTF-8?q?=E4=BB=B6setCheckedKeys=E8=AE=BE=E7=BD=AE=E4=B8=80=E6=97=A6?=
 =?UTF-8?q?=E9=80=89=E4=B8=AD=E7=88=B6=E7=BA=A7=E5=AD=90=E7=BA=A7=E4=B9=9F?=
 =?UTF-8?q?=E8=A2=AB=E9=80=89=E4=B8=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/system/role/index.vue | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue
index 72c602c1..b2f12af3 100644
--- a/src/views/system/role/index.vue
+++ b/src/views/system/role/index.vue
@@ -122,7 +122,6 @@
             ref="treeRef"
             node-key="id"
             show-checkbox
-            :default-checked-keys="defaultCheckedKeys"
             :check-strictly="!checkStrictly"
             :props="defaultProps"
             :data="treeOptions"
@@ -245,7 +244,6 @@ const dialogScopeVisible = ref(false)
 const dialogScopeTitle = ref('数据权限')
 const actionScopeType = ref('')
 const dataScopeDictDatas = ref()
-const defaultCheckedKeys = ref()
 // 选项
 const checkStrictly = ref(true)
 const treeNodeAll = ref(false)
@@ -258,13 +256,17 @@ const handleScope = async (type: string, row: RoleApi.RoleVO) => {
   dataScopeForm.id = row.id
   dataScopeForm.name = row.name
   dataScopeForm.code = row.code
+
+  actionScopeType.value = type
+  dialogScopeVisible.value = true
   if (type === 'menu') {
     const menuRes = await listSimpleMenusApi()
     treeOptions.value = handleTree(menuRes)
     const role = await PermissionApi.listRoleMenusApi(row.id)
     if (role) {
-      // treeRef.value!.setCheckedKeys(role as unknown as Array<number>)
-      defaultCheckedKeys.value = role
+      role?.forEach((item: any) => {
+        unref(treeRef)?.setChecked(item, true,false);
+      })
     }
   } else if (type === 'data') {
     const deptRes = await listSimpleDeptApi()
@@ -272,12 +274,12 @@ const handleScope = async (type: string, row: RoleApi.RoleVO) => {
     const role = await RoleApi.getRoleApi(row.id)
     dataScopeForm.dataScope = role.dataScope
     if (role.dataScopeDeptIds) {
-      // treeRef.value!.setCheckedKeys(role.dataScopeDeptIds as unknown as Array<number>, false)
-      defaultCheckedKeys.value = role.dataScopeDeptIds
+      role.dataScopeDeptIds?.forEach((item: any) => {
+        unref(treeRef)?.setChecked(item, true,false);
+      })
     }
   }
-  actionScopeType.value = type
-  dialogScopeVisible.value = true
+
 }
 // 保存权限
 const submitScope = async () => {

From 7c325ee96d49b68188762d4405aaf551e5e819b8 Mon Sep 17 00:00:00 2001
From: bimei <18812666091@163.com>
Date: Fri, 3 Mar 2023 13:13:42 +0800
Subject: [PATCH 26/60] =?UTF-8?q?fix:=20=E4=B8=BB=E9=A2=98=E5=88=87?=
 =?UTF-8?q?=E6=8D=A2XTable=E9=A2=9C=E8=89=B2=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/components/XTable/src/XTable.vue | 30 ++++++++++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)

diff --git a/src/components/XTable/src/XTable.vue b/src/components/XTable/src/XTable.vue
index 34f91ce0..3b88266f 100644
--- a/src/components/XTable/src/XTable.vue
+++ b/src/components/XTable/src/XTable.vue
@@ -12,6 +12,7 @@ import { useAppStore } from '@/store/modules/app'
 import { useDesign } from '@/hooks/web/useDesign'
 import { XTableProps } from './type'
 import { isBoolean, isFunction } from '@/utils/is'
+import styleCss from './style/dark.scss'
 
 import download from '@/utils/download'
 
@@ -26,14 +27,39 @@ const prefixCls = getPrefixCls('x-vxe-table')
 const attrs = useAttrs()
 const emit = defineEmits(['register'])
 
+const removeStyles = () => {
+  var filename = 'cssTheme'
+  //移除引入的文件名
+  var targetelement = 'style'
+  var targetattr = 'id'
+  var allsuspects = document.getElementsByTagName(targetelement)
+  for (var i = allsuspects.length; i >= 0; i--) {
+    if (
+      allsuspects[i] &&
+      allsuspects[i].getAttribute(targetattr) != null &&
+      allsuspects[i].getAttribute(targetattr)?.indexOf(filename) != -1
+    ) {
+      console.log(allsuspects[i], 'node')
+      allsuspects[i].parentNode?.removeChild(allsuspects[i])
+    }
+  }
+}
+const reImport = () => {
+  var head = document.getElementsByTagName('head')[0]
+  var style = document.createElement('style')
+  style.innerText = styleCss
+  style.id = 'cssTheme'
+  head.appendChild(style)
+}
+
 watch(
   () => appStore.getIsDark,
   () => {
     if (appStore.getIsDark == true) {
-      import('./style/dark.scss')
+      reImport()
     }
     if (appStore.getIsDark == false) {
-      import('./style/light.scss')
+      removeStyles()
     }
   },
   { immediate: true }

From f63bccd1fe08ec29810443acfe3eca20c56157da Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Fri, 3 Mar 2023 15:27:52 +0800
Subject: [PATCH 27/60] =?UTF-8?q?=E6=9F=A5=E7=9C=8BOA=E8=AF=B7=E5=81=87?=
 =?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=B5=81=E7=A8=8B=E8=AF=A6=E6=83=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/bpm/oa/leave/detail.vue | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/views/bpm/oa/leave/detail.vue b/src/views/bpm/oa/leave/detail.vue
index bb30d075..25ac9981 100644
--- a/src/views/bpm/oa/leave/detail.vue
+++ b/src/views/bpm/oa/leave/detail.vue
@@ -2,6 +2,7 @@
   <ContentWrap>
     <!-- 详情 -->
     <Descriptions :schema="allSchemas.detailSchema" :data="formData" />
+    <el-button @click="routerReturn" type="primary">返回</el-button>
   </ContentWrap>
 </template>
 
@@ -9,7 +10,8 @@
 // 业务相关的 import
 import * as LeaveApi from '@/api/bpm/leave'
 import { allSchemas } from '@/views/bpm/oa/leave/leave.data'
-
+import { useRouter } from 'vue-router'
+const router = useRouter()
 const { query } = useRoute() // 查询参数
 const message = useMessage() // 消息弹窗
 
@@ -22,6 +24,10 @@ const formData = ref({
   reason: undefined
 })
 
+const routerReturn = () => {
+  router.back()
+}
+
 onMounted(() => {
   id.value = query.id
   if (!id.value) {

From 7a5a08d9a2dfbafc58c7b373974db2abcbf41d69 Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Sat, 4 Mar 2023 10:37:07 +0800
Subject: [PATCH 28/60] =?UTF-8?q?=E7=A7=9F=E6=88=B7=E5=88=97=E8=A1=A8?=
 =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=A0=A1=E9=AA=8C=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/system/tenant/tenant.data.ts | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/views/system/tenant/tenant.data.ts b/src/views/system/tenant/tenant.data.ts
index 7e81138c..110bfbb3 100644
--- a/src/views/system/tenant/tenant.data.ts
+++ b/src/views/system/tenant/tenant.data.ts
@@ -27,6 +27,24 @@ export const rules = reactive({
   contactMobile: [required],
   accountCount: [required],
   expireTime: [required],
+  username: [
+    required,
+    {
+      min: 4,
+      max: 30,
+      trigger: 'blur',
+      message: '用户名称长度为 4-30 个字符'
+    }
+  ],
+  password: [
+    required,
+    {
+      min: 4,
+      max: 16,
+      trigger: 'blur',
+      message: '密码长度为 4-16 位'
+    }
+  ],
   domain: [required],
   status: [required]
 })

From cea7b41ae83353de1baf6bd91b4130432caaf290 Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Sat, 4 Mar 2023 13:19:49 +0800
Subject: [PATCH 29/60] =?UTF-8?q?=E7=A7=9F=E6=88=B7=E5=92=8C=E8=A7=92?=
 =?UTF-8?q?=E8=89=B2=E7=AE=A1=E7=90=86=E7=9A=84=E8=8F=9C=E5=8D=95=E6=9D=83?=
 =?UTF-8?q?=E9=99=90=E4=B8=8D=E8=83=BD=E6=BB=9A=E5=8A=A8=20=E7=A7=9F?=
 =?UTF-8?q?=E6=88=B7=E6=96=B0=E5=A2=9E=E8=8F=9C=E5=8D=95=E6=9D=83=E9=99=90?=
 =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E4=B8=8D=E9=80=9A=E8=BF=87=20=E8=A7=92?=
 =?UTF-8?q?=E8=89=B2=E7=AE=A1=E7=90=86=E8=AF=A6=E6=83=85=E9=A1=B5=E4=B8=8D?=
 =?UTF-8?q?=E5=B1=95=E7=A4=BA=E5=AF=B9=E5=BA=94=E7=9A=84=E9=83=A8=E9=97=A8?=
 =?UTF-8?q?=20XTable=E4=B8=AD=E4=B8=BB=E9=A2=98=E9=A2=9C=E8=89=B2=E4=B8=8D?=
 =?UTF-8?q?=E8=B7=9F=E9=9A=8F=E9=A1=B9=E7=9B=AE=E4=B8=BB=E4=BD=93=E4=B8=80?=
 =?UTF-8?q?=E8=B5=B7=E5=88=87=E6=8D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/components/XTable/src/XTable.vue          | 31 ++++++++++++++++---
 .../tenantPackage/tenantPackage.data.ts       |  7 ++++-
 src/views/system/user/index.vue               | 24 +++++++++++++-
 3 files changed, 56 insertions(+), 6 deletions(-)

diff --git a/src/components/XTable/src/XTable.vue b/src/components/XTable/src/XTable.vue
index 34f91ce0..e5c503ec 100644
--- a/src/components/XTable/src/XTable.vue
+++ b/src/components/XTable/src/XTable.vue
@@ -12,7 +12,7 @@ import { useAppStore } from '@/store/modules/app'
 import { useDesign } from '@/hooks/web/useDesign'
 import { XTableProps } from './type'
 import { isBoolean, isFunction } from '@/utils/is'
-
+import styleCss from './style/dark.scss'
 import download from '@/utils/download'
 
 const { t } = useI18n()
@@ -25,15 +25,38 @@ const prefixCls = getPrefixCls('x-vxe-table')
 
 const attrs = useAttrs()
 const emit = defineEmits(['register'])
-
+const removeStyles = () => {
+  var filename = 'cssTheme'
+  //移除引入的文件名
+  var targetelement = 'style'
+  var targetattr = 'id'
+  var allsuspects = document.getElementsByTagName(targetelement)
+  for (var i = allsuspects.length; i >= 0; i--) {
+    if (
+      allsuspects[i] &&
+      allsuspects[i].getAttribute(targetattr) != null &&
+      allsuspects[i].getAttribute(targetattr)?.indexOf(filename) != -1
+    ) {
+      console.log(allsuspects[i], 'node')
+      allsuspects[i].parentNode?.removeChild(allsuspects[i])
+    }
+  }
+}
+const reImport = () => {
+  var head = document.getElementsByTagName('head')[0]
+  var style = document.createElement('style')
+  style.innerText = styleCss
+  style.id = 'cssTheme'
+  head.appendChild(style)
+}
 watch(
   () => appStore.getIsDark,
   () => {
     if (appStore.getIsDark == true) {
-      import('./style/dark.scss')
+      reImport()
     }
     if (appStore.getIsDark == false) {
-      import('./style/light.scss')
+      removeStyles()
     }
   },
   { immediate: true }
diff --git a/src/views/system/tenantPackage/tenantPackage.data.ts b/src/views/system/tenantPackage/tenantPackage.data.ts
index e28ea842..de06c2cb 100644
--- a/src/views/system/tenantPackage/tenantPackage.data.ts
+++ b/src/views/system/tenantPackage/tenantPackage.data.ts
@@ -33,7 +33,12 @@ const crudSchemas = reactive<VxeCrudSchema>({
     {
       title: '菜单权限',
       field: 'menuIds',
-      isTable: false
+      isTable: false,
+      form: {
+        colProps: {
+          span: 24
+        }
+      }
     },
     {
       title: t('form.remark'),
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index bccab852..5568ca2a 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -159,7 +159,7 @@
       :data="detailData"
     >
       <template #deptId="{ row }">
-        <span>{{ row.dept?.name }}</span>
+        <el-tag>{{ dataFormater(row.deptId) }}</el-tag>
       </template>
       <template #postIds="{ row }">
         <template v-if="row.postIds !== ''">
@@ -332,6 +332,28 @@ const getPostOptions = async () => {
   const res = await listSimplePostsApi()
   postOptions.value.push(...res)
 }
+const dataFormater = (val) => {
+  return deptFormater(deptOptions.value, val)
+}
+//部门回显
+const deptFormater = (ary, val: any) => {
+  var o = ''
+  if (ary && val) {
+    for (const v of ary) {
+      if (v.id == val) {
+        o = v.name
+        if (o) return o
+      } else if (v.children?.length) {
+        o = deptFormater(v.children, val)
+        if (o) return o
+      }
+    }
+    return o
+  } else {
+    return val
+  }
+}
+
 // 设置标题
 const setDialogTile = async (type: string) => {
   dialogTitle.value = t('action.' + type)

From 3c6554c05834c7ba12e7cc9303cc9f93ce9d02fd Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Sat, 4 Mar 2023 13:44:46 +0800
Subject: [PATCH 30/60] =?UTF-8?q?=E7=A7=9F=E6=88=B7=E5=92=8C=E8=A7=92?=
 =?UTF-8?q?=E8=89=B2=E7=AE=A1=E7=90=86=E7=9A=84=E8=8F=9C=E5=8D=95=E6=9D=83?=
 =?UTF-8?q?=E9=99=90=E4=B8=8D=E8=83=BD=E6=BB=9A=E5=8A=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/system/role/index.vue          | 98 +++++++++++++-----------
 src/views/system/tenantPackage/index.vue | 23 +++++-
 2 files changed, 76 insertions(+), 45 deletions(-)

diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue
index 72c602c1..97993f5f 100644
--- a/src/views/system/role/index.vue
+++ b/src/views/system/role/index.vue
@@ -99,37 +99,41 @@
         </el-select>
       </el-form-item>
       <!-- 分配角色的菜单权限对话框 -->
-      <el-form-item
-        label="权限范围"
-        v-if="
-          actionScopeType === 'menu' || dataScopeForm.dataScope === SystemDataScopeEnum.DEPT_CUSTOM
-        "
-      >
-        <el-card shadow="never">
-          <template #header>
-            父子联动(选中父节点,自动选择子节点):
-            <el-switch v-model="checkStrictly" inline-prompt active-text="是" inactive-text="否" />
-            全选/全不选:
-            <el-switch
-              v-model="treeNodeAll"
-              inline-prompt
-              active-text="是"
-              inactive-text="否"
-              @change="handleCheckedTreeNodeAll()"
-            />
-          </template>
-          <el-tree
-            ref="treeRef"
-            node-key="id"
-            show-checkbox
-            :default-checked-keys="defaultCheckedKeys"
-            :check-strictly="!checkStrictly"
-            :props="defaultProps"
-            :data="treeOptions"
-            empty-text="加载中,请稍后"
-          />
-        </el-card>
-      </el-form-item>
+      <el-row>
+        <el-col :span="24">
+          <el-form-item
+            label="权限范围"
+            v-if="
+              actionScopeType === 'menu' ||
+              dataScopeForm.dataScope === SystemDataScopeEnum.DEPT_CUSTOM
+            "
+            style="display: flex"
+          >
+            <el-card class="card" shadow="never">
+              <template #header>
+                <!--父子联动(选中父节点,自动选择子节点):-->
+                <!--<el-switch v-model="checkStrictly" inline-prompt active-text="是" inactive-text="否" />-->
+                <!--全选/全不选:-->
+                <!--<el-switch-->
+                <!--  v-model="treeNodeAll"-->
+                <!--  inline-prompt-->
+                <!--  active-text="是"-->
+                <!--  inactive-text="否"-->
+                <!--  @change="handleCheckedTreeNodeAll()"-->
+                <!--/>-->
+              </template>
+              <el-tree
+                ref="treeRef"
+                node-key="id"
+                show-checkbox
+                :check-strictly="!checkStrictly"
+                :props="defaultProps"
+                :data="treeOptions"
+                empty-text="加载中,请稍后"
+              />
+            </el-card>
+          </el-form-item> </el-col
+      ></el-row>
     </el-form>
     <!-- 操作按钮 -->
     <template #footer>
@@ -245,26 +249,28 @@ const dialogScopeVisible = ref(false)
 const dialogScopeTitle = ref('数据权限')
 const actionScopeType = ref('')
 const dataScopeDictDatas = ref()
-const defaultCheckedKeys = ref()
 // 选项
-const checkStrictly = ref(true)
-const treeNodeAll = ref(false)
+const checkStrictly = ref(false)
+// const treeNodeAll = ref(false)
 // 全选/全不选
-const handleCheckedTreeNodeAll = () => {
-  treeRef.value!.setCheckedNodes(treeNodeAll.value ? treeOptions.value : [])
-}
+// const handleCheckedTreeNodeAll = () => {
+//   treeRef.value!.setCheckedNodes(treeNodeAll.value ? treeOptions.value : [])
+// }
 // 权限操作
 const handleScope = async (type: string, row: RoleApi.RoleVO) => {
   dataScopeForm.id = row.id
   dataScopeForm.name = row.name
   dataScopeForm.code = row.code
+  actionScopeType.value = type
+  dialogScopeVisible.value = true
   if (type === 'menu') {
     const menuRes = await listSimpleMenusApi()
     treeOptions.value = handleTree(menuRes)
     const role = await PermissionApi.listRoleMenusApi(row.id)
     if (role) {
-      // treeRef.value!.setCheckedKeys(role as unknown as Array<number>)
-      defaultCheckedKeys.value = role
+      role?.forEach((item: any) => {
+        unref(treeRef)?.setChecked(item, true, false)
+      })
     }
   } else if (type === 'data') {
     const deptRes = await listSimpleDeptApi()
@@ -272,12 +278,11 @@ const handleScope = async (type: string, row: RoleApi.RoleVO) => {
     const role = await RoleApi.getRoleApi(row.id)
     dataScopeForm.dataScope = role.dataScope
     if (role.dataScopeDeptIds) {
-      // treeRef.value!.setCheckedKeys(role.dataScopeDeptIds as unknown as Array<number>, false)
-      defaultCheckedKeys.value = role.dataScopeDeptIds
+      role.dataScopeDeptIds?.forEach((item: any) => {
+        unref(treeRef)?.setChecked(item, true, false)
+      })
     }
   }
-  actionScopeType.value = type
-  dialogScopeVisible.value = true
 }
 // 保存权限
 const submitScope = async () => {
@@ -312,3 +317,10 @@ onMounted(() => {
   init()
 })
 </script>
+<style scoped>
+.card {
+  width: 100%;
+  max-height: 400px;
+  overflow-y: scroll;
+}
+</style>
diff --git a/src/views/system/tenantPackage/index.vue b/src/views/system/tenantPackage/index.vue
index a665b8af..9222365b 100644
--- a/src/views/system/tenantPackage/index.vue
+++ b/src/views/system/tenantPackage/index.vue
@@ -25,7 +25,7 @@
       ref="formRef"
     >
       <template #menuIds>
-        <el-card class="w-120">
+        <el-card>
           <template #header>
             <div class="card-header">
               全选/全不选:
@@ -91,6 +91,16 @@ const dialogTitle = ref('edit') // 弹出层标题
 const handleCheckedTreeNodeAll = () => {
   treeRef.value!.setCheckedNodes(treeNodeAll.value ? menuOptions.value : [])
 }
+
+const validateCategory = (rule: any, value: any, callback: any) => {
+  if (!treeRef.value!.getCheckedKeys().length) {
+    callback(new Error('该项为必填项'))
+  } else {
+    callback()
+  }
+}
+rules.menuIds = [{ required: true, validator: validateCategory, trigger: 'blur' }]
+
 const getTree = async () => {
   const res = await listSimpleMenusApi()
   menuOptions.value = handleTree(res)
@@ -125,7 +135,9 @@ const handleUpdate = async (rowId: number) => {
   const res = await TenantPackageApi.getTenantPackageApi(rowId)
   unref(formRef)?.setValues(res)
   // 设置选中
-  unref(treeRef)?.setCheckedKeys(res.menuIds)
+  res.menuIds?.forEach((item: any) => {
+    unref(treeRef)?.setChecked(item, true, false)
+  })
 }
 
 // 提交按钮
@@ -166,3 +178,10 @@ onMounted(async () => {
 })
 // getList()
 </script>
+<style scoped>
+.el-card {
+  width: 100%;
+  max-height: 400px;
+  overflow-y: scroll;
+}
+</style>

From 8e575f359f5fdd6a96f5a989315eeeb2d9fd9425 Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Sat, 4 Mar 2023 16:00:59 +0800
Subject: [PATCH 31/60] =?UTF-8?q?=E7=94=9F=E6=88=90json=E5=92=8Coptions?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/bpm/form/formEditor.vue | 46 +++++++++++++++++++++++++++++--
 1 file changed, 44 insertions(+), 2 deletions(-)

diff --git a/src/views/bpm/form/formEditor.vue b/src/views/bpm/form/formEditor.vue
index 52b3709d..1070739e 100644
--- a/src/views/bpm/form/formEditor.vue
+++ b/src/views/bpm/form/formEditor.vue
@@ -3,9 +3,21 @@
     <!-- 表单设计器 -->
     <fc-designer ref="designer" height="780px">
       <template #handle>
+        <XButton type="primary" title="生成JSON" @click="showJson" />
+        <XButton type="primary" title="生成Options" @click="showOption" />
         <XButton type="primary" :title="t('action.save')" @click="handleSave" />
       </template>
     </fc-designer>
+    <Dialog :title="dialogTitle" v-model="dialogVisible1" maxHeight="600">
+      <div ref="editor" v-if="dialogVisible1">
+        <XTextButton style="float: right" :title="t('common.copy')" @click="copy(formValue)" />
+        <el-scrollbar height="580">
+          <pre>
+            {{ formValue }}
+          </pre>
+        </el-scrollbar>
+      </div>
+    </Dialog>
     <!-- 表单保存的弹窗 -->
     <XModal v-model="dialogVisible" title="保存表单">
       <el-form ref="formRef" :model="formValues" :rules="formRules" label-width="80px">
@@ -48,13 +60,18 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { CommonStatusEnum } from '@/utils/constants'
 import * as FormApi from '@/api/bpm/form'
 import { encodeConf, encodeFields, setConfAndFields } from '@/utils/formCreate'
+import { useClipboard } from '@vueuse/core'
+
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息
 const { query } = useRoute() // 路由
 
 const designer = ref() // 表单设计器
-
+const type = ref(-1)
+const formValue = ref('')
+const dialogTitle = ref('')
 const dialogVisible = ref(false) // 弹窗是否展示
+const dialogVisible1 = ref(false) // 弹窗是否展示
 const dialogLoading = ref(false) // 弹窗的加载中
 const formRef = ref<FormInstance>()
 const formRules = reactive({
@@ -98,7 +115,32 @@ const submitForm = async () => {
     dialogLoading.value = false
   }
 }
-
+const showJson = () => {
+  openModel('生成JSON')
+  type.value = 0
+  formValue.value = designer.value.getRule()
+}
+const showOption = () => {
+  openModel('生成Options')
+  type.value = 1
+  formValue.value = designer.value.getOption()
+}
+const openModel = (title: string) => {
+  dialogVisible1.value = true
+  dialogTitle.value = title
+}
+/** 复制 **/
+const copy = async (text: string) => {
+  const { copy, copied, isSupported } = useClipboard({ source: text })
+  if (!isSupported) {
+    message.error(t('common.copyError'))
+  } else {
+    await copy()
+    if (unref(copied)) {
+      message.success(t('common.copySuccess'))
+    }
+  }
+}
 // ========== 初始化 ==========
 onMounted(() => {
   // 场景一:新增表单

From 853dab7ffbd932e0eb2276f2ca780c55b8e636ae Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Sat, 4 Mar 2023 16:40:47 +0800
Subject: [PATCH 32/60] =?UTF-8?q?=E6=90=9C=E7=B4=A2=E6=97=A5=E6=9C=9F?=
 =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=B8=8D=E5=85=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/bpm/group/group.data.ts    | 1 +
 src/views/bpm/oa/leave/leave.data.ts | 1 +
 src/views/bpm/task/todo/todo.data.ts | 1 +
 3 files changed, 3 insertions(+)

diff --git a/src/views/bpm/group/group.data.ts b/src/views/bpm/group/group.data.ts
index 9d30f3b2..613a7290 100644
--- a/src/views/bpm/group/group.data.ts
+++ b/src/views/bpm/group/group.data.ts
@@ -16,6 +16,7 @@ const crudSchemas = reactive<VxeCrudSchema>({
   primaryType: 'id',
   primaryTitle: '编号',
   action: true,
+  searchSpan: 8,
   columns: [
     {
       title: '组名',
diff --git a/src/views/bpm/oa/leave/leave.data.ts b/src/views/bpm/oa/leave/leave.data.ts
index da113baf..5b6f2c52 100644
--- a/src/views/bpm/oa/leave/leave.data.ts
+++ b/src/views/bpm/oa/leave/leave.data.ts
@@ -16,6 +16,7 @@ const crudSchemas = reactive<VxeCrudSchema>({
   primaryTitle: '申请编号',
   action: true,
   actionWidth: '260',
+  searchSpan: 8,
   columns: [
     {
       title: t('common.status'),
diff --git a/src/views/bpm/task/todo/todo.data.ts b/src/views/bpm/task/todo/todo.data.ts
index 85c58ce9..419a80fe 100644
--- a/src/views/bpm/task/todo/todo.data.ts
+++ b/src/views/bpm/task/todo/todo.data.ts
@@ -7,6 +7,7 @@ const crudSchemas = reactive<VxeCrudSchema>({
   primaryKey: 'id',
   primaryType: null,
   action: true,
+  searchSpan: 8,
   columns: [
     {
       title: '任务编号',

From aa6c50b7d98f06ca5b464c7b9d060c28abaf1822 Mon Sep 17 00:00:00 2001
From: YunaiV <zhijiantianya@gmail.com>
Date: Sun, 5 Mar 2023 02:32:24 +0800
Subject: [PATCH 33/60] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20static=20=E6=BC=94?=
 =?UTF-8?q?=E7=A4=BA=E7=8E=AF=E5=A2=83=E7=9A=84=E6=89=93=E5=8C=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .env.static  | 31 +++++++++++++++++++++++++++++++
 package.json |  1 +
 2 files changed, 32 insertions(+)
 create mode 100644 .env.static

diff --git a/.env.static b/.env.static
new file mode 100644
index 00000000..034a7f4d
--- /dev/null
+++ b/.env.static
@@ -0,0 +1,31 @@
+# 开发环境
+NODE_ENV=production
+
+VITE_DEV=false
+
+# 请求路径
+VITE_BASE_URL='http://localhost:48080'
+
+# 上传路径
+VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload'
+
+# 接口前缀
+VITE_API_BASEPATH=
+
+# 接口地址
+VITE_API_URL=/admin-api
+
+# 是否删除debugger
+VITE_DROP_DEBUGGER=true
+
+# 是否删除console.log
+VITE_DROP_CONSOLE=true
+
+# 是否sourcemap
+VITE_SOURCEMAP=false
+
+# 打包路径
+VITE_BASE_PATH=/admin-ui-vue3/
+
+# 输出路径
+VITE_OUT_DIR=dist-dev
diff --git a/package.json b/package.json
index b98dbfc6..b6959d50 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
     "build:pro": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode pro",
     "build:dev": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode dev",
     "build:test": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode test",
+    "build:static": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode static",
     "serve:pro": "vite preview --mode pro",
     "serve:dev": "vite preview --mode dev",
     "serve:test": "vite preview --mode test",

From 73de987443fe69eb5a5bcb5d5cdbb67b1153b289 Mon Sep 17 00:00:00 2001
From: YunaiV <zhijiantianya@gmail.com>
Date: Sun, 5 Mar 2023 12:13:07 +0800
Subject: [PATCH 34/60] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20front=20=E7=8E=AF?=
 =?UTF-8?q?=E5=A2=83=E9=85=8D=E7=BD=AE=EF=BC=8C=E7=94=A8=E4=BA=8E=E5=89=8D?=
 =?UTF-8?q?=E7=AB=AF=E5=90=8C=E5=AD=A6=E7=9B=B4=E6=8E=A5=E5=90=AF=E5=8A=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .env.front   | 19 +++++++++++++++++++
 package.json |  1 +
 2 files changed, 20 insertions(+)
 create mode 100644 .env.front

diff --git a/.env.front b/.env.front
new file mode 100644
index 00000000..2641417d
--- /dev/null
+++ b/.env.front
@@ -0,0 +1,19 @@
+# 本地开发环境
+NODE_ENV=development
+
+VITE_DEV=true
+
+# 请求路径
+VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn'
+
+# 上传路径
+VITE_UPLOAD_URL='http://api-dashboard.yudao.iocoder.cn/admin-api/infra/file/upload'
+
+# 接口前缀
+VITE_API_BASEPATH=/dev-api
+
+# 接口地址
+VITE_API_URL=/admin-api
+
+# 打包路径
+VITE_BASE_PATH=/
diff --git a/package.json b/package.json
index b6959d50..ab8683a5 100644
--- a/package.json
+++ b/package.json
@@ -7,6 +7,7 @@
   "scripts": {
     "i": "pnpm install",
     "dev": "vite --mode base",
+    "front": "vite --mode front",
     "ts:check": "vue-tsc --noEmit",
     "build:pro": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode pro",
     "build:dev": "node --max_old_space_size=8000 ./node_modules/vite/bin/vite.js build --mode dev",

From 000b0059c66849d377fcc6593c6ec2741805189d Mon Sep 17 00:00:00 2001
From: "answer.huang" <answer.huang@nio.com>
Date: Sun, 5 Mar 2023 23:00:43 +0800
Subject: [PATCH 35/60] =?UTF-8?q?feat:=20=E6=94=B9=E7=94=A8=20https,?=
 =?UTF-8?q?=E5=8A=A0=E5=BF=AB=E9=A6=96=E6=AC=A1=E6=89=93=E5=BC=80=E9=A1=B5?=
 =?UTF-8?q?=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 build/vite/index.ts         |  8 +++++++-
 package.json                |  5 ++++-
 src/types/auto-imports.d.ts |  6 +++++-
 vite.config.ts              | 18 +++++++++---------
 4 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/build/vite/index.ts b/build/vite/index.ts
index 717db992..454be623 100644
--- a/build/vite/index.ts
+++ b/build/vite/index.ts
@@ -14,6 +14,9 @@ import viteCompression from 'vite-plugin-compression'
 import vueSetupExtend from 'vite-plugin-vue-setup-extend'
 import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'
 import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
+import mkcert from 'vite-plugin-mkcert'
+// import PkgConfig from 'vite-plugin-package-config'
+// import OptimizationPersist from 'vite-plugin-optimize-persist'
 export function createVitePlugins(VITE_APP_TITLE: string) {
   const root = process.cwd()
   // 路径查找
@@ -93,6 +96,9 @@ export function createVitePlugins(VITE_APP_TITLE: string) {
     }),
     ViteEjsPlugin({
       title: VITE_APP_TITLE
-    })
+    }),
+    mkcert(),
+    // PkgConfig(),
+    // OptimizationPersist(),
   ]
 }
diff --git a/package.json b/package.json
index 3f040dd1..3d269ba3 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,7 @@
   "private": false,
   "scripts": {
     "i": "pnpm install",
-    "dev": "vite --mode base",
+    "dev": "DEBUG=vite:plugin:mkcert vite --mode base --force",
     "ts:check": "vue-tsc --noEmit",
     "build:pro": "vite build --mode pro",
     "build:dev": "vite build --mode dev",
@@ -55,6 +55,9 @@
     "qs": "^6.11.0",
     "steady-xml": "^0.1.0",
     "url": "^0.11.0",
+    "vite-plugin-mkcert": "^1.13.0",
+    "vite-plugin-optimize-persist": "^0.1.2",
+    "vite-plugin-package-config": "^0.1.1",
     "vue": "3.2.47",
     "vue-i18n": "9.2.2",
     "vue-router": "^4.1.6",
diff --git a/src/types/auto-imports.d.ts b/src/types/auto-imports.d.ts
index 68e0f7a4..714d6be2 100644
--- a/src/types/auto-imports.d.ts
+++ b/src/types/auto-imports.d.ts
@@ -40,7 +40,6 @@ declare global {
   const ref: typeof import('vue')['ref']
   const required: typeof import('@/utils/formRules')['required']
   const resolveComponent: typeof import('vue')['resolveComponent']
-  const resolveDirective: typeof import('vue')['resolveDirective']
   const shallowReactive: typeof import('vue')['shallowReactive']
   const shallowReadonly: typeof import('vue')['shallowReadonly']
   const shallowRef: typeof import('vue')['shallowRef']
@@ -65,3 +64,8 @@ declare global {
   const watchPostEffect: typeof import('vue')['watchPostEffect']
   const watchSyncEffect: typeof import('vue')['watchSyncEffect']
 }
+// for type re-export
+declare global {
+  // @ts-ignore
+  export type { Component,ComponentPublicInstance,ComputedRef,InjectionKey,PropType,Ref,VNode } from 'vue'
+}
diff --git a/vite.config.ts b/vite.config.ts
index e5572436..0ca5b697 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -26,20 +26,20 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
     // 服务端渲染
     server: {
       // 是否开启 https
-      https: false,
+      https: true,
       // 端口号
       port: env.VITE_PORT,
       host: "0.0.0.0",
       open: env.VITE_OPEN === 'true',
       // 本地跨域代理
-      proxy: {
-        ['/admin-api']: {
-          target: env.VITE_BASE_URL,
-          ws: false,
-          changeOrigin: true,
-          rewrite: (path) => path.replace(new RegExp(`^/admin-api`), ''),
-        },
-      },
+      // proxy: {
+      //   ['/admin-api']: {
+      //     target: env.VITE_BASE_URL,
+      //     ws: false,
+      //     changeOrigin: true,
+      //     rewrite: (path) => path.replace(new RegExp(`^/admin-api`), ''),
+      //   },
+      // },
     },
     // 项目使用的vite插件。 单独提取到build/vite/plugin中管理
     plugins: createVitePlugins(env.VITE_APP_TITLE),

From 0c34ce196240a0fed93cc11f0d4b65374484cf27 Mon Sep 17 00:00:00 2001
From: puhui999 <puhui999@163.com>
Date: Mon, 6 Mar 2023 11:44:33 +0800
Subject: [PATCH 36/60] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=AF=91?=
 =?UTF-8?q?=E5=99=A8=E5=85=A8=E5=B1=80=E7=B1=BB=E5=9E=8B=E6=89=BE=E4=B8=8D?=
 =?UTF-8?q?=E5=88=B0=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 types/global.d.ts | 1 +
 1 file changed, 1 insertion(+)

diff --git a/types/global.d.ts b/types/global.d.ts
index 6f583ba7..3685ffbd 100644
--- a/types/global.d.ts
+++ b/types/global.d.ts
@@ -1,3 +1,4 @@
+export {}
 declare global {
   declare interface Fn<T = any> {
     (...arg: T[]): T

From 84e802fe93d868e09ff6575b220f0dcfc7dfab11 Mon Sep 17 00:00:00 2001
From: puhui999 <puhui999@163.com>
Date: Mon, 6 Mar 2023 11:46:40 +0800
Subject: [PATCH 37/60] =?UTF-8?q?=E4=BD=BF=E7=94=A8const=20let=E6=9B=BF?=
 =?UTF-8?q?=E6=8D=A2=E6=8E=89var?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/components/XTable/src/XTable.vue | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/components/XTable/src/XTable.vue b/src/components/XTable/src/XTable.vue
index e5c503ec..4ae546db 100644
--- a/src/components/XTable/src/XTable.vue
+++ b/src/components/XTable/src/XTable.vue
@@ -26,12 +26,12 @@ const prefixCls = getPrefixCls('x-vxe-table')
 const attrs = useAttrs()
 const emit = defineEmits(['register'])
 const removeStyles = () => {
-  var filename = 'cssTheme'
+  const filename = 'cssTheme'
   //移除引入的文件名
-  var targetelement = 'style'
-  var targetattr = 'id'
-  var allsuspects = document.getElementsByTagName(targetelement)
-  for (var i = allsuspects.length; i >= 0; i--) {
+  const targetelement = 'style'
+  const targetattr = 'id'
+  const allsuspects = document.getElementsByTagName(targetelement)
+  for (let i = allsuspects.length; i >= 0; i--) {
     if (
       allsuspects[i] &&
       allsuspects[i].getAttribute(targetattr) != null &&
@@ -43,8 +43,8 @@ const removeStyles = () => {
   }
 }
 const reImport = () => {
-  var head = document.getElementsByTagName('head')[0]
-  var style = document.createElement('style')
+  const head = document.getElementsByTagName('head')[0]
+  const style = document.createElement('style')
   style.innerText = styleCss
   style.id = 'cssTheme'
   head.appendChild(style)
@@ -52,10 +52,10 @@ const reImport = () => {
 watch(
   () => appStore.getIsDark,
   () => {
-    if (appStore.getIsDark == true) {
+    if (appStore.getIsDark) {
       reImport()
     }
-    if (appStore.getIsDark == false) {
+    if (!appStore.getIsDark) {
       removeStyles()
     }
   },

From cbc21c33b1861414d0422784da2d1a5a66de80d9 Mon Sep 17 00:00:00 2001
From: puhui999 <puhui999@163.com>
Date: Mon, 6 Mar 2023 11:48:39 +0800
Subject: [PATCH 38/60] =?UTF-8?q?1=E3=80=81=E8=A7=A3=E5=86=B3=E8=87=AA?=
 =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=AD=97=E5=85=B8=E6=A0=87=E7=AD=BE=E5=80=BC?=
 =?UTF-8?q?=E4=B8=BA=E9=9B=B6=E6=97=B6=E6=A0=87=E7=AD=BE=E4=B8=8D=E6=B8=B2?=
 =?UTF-8?q?=E6=9F=93=E7=9A=84=E9=97=AE=E9=A2=98=202=E3=80=81=E6=B7=BB?=
 =?UTF-8?q?=E5=8A=A0=E6=A0=87=E7=AD=BE=E7=9A=84=E6=96=87=E5=AD=97=E9=A2=9C?=
 =?UTF-8?q?=E8=89=B2=E4=B8=BA=E7=99=BD=E8=89=B2=EF=BC=8C=E8=A7=A3=E5=86=B3?=
 =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E8=83=8C=E6=99=AF=E9=A2=9C=E8=89=B2?=
 =?UTF-8?q?=E6=97=B6=E6=A0=87=E7=AD=BE=E6=96=87=E5=AD=97=E7=9C=8B=E4=B8=8D?=
 =?UTF-8?q?=E6=B8=85=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/components/DictTag/src/DictTag.vue | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/components/DictTag/src/DictTag.vue b/src/components/DictTag/src/DictTag.vue
index f70d52bf..15b5f12a 100644
--- a/src/components/DictTag/src/DictTag.vue
+++ b/src/components/DictTag/src/DictTag.vue
@@ -33,12 +33,15 @@ export default defineComponent({
       if (!props.type) {
         return null
       }
-      if (!props.value) {
+      // 解决自定义字典标签值为零时标签不渲染的问题
+      if (!props.value && props.value !== 0) {
         return null
       }
       getDictObj(props.type, props.value.toString())
+      // 添加标签的文字颜色为白色,解决自定义背景颜色时标签文字看不清的问题
       return (
         <ElTag
+          style={dictData.value?.cssClass ? 'color: #fff' : ''}
           type={dictData.value?.colorType}
           color={
             dictData.value?.cssClass && isHexColor(dictData.value?.cssClass)

From 6b25601936839cbb64a0e77dfb802d87965bafdf Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Mon, 6 Mar 2023 13:29:27 +0800
Subject: [PATCH 39/60] =?UTF-8?q?=E6=89=8B=E6=9C=BA=E5=8F=B7=E5=BF=85?=
 =?UTF-8?q?=E5=A1=AB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/system/user/user.data.ts | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/views/system/user/user.data.ts b/src/views/system/user/user.data.ts
index eb20b999..bd93873b 100644
--- a/src/views/system/user/user.data.ts
+++ b/src/views/system/user/user.data.ts
@@ -18,6 +18,7 @@ export const rules = reactive({
   status: [required],
   mobile: [
     {
+      required: true,
       len: 11,
       trigger: 'blur',
       message: '请输入正确的手机号码'

From 269aabd6df3004f7dd9a3e431de02835e1aaef78 Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Mon, 6 Mar 2023 15:28:10 +0800
Subject: [PATCH 40/60] =?UTF-8?q?=E8=AF=A6=E6=83=85=E5=8A=A8=E6=80=81?=
 =?UTF-8?q?=E8=A1=A8=E5=8D=95=E6=8C=89=E9=92=AE=E4=B8=8D=E6=98=BE=E7=A4=BA?=
 =?UTF-8?q?=EF=BC=8C=E6=88=91=E7=9A=84=E6=B5=81=E7=A8=8B=E6=B5=81=E7=A8=8B?=
 =?UTF-8?q?=E5=88=86=E7=B1=BB=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/bpm/processInstance/detail.vue      | 6 +++---
 src/views/bpm/processInstance/index.vue       | 5 +++++
 src/views/bpm/processInstance/process.data.ts | 7 ++++++-
 3 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/views/bpm/processInstance/detail.vue b/src/views/bpm/processInstance/detail.vue
index 59d993e4..b6d52a4c 100644
--- a/src/views/bpm/processInstance/detail.vue
+++ b/src/views/bpm/processInstance/detail.vue
@@ -404,9 +404,9 @@ const getDetail = () => {
           data.formVariables
         )
         nextTick().then(() => {
-          fApi.value?.btn.show(false)
-          fApi.value?.resetBtn.show(false)
-          fApi.value?.btn.disabled(true)
+          fApi.value?.fapi?.btn.show(false)
+          fApi.value?.fapi?.resetBtn.show(false)
+          fApi.value?.fapi?.disabled(true)
         })
       }
 
diff --git a/src/views/bpm/processInstance/index.vue b/src/views/bpm/processInstance/index.vue
index 6cba9eaf..f43e53ef 100644
--- a/src/views/bpm/processInstance/index.vue
+++ b/src/views/bpm/processInstance/index.vue
@@ -12,6 +12,10 @@
           @click="handleCreate"
         />
       </template>
+      <!-- 流程分类 -->
+      <template #category_default="{ row }">
+        <DictTag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="Number(row?.category)" />
+      </template>
       <!-- 当前审批任务 -->
       <template #tasks_default="{ row }">
         <el-button v-for="task in row.tasks" :key="task.id" link>
@@ -40,6 +44,7 @@
 <script setup lang="ts">
 // 全局相关的 import
 import { ElMessageBox } from 'element-plus'
+import { DICT_TYPE } from '@/utils/dict'
 
 // 业务相关的 import
 import * as ProcessInstanceApi from '@/api/bpm/processInstance'
diff --git a/src/views/bpm/processInstance/process.data.ts b/src/views/bpm/processInstance/process.data.ts
index 883f4687..317e143d 100644
--- a/src/views/bpm/processInstance/process.data.ts
+++ b/src/views/bpm/processInstance/process.data.ts
@@ -33,7 +33,12 @@ const crudSchemas = reactive<VxeCrudSchema>({
       field: 'category',
       dictType: DICT_TYPE.BPM_MODEL_CATEGORY,
       dictClass: 'number',
-      isSearch: true
+      isSearch: true,
+      table: {
+        slots: {
+          default: 'category_default'
+        }
+      }
     },
     {
       title: '当前审批任务',

From d95de359e3e7751a9d4f7172e31b00b9f0366c42 Mon Sep 17 00:00:00 2001
From: puhui999 <puhui999@163.com>
Date: Mon, 6 Mar 2023 15:33:34 +0800
Subject: [PATCH 41/60] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=BF=90=E8=A1=8C?=
 =?UTF-8?q?=E6=97=B6=E6=8A=A5Variable=20'id'=20is=20already=20declared=20i?=
 =?UTF-8?q?n=20the=20upper=20scope=20=20vue/no-template-shadow?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../package/penal/task/task-components/ReceiveTask.vue    | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue
index 63db1c75..ef2ba0b9 100644
--- a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue
@@ -11,10 +11,10 @@
       >
         <el-select v-model="bindMessageId" @change="updateTaskMessage">
           <el-option
-            v-for="id in Object.keys(messageMap)"
-            :value="id"
-            :label="messageMap[id]"
-            :key="id"
+            v-for="key in Object.keys(messageMap)"
+            :value="key"
+            :label="messageMap[key]"
+            :key="key"
           />
         </el-select>
         <XButton

From 01837ad50265999af349d83ece34274f78e80245 Mon Sep 17 00:00:00 2001
From: puhui999 <puhui999@163.com>
Date: Mon, 6 Mar 2023 15:34:38 +0800
Subject: [PATCH 42/60] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=AF=BC=E5=85=A5css?=
 =?UTF-8?q?=E6=8A=A5=E8=AD=A6=E5=91=8A=E7=9A=84=E9=97=AE=E9=A2=98=20?=
 =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=96=B9=E6=B3=95=E6=9D=A5=E6=BA=90=20https:?=
 =?UTF-8?q?//github.com/vitejs/vite/pull/10762?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/components/XTable/src/XTable.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/components/XTable/src/XTable.vue b/src/components/XTable/src/XTable.vue
index 4ae546db..451d3d30 100644
--- a/src/components/XTable/src/XTable.vue
+++ b/src/components/XTable/src/XTable.vue
@@ -12,7 +12,7 @@ import { useAppStore } from '@/store/modules/app'
 import { useDesign } from '@/hooks/web/useDesign'
 import { XTableProps } from './type'
 import { isBoolean, isFunction } from '@/utils/is'
-import styleCss from './style/dark.scss'
+import styleCss from './style/dark.scss?inline'
 import download from '@/utils/download'
 
 const { t } = useI18n()

From cc7fb7e43f78a0488a477f4f60b18ba47e5a1bf5 Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Mon, 6 Mar 2023 15:57:06 +0800
Subject: [PATCH 43/60] =?UTF-8?q?loading=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/system/user/index.vue | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 5568ca2a..670eed55 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -416,12 +416,12 @@ const submitForm = async () => {
       try {
         const data = unref(formRef)?.formModel as UserApi.UserVO
         if (actionType.value === 'create') {
-          await UserApi.createUserApi(data)
           loading.value = true
+          await UserApi.createUserApi(data)
           message.success(t('common.createSuccess'))
         } else {
-          await UserApi.updateUserApi(data)
           loading.value = true
+          await UserApi.updateUserApi(data)
           message.success(t('common.updateSuccess'))
         }
         dialogVisible.value = false

From 68e7b76775b71a1233f4347eb83c6e3b3a931987 Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Mon, 6 Mar 2023 19:30:06 +0800
Subject: [PATCH 44/60] =?UTF-8?q?=E6=B3=A8=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/system/user/index.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 670eed55..13591b34 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -408,12 +408,12 @@ const handleDetail = async (rowId: number) => {
 
 // 提交按钮
 const submitForm = async () => {
-  // 提交请求
   const elForm = unref(formRef)?.getElFormRef()
   if (!elForm) return
   elForm.validate(async (valid) => {
     if (valid) {
       try {
+        // 提交请求
         const data = unref(formRef)?.formModel as UserApi.UserVO
         if (actionType.value === 'create') {
           loading.value = true

From 28f659f5bcfc62b4716c4d8143627cb4dc62d88c Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Mon, 6 Mar 2023 19:42:47 +0800
Subject: [PATCH 45/60] =?UTF-8?q?=E6=B3=A8=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/system/user/index.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 13591b34..2f9ba9b0 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -412,8 +412,8 @@ const submitForm = async () => {
   if (!elForm) return
   elForm.validate(async (valid) => {
     if (valid) {
+      // 提交请求
       try {
-        // 提交请求
         const data = unref(formRef)?.formModel as UserApi.UserVO
         if (actionType.value === 'create') {
           loading.value = true

From c5d05f1d457e5fff7ee728aee700b6e4bb2ec989 Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Mon, 6 Mar 2023 20:53:19 +0800
Subject: [PATCH 46/60] =?UTF-8?q?id=E8=AD=A6=E5=91=8A=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../package/penal/task/task-components/ReceiveTask.vue    | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue
index 63db1c75..2ec10c63 100644
--- a/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue
@@ -11,10 +11,10 @@
       >
         <el-select v-model="bindMessageId" @change="updateTaskMessage">
           <el-option
-            v-for="id in Object.keys(messageMap)"
-            :value="id"
-            :label="messageMap[id]"
-            :key="id"
+            v-for="item in Object.keys(messageMap)"
+            :value="item"
+            :label="messageMap[item]"
+            :key="item"
           />
         </el-select>
         <XButton

From 71219a2f93e54ad07f40c0fa614bea94ea922941 Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Mon, 6 Mar 2023 22:58:05 +0800
Subject: [PATCH 47/60] =?UTF-8?q?xTable=E6=8A=A5=E9=94=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/components/XTable/src/XTable.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/components/XTable/src/XTable.vue b/src/components/XTable/src/XTable.vue
index e5c503ec..d1048582 100644
--- a/src/components/XTable/src/XTable.vue
+++ b/src/components/XTable/src/XTable.vue
@@ -12,7 +12,7 @@ import { useAppStore } from '@/store/modules/app'
 import { useDesign } from '@/hooks/web/useDesign'
 import { XTableProps } from './type'
 import { isBoolean, isFunction } from '@/utils/is'
-import styleCss from './style/dark.scss'
+import styleCss from './style/dark.scss?inline'
 import download from '@/utils/download'
 
 const { t } = useI18n()

From 4ea513790416c9c5bb6efd5596312eb8ec5a533c Mon Sep 17 00:00:00 2001
From: xingyuv <xingyu4j@vip.qq.com>
Date: Tue, 7 Mar 2023 09:33:53 +0800
Subject: [PATCH 48/60] chore: update deps

---
 package.json | 52 ++++++++++++++++++++++++++--------------------------
 1 file changed, 26 insertions(+), 26 deletions(-)

diff --git a/package.json b/package.json
index ab8683a5..d0f62967 100644
--- a/package.json
+++ b/package.json
@@ -29,12 +29,12 @@
     "@form-create/designer": "^3.1.0",
     "@form-create/element-ui": "^3.1.17",
     "@iconify/iconify": "^3.1.0",
-    "@vueuse/core": "^9.12.0",
+    "@vueuse/core": "^9.13.0",
     "@wangeditor/editor": "^5.1.23",
     "@wangeditor/editor-for-vue": "^5.1.10",
     "@zxcvbn-ts/core": "^2.2.1",
     "animate.css": "^4.1.1",
-    "axios": "^1.3.3",
+    "axios": "^1.3.4",
     "bpmn-js-token-simulation": "^0.10.0",
     "camunda-bpmn-moddle": "^7.0.1",
     "cropperjs": "^1.5.13",
@@ -43,18 +43,18 @@
     "diagram-js": "^11.6.0",
     "echarts": "^5.4.1",
     "echarts-wordcloud": "^2.1.0",
-    "element-plus": "2.2.30",
-    "fast-xml-parser": "^4.1.2",
+    "element-plus": "2.2.34",
+    "fast-xml-parser": "^4.1.3",
     "highlight.js": "^11.7.0",
     "intro.js": "^6.0.0",
-    "jsencrypt": "^3.3.1",
+    "jsencrypt": "^3.3.2",
     "lodash-es": "^4.17.21",
     "min-dash": "^4.0.0",
     "mitt": "^3.0.0",
     "nprogress": "^0.2.0",
-    "pinia": "^2.0.30",
+    "pinia": "^2.0.33",
     "qrcode": "^1.5.1",
-    "qs": "^6.11.0",
+    "qs": "^6.11.1",
     "steady-xml": "^0.1.0",
     "url": "^0.11.0",
     "vue": "3.2.47",
@@ -68,19 +68,19 @@
     "xml-js": "^1.6.11"
   },
   "devDependencies": {
-    "@commitlint/cli": "^17.4.3",
-    "@commitlint/config-conventional": "^17.4.3",
-    "@iconify/json": "^2.2.21",
+    "@commitlint/cli": "^17.4.4",
+    "@commitlint/config-conventional": "^17.4.4",
+    "@iconify/json": "^2.2.31",
     "@intlify/unplugin-vue-i18n": "^0.8.2",
     "@purge-icons/generated": "^0.9.0",
-    "@types/intro.js": "^5.1.0",
+    "@types/intro.js": "^5.1.1",
     "@types/lodash-es": "^4.17.6",
-    "@types/node": "^18.13.0",
+    "@types/node": "^18.14.6",
     "@types/nprogress": "^0.2.0",
     "@types/qrcode": "^1.5.0",
     "@types/qs": "^6.9.7",
-    "@typescript-eslint/eslint-plugin": "^5.52.0",
-    "@typescript-eslint/parser": "^5.52.0",
+    "@typescript-eslint/eslint-plugin": "^5.54.1",
+    "@typescript-eslint/parser": "^5.54.1",
     "@vitejs/plugin-legacy": "^4.0.1",
     "@vitejs/plugin-vue": "^4.0.0",
     "@vitejs/plugin-vue-jsx": "^3.0.0",
@@ -88,8 +88,8 @@
     "bpmn-js": "^8.9.0",
     "bpmn-js-properties-panel": "^0.46.0",
     "consola": "^2.15.3",
-    "eslint": "^8.34.0",
-    "eslint-config-prettier": "^8.6.0",
+    "eslint": "^8.35.0",
+    "eslint-config-prettier": "^8.7.0",
     "eslint-define-config": "^1.15.0",
     "eslint-plugin-prettier": "^4.2.1",
     "eslint-plugin-vue": "^9.9.0",
@@ -98,21 +98,21 @@
     "postcss-html": "^1.5.0",
     "postcss-scss": "^4.0.6",
     "prettier": "^2.8.4",
-    "rimraf": "^4.1.2",
-    "rollup": "^3.15.0",
-    "sass": "^1.58.1",
-    "stylelint": "^15.1.0",
+    "rimraf": "^4.3.1",
+    "rollup": "^3.18.0",
+    "sass": "^1.58.3",
+    "stylelint": "^15.2.0",
     "stylelint-config-html": "^1.1.0",
     "stylelint-config-prettier": "^9.0.5",
     "stylelint-config-recommended": "^10.0.1",
     "stylelint-config-standard": "^30.0.1",
     "stylelint-order": "^6.0.2",
-    "terser": "^5.16.3",
+    "terser": "^5.16.5",
     "typescript": "4.9.5",
-    "unplugin-auto-import": "^0.14.2",
-    "unplugin-element-plus": "^0.6.0",
-    "unplugin-vue-components": "^0.23.0",
-    "vite": "4.1.1",
+    "unplugin-auto-import": "^0.15.1",
+    "unplugin-element-plus": "^0.7.0",
+    "unplugin-vue-components": "^0.24.1",
+    "vite": "4.1.4",
     "vite-plugin-compression": "^0.5.1",
     "vite-plugin-ejs": "^1.6.4",
     "vite-plugin-eslint": "^1.8.1",
@@ -121,7 +121,7 @@
     "vite-plugin-svg-icons": "^2.0.1",
     "vite-plugin-vue-setup-extend": "^0.4.0",
     "vite-plugin-windicss": "^1.8.10",
-    "vue-tsc": "^1.0.24",
+    "vue-tsc": "^1.2.0",
     "windicss": "^3.5.6"
   },
   "engines": {

From 0cb57e5a51cd22f839c635aa188e472883ed03c5 Mon Sep 17 00:00:00 2001
From: xingyuv <xingyu4j@vip.qq.com>
Date: Tue, 7 Mar 2023 09:35:44 +0800
Subject: [PATCH 49/60] dcos: update deps

---
 README.md | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/README.md b/README.md
index 96bdd51b..b3e9cc78 100644
--- a/README.md
+++ b/README.md
@@ -36,16 +36,16 @@
 | 框架                                                                   | 说明               | 版本     |
 |----------------------------------------------------------------------|------------------|--------|
 | [Vue](https://staging-cn.vuejs.org/)                                 | Vue 框架           | 3.2.47 |
-| [Vite](https://cn.vitejs.dev//)                                      | 开发与构建工具          | 4.1.1  |
-| [Element Plus](https://element-plus.org/zh-CN/)                      | Element Plus     | 2.2.30 |
+| [Vite](https://cn.vitejs.dev//)                                      | 开发与构建工具          | 4.1.4  |
+| [Element Plus](https://element-plus.org/zh-CN/)                      | Element Plus     | 2.2.34 |
 | [TypeScript](https://www.typescriptlang.org/docs/)                   | JavaScript 的超集   | 4.9.5  |
-| [pinia](https://pinia.vuejs.org/)                                    | Vue 存储库 替代 vuex5 | 2.0.30 |
-| [vueuse](https://vueuse.org/)                                        | 常用工具集            | 9.12.0 |
+| [pinia](https://pinia.vuejs.org/)                                    | Vue 存储库 替代 vuex5 | 2.0.33 |
+| [vueuse](https://vueuse.org/)                                        | 常用工具集            | 9.13.0 |
 | [vxe-table](https://vxetable.cn/)                                    | Vue 最强表单         | 4.3.10  |
 | [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化              | 9.2.2  |
 | [vue-router](https://router.vuejs.org/)                              | Vue 路由           | 4.1.6  |
 | [windicss](https://cn.windicss.org/)                                 | 下一代工具优先的 CSS 框架  | 3.5.6  |
-| [iconify](https://icon-sets.iconify.design/)                         | 在线图标库            | 3.0.1  |
+| [iconify](https://icon-sets.iconify.design/)                         | 在线图标库            | 3.1.0  |
 | [wangeditor](https://www.wangeditor.com/)                            | 富文本编辑器           | 5.1.23 |
 
 ## 开发工具

From 01971a94b477047d734284205660087ea5e7b218 Mon Sep 17 00:00:00 2001
From: xingyuv <xingyu4j@vip.qq.com>
Date: Tue, 7 Mar 2023 09:37:59 +0800
Subject: [PATCH 50/60] =?UTF-8?q?style:=20=E8=B0=83=E6=95=B4=E4=B8=BB?=
 =?UTF-8?q?=E9=A2=98=E5=88=87=E6=8D=A2=E6=A0=B7=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/layout/components/ThemeSwitch/src/ThemeSwitch.vue | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue b/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue
index 1af67cf0..45243011 100644
--- a/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue
+++ b/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue
@@ -37,3 +37,8 @@ const themeChange = (val: boolean) => {
     @change="themeChange"
   />
 </template>
+<style lang="scss" scoped>
+:deep(.el-switch__core .el-switch__inner .is-icon) {
+  overflow: visible;
+}
+</style>

From 65e365253443b8b763992b4cc0fc3c20b01871c9 Mon Sep 17 00:00:00 2001
From: xingyuv <xingyu4j@vip.qq.com>
Date: Tue, 7 Mar 2023 09:38:58 +0800
Subject: [PATCH 51/60] =?UTF-8?q?style:=20=E6=8A=BD=E5=B1=89=E5=BC=B9?=
 =?UTF-8?q?=E5=87=BA=E6=A0=B7=E5=BC=8F=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/styles/index.scss | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/styles/index.scss b/src/styles/index.scss
index d53c2a6c..39c4c4da 100644
--- a/src/styles/index.scss
+++ b/src/styles/index.scss
@@ -6,6 +6,11 @@
   margin-left: 2px !important;
 }
 
+// 解决抽屉弹出时,body宽度变化的问题
+.el-popup-parent--hidden {
+  width: 100% !important;
+}
+
 /* nprogress 适配 element-plus 的主题色 */
 #nprogress {
   & .bar {

From 004d214a11aeca50f3d6ce5ef873c0284a775254 Mon Sep 17 00:00:00 2001
From: xingyuv <xingyu4j@vip.qq.com>
Date: Tue, 7 Mar 2023 09:41:01 +0800
Subject: [PATCH 52/60] fix: bugs

---
 src/components/Descriptions/src/Descriptions.vue | 8 +++++++-
 src/hooks/web/useCrudSchemas.ts                  | 2 +-
 src/layout/components/TagsView/src/TagsView.vue  | 5 ++++-
 3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/components/Descriptions/src/Descriptions.vue b/src/components/Descriptions/src/Descriptions.vue
index d6cea87a..fca37000 100644
--- a/src/components/Descriptions/src/Descriptions.vue
+++ b/src/components/Descriptions/src/Descriptions.vue
@@ -109,7 +109,13 @@ const toggleClick = () => {
             v-bind="getBindItemValue(item)"
           >
             <template #label>
-              <slot :name="`${item.field}-label`" :label="item.label">{{ item.label }}</slot>
+              <slot
+                :name="`${item.field}-label`"
+                :row="{
+                  label: item.label
+                }"
+                >{{ item.label }}</slot
+              >
             </template>
 
             <template #default>
diff --git a/src/hooks/web/useCrudSchemas.ts b/src/hooks/web/useCrudSchemas.ts
index 34e655b1..543111ca 100644
--- a/src/hooks/web/useCrudSchemas.ts
+++ b/src/hooks/web/useCrudSchemas.ts
@@ -282,7 +282,7 @@ const filterDescriptionsSchema = (crudSchema: CrudSchema[]): DescriptionsSchema[
 
 // 给options添加国际化
 const filterOptions = (options: Recordable, labelField?: string) => {
-  return options.map((v: Recordable) => {
+  return options?.map((v: Recordable) => {
     if (labelField) {
       v['labelField'] = t(v.labelField)
     } else {
diff --git a/src/layout/components/TagsView/src/TagsView.vue b/src/layout/components/TagsView/src/TagsView.vue
index b3f95594..d6e9768d 100644
--- a/src/layout/components/TagsView/src/TagsView.vue
+++ b/src/layout/components/TagsView/src/TagsView.vue
@@ -409,7 +409,10 @@ watch(
         {
           icon: 'ep:close',
           label: t('common.closeTab'),
-          disabled: !!visitedViews?.length && selectedTag?.meta.affix
+           disabled: !!visitedViews?.length && selectedTag?.meta.affix,
+          command: () => {
+            closeSelectedTag(selectedTag!)
+          }
         },
         {
           divided: true,

From d35d27d19702bd646ad276a1f2df2964691f382b Mon Sep 17 00:00:00 2001
From: xingyuv <xingyu4j@vip.qq.com>
Date: Tue, 7 Mar 2023 10:01:29 +0800
Subject: [PATCH 53/60] fix: devmode

---
 src/main.ts      | 2 +-
 src/utils/env.ts | 2 +-
 types/env.d.ts   | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/main.ts b/src/main.ts
index 4aba7d93..b3a9da16 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -55,7 +55,7 @@ import 'highlight.js/styles/github.css' //导入代码高亮样式  新版
 import Logger from '@/utils/Logger'
 
 // 本地开发模式 全局引入 element-plus 样式,加快第一次进入速度
-if (isDevMode() == true) {
+if (isDevMode()) {
   import('element-plus/dist/index.css')
 }
 
diff --git a/src/utils/env.ts b/src/utils/env.ts
index 4a45f622..ea271813 100644
--- a/src/utils/env.ts
+++ b/src/utils/env.ts
@@ -1,6 +1,6 @@
 export const isDevMode = () => {
   const dev = import.meta.env.VITE_DEV
-  if (dev && dev === true) {
+  if (dev && dev === 'true') {
     return true
   } else {
     return false
diff --git a/types/env.d.ts b/types/env.d.ts
index b34d037d..e5861e32 100644
--- a/types/env.d.ts
+++ b/types/env.d.ts
@@ -11,7 +11,7 @@ interface ImportMetaEnv {
   readonly VITE_APP_TITLE: string
   readonly VITE_PORT: number
   readonly VITE_OPEN: string
-  readonly VITE_DEV: boolean
+  readonly VITE_DEV: string
   readonly VITE_APP_CAPTCHA_ENABLE: string
   readonly VITE_APP_TENANT_ENABLE: string
   readonly VITE_BASE_URL: string

From 7fea89f5f9521fee13ba8680307df8da782f3396 Mon Sep 17 00:00:00 2001
From: xingyuv <xingyu4j@vip.qq.com>
Date: Tue, 7 Mar 2023 10:05:45 +0800
Subject: [PATCH 54/60] feat: aotu import

---
 build/vite/index.ts            | 2 +-
 src/types/auto-components.d.ts | 6 ++++--
 src/types/auto-imports.d.ts    | 2 +-
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/build/vite/index.ts b/build/vite/index.ts
index 717db992..a208c09c 100644
--- a/build/vite/index.ts
+++ b/build/vite/index.ts
@@ -27,7 +27,7 @@ export function createVitePlugins(VITE_APP_TITLE: string) {
     progress(),
     PurgeIcons(),
     vueSetupExtend(),
-    ElementPlus(),
+    ElementPlus({}),
     AutoImport({
       include: [
         /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
diff --git a/src/types/auto-components.d.ts b/src/types/auto-components.d.ts
index cbf6d856..5f1509a1 100644
--- a/src/types/auto-components.d.ts
+++ b/src/types/auto-components.d.ts
@@ -1,5 +1,7 @@
-// generated by unplugin-vue-components
-// We suggest you to commit this file into source control
+/* eslint-disable */
+/* prettier-ignore */
+// @ts-nocheck
+// Generated by unplugin-vue-components
 // Read more: https://github.com/vuejs/core/pull/3399
 import '@vue/runtime-core'
 
diff --git a/src/types/auto-imports.d.ts b/src/types/auto-imports.d.ts
index bd749b8e..7c9f5ff1 100644
--- a/src/types/auto-imports.d.ts
+++ b/src/types/auto-imports.d.ts
@@ -70,5 +70,5 @@ declare global {
 // for type re-export
 declare global {
   // @ts-ignore
-  export type { Component,ComponentPublicInstance,ComputedRef,InjectionKey,PropType,Ref,VNode } from 'vue'
+  export type { Component, ComponentPublicInstance, ComputedRef, InjectionKey, PropType, Ref, VNode } from 'vue'
 }

From 50478da759c16a395cc5529699a738c88ed27d10 Mon Sep 17 00:00:00 2001
From: xingyuv <xingyu4j@vip.qq.com>
Date: Tue, 7 Mar 2023 10:05:57 +0800
Subject: [PATCH 55/60] chore: up 1.7.1

---
 package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package.json b/package.json
index d0f62967..d067560f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "yudao-ui-admin-vue3",
-  "version": "1.7.0-snapshot.1922",
+  "version": "1.7.1-snapshot.1941",
   "description": "基于vue3、vite4、element-plus、typesScript",
   "author": "xingyu",
   "private": false,

From cab8c9ad15c262462bb9a01a5a491d310390bf02 Mon Sep 17 00:00:00 2001
From: xingyuv <xingyu4j@vip.qq.com>
Date: Tue, 7 Mar 2023 10:29:27 +0800
Subject: [PATCH 56/60] fix: search warn

---
 src/components/Search/src/Search.vue | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/components/Search/src/Search.vue b/src/components/Search/src/Search.vue
index a8ae601b..80f2b37c 100644
--- a/src/components/Search/src/Search.vue
+++ b/src/components/Search/src/Search.vue
@@ -9,8 +9,6 @@ import { FormSchema } from '@/types/form'
 
 const { t } = useI18n()
 
-const slots = useSlots()
-
 const props = defineProps({
   // 生成Form的布局结构数组
   schema: {
@@ -125,7 +123,9 @@ const setVisible = () => {
         </ElButton>
       </div>
     </template>
-    <template v-for="(slot, name) in slots" #[name]><slot :name="name"></slot></template>
+    <template #[name] v-for="name in Object.keys($slots)" :key="name"
+      ><slot :name="name"></slot
+    ></template>
   </Form>
 
   <template v-if="layout === 'bottom'">

From dac20068cc4d30f61bde77387eeb156aa3aa95b3 Mon Sep 17 00:00:00 2001
From: gexinzhineng/gxzn27 <1348660141@qq.com>
Date: Tue, 7 Mar 2023 16:22:40 +0800
Subject: [PATCH 57/60] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E7=AE=A1=E7=90=86?=
 =?UTF-8?q?=E4=B8=ADid=E6=98=BE=E7=A4=BA=E5=BA=8F=E5=8F=B7bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/system/errorCode/errorCode.data.ts          | 2 +-
 src/views/system/loginlog/loginLog.data.ts            | 2 +-
 src/views/system/notify/message/message.data.ts       | 2 +-
 src/views/system/operatelog/operatelog.data.ts        | 2 +-
 src/views/system/sensitiveWord/sensitiveWord.data.ts  | 2 +-
 src/views/system/sms/smsChannel/sms.channel.data.ts   | 2 +-
 src/views/system/sms/smsLog/sms.log.data.ts           | 2 +-
 src/views/system/sms/smsTemplate/sms.template.data.ts | 2 +-
 src/views/system/tenant/tenant.data.ts                | 2 +-
 src/views/system/tenantPackage/tenantPackage.data.ts  | 2 +-
 src/views/system/user/user.data.ts                    | 2 +-
 11 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/views/system/errorCode/errorCode.data.ts b/src/views/system/errorCode/errorCode.data.ts
index 36f5e4c5..4736068b 100644
--- a/src/views/system/errorCode/errorCode.data.ts
+++ b/src/views/system/errorCode/errorCode.data.ts
@@ -11,7 +11,7 @@ export const rules = reactive({
 // 新增 + 修改
 const crudSchemas = reactive<VxeCrudSchema>({
   primaryKey: 'id',
-  primaryType: 'seq',
+  primaryType: 'id',
   primaryTitle: '编号',
   action: true,
   columns: [
diff --git a/src/views/system/loginlog/loginLog.data.ts b/src/views/system/loginlog/loginLog.data.ts
index 75988e43..c0a51fbe 100644
--- a/src/views/system/loginlog/loginLog.data.ts
+++ b/src/views/system/loginlog/loginLog.data.ts
@@ -3,7 +3,7 @@ import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 // CrudSchema
 const crudSchemas = reactive<VxeCrudSchema>({
   primaryKey: 'id',
-  primaryType: 'seq',
+  primaryType: 'id',
   primaryTitle: '日志编号',
   action: true,
   actionWidth: '100px',
diff --git a/src/views/system/notify/message/message.data.ts b/src/views/system/notify/message/message.data.ts
index ff5eb315..665311d2 100644
--- a/src/views/system/notify/message/message.data.ts
+++ b/src/views/system/notify/message/message.data.ts
@@ -4,7 +4,7 @@ import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const crudSchemas = reactive<VxeCrudSchema>({
   primaryKey: 'id', // 默认的主键ID
   primaryTitle: '编号', // 默认显示的值
-  primaryType: 'seq', // 默认为seq,序号模式
+  primaryType: 'id', // 默认为seq,序号模式
   action: true,
   actionWidth: '200', // 3个按钮默认200,如有删减对应增减即可
   columns: [
diff --git a/src/views/system/operatelog/operatelog.data.ts b/src/views/system/operatelog/operatelog.data.ts
index e0f0578b..f8b4ef90 100644
--- a/src/views/system/operatelog/operatelog.data.ts
+++ b/src/views/system/operatelog/operatelog.data.ts
@@ -4,7 +4,7 @@ const { t } = useI18n() // 国际化
 
 const crudSchemas = reactive<VxeCrudSchema>({
   primaryKey: 'id',
-  primaryType: 'seq',
+  primaryType: 'id',
   primaryTitle: '日志编号',
   action: true,
   actionWidth: '80px',
diff --git a/src/views/system/sensitiveWord/sensitiveWord.data.ts b/src/views/system/sensitiveWord/sensitiveWord.data.ts
index 79c90e6c..d21bb94c 100644
--- a/src/views/system/sensitiveWord/sensitiveWord.data.ts
+++ b/src/views/system/sensitiveWord/sensitiveWord.data.ts
@@ -10,7 +10,7 @@ export const rules = reactive({
 // CrudSchema
 const crudSchemas = reactive<VxeCrudSchema>({
   primaryKey: 'id',
-  primaryType: 'seq',
+  primaryType: 'id',
   primaryTitle: '敏感词编号',
   action: true,
   columns: [
diff --git a/src/views/system/sms/smsChannel/sms.channel.data.ts b/src/views/system/sms/smsChannel/sms.channel.data.ts
index cc014469..d3a807ed 100644
--- a/src/views/system/sms/smsChannel/sms.channel.data.ts
+++ b/src/views/system/sms/smsChannel/sms.channel.data.ts
@@ -12,7 +12,7 @@ export const rules = reactive({
 // CrudSchema
 const crudSchemas = reactive<VxeCrudSchema>({
   primaryKey: 'id',
-  primaryType: 'seq',
+  primaryType: 'id',
   primaryTitle: '渠道编号',
   action: true,
   columns: [
diff --git a/src/views/system/sms/smsLog/sms.log.data.ts b/src/views/system/sms/smsLog/sms.log.data.ts
index 501a5a2b..4610ee62 100644
--- a/src/views/system/sms/smsLog/sms.log.data.ts
+++ b/src/views/system/sms/smsLog/sms.log.data.ts
@@ -4,7 +4,7 @@ const { t } = useI18n() // 国际化
 // CrudSchema
 const crudSchemas = reactive<VxeCrudSchema>({
   primaryKey: 'id',
-  primaryType: 'seq',
+  primaryType: 'id',
   primaryTitle: '日志编号',
   action: true,
   columns: [
diff --git a/src/views/system/sms/smsTemplate/sms.template.data.ts b/src/views/system/sms/smsTemplate/sms.template.data.ts
index 2fb46fda..514a503a 100644
--- a/src/views/system/sms/smsTemplate/sms.template.data.ts
+++ b/src/views/system/sms/smsTemplate/sms.template.data.ts
@@ -15,7 +15,7 @@ export const rules = reactive({
 // CrudSchema
 const crudSchemas = reactive<VxeCrudSchema>({
   primaryKey: 'id',
-  primaryType: 'seq',
+  primaryType: 'id',
   primaryTitle: '模板编号',
   action: true,
   actionWidth: '280',
diff --git a/src/views/system/tenant/tenant.data.ts b/src/views/system/tenant/tenant.data.ts
index 110bfbb3..2aab1b90 100644
--- a/src/views/system/tenant/tenant.data.ts
+++ b/src/views/system/tenant/tenant.data.ts
@@ -53,7 +53,7 @@ export const rules = reactive({
 const crudSchemas = reactive<VxeCrudSchema>({
   primaryKey: 'id',
   primaryTitle: '租户编号',
-  primaryType: 'seq',
+  primaryType: 'id',
   action: true,
   columns: [
     {
diff --git a/src/views/system/tenantPackage/tenantPackage.data.ts b/src/views/system/tenantPackage/tenantPackage.data.ts
index de06c2cb..47db56d4 100644
--- a/src/views/system/tenantPackage/tenantPackage.data.ts
+++ b/src/views/system/tenantPackage/tenantPackage.data.ts
@@ -14,7 +14,7 @@ export const rules = reactive({
 // CrudSchema
 const crudSchemas = reactive<VxeCrudSchema>({
   primaryKey: 'id',
-  primaryType: 'seq',
+  primaryType: 'id',
   primaryTitle: '套餐编号',
   action: true,
   columns: [
diff --git a/src/views/system/user/user.data.ts b/src/views/system/user/user.data.ts
index bd93873b..94b1d436 100644
--- a/src/views/system/user/user.data.ts
+++ b/src/views/system/user/user.data.ts
@@ -28,7 +28,7 @@ export const rules = reactive({
 // crudSchemas
 const crudSchemas = reactive<VxeCrudSchema>({
   primaryKey: 'id',
-  primaryType: 'seq',
+  primaryType: 'id',
   primaryTitle: '用户编号',
   action: true,
   actionWidth: '200px',

From 7f336bbe9242d4a001ec9fc058c7649b683b0c62 Mon Sep 17 00:00:00 2001
From: YunaiV <zhijiantianya@gmail.com>
Date: Tue, 7 Mar 2023 19:21:39 +0800
Subject: [PATCH 58/60] =?UTF-8?q?=E6=9A=82=E6=97=B6=E5=8F=96=E6=B6=88=20ht?=
 =?UTF-8?q?tps=20=E5=8A=A0=E9=80=9F=E6=96=B9=E6=A1=88=EF=BC=8C=E4=B8=BB?=
 =?UTF-8?q?=E8=A6=81=E8=80=83=E8=99=91=20server=20=E7=AB=AF=E6=B2=A1?=
 =?UTF-8?q?=E6=9C=89=20https?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 build/vite/index.ts | 9 ++-------
 vite.config.ts      | 4 +---
 2 files changed, 3 insertions(+), 10 deletions(-)

diff --git a/build/vite/index.ts b/build/vite/index.ts
index 41bbc040..304ce0d5 100644
--- a/build/vite/index.ts
+++ b/build/vite/index.ts
@@ -14,9 +14,7 @@ import viteCompression from 'vite-plugin-compression'
 import vueSetupExtend from 'vite-plugin-vue-setup-extend'
 import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'
 import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
-import mkcert from 'vite-plugin-mkcert'
-// import PkgConfig from 'vite-plugin-package-config'
-// import OptimizationPersist from 'vite-plugin-optimize-persist'
+
 export function createVitePlugins(VITE_APP_TITLE: string) {
   const root = process.cwd()
   // 路径查找
@@ -96,9 +94,6 @@ export function createVitePlugins(VITE_APP_TITLE: string) {
     }),
     ViteEjsPlugin({
       title: VITE_APP_TITLE
-    }),
-    mkcert(),
-    // PkgConfig(),
-    // OptimizationPersist(),
+    })
   ]
 }
diff --git a/vite.config.ts b/vite.config.ts
index 0ca5b697..d1ad957f 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -25,13 +25,11 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
     root: root,
     // 服务端渲染
     server: {
-      // 是否开启 https
-      https: true,
       // 端口号
       port: env.VITE_PORT,
       host: "0.0.0.0",
       open: env.VITE_OPEN === 'true',
-      // 本地跨域代理
+      // 本地跨域代理. 目前注释的原因:暂时没有用途,server 端已经支持跨域
       // proxy: {
       //   ['/admin-api']: {
       //     target: env.VITE_BASE_URL,

From 5df7a8c95186b83c36cdabfe10594f480a923529 Mon Sep 17 00:00:00 2001
From: YunaiV <zhijiantianya@gmail.com>
Date: Tue, 7 Mar 2023 19:40:04 +0800
Subject: [PATCH 59/60] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20optimize=20=E6=96=87?=
 =?UTF-8?q?=E4=BB=B6=E5=88=97=E8=A1=A8=EF=BC=8C=E9=81=BF=E5=85=8D=20reload?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 build/vite/optimize.ts                   | 14 +++++++++++++-
 src/views/bpm/processInstance/create.vue |  2 +-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/build/vite/optimize.ts b/build/vite/optimize.ts
index a4bff7b9..3d90dbac 100644
--- a/build/vite/optimize.ts
+++ b/build/vite/optimize.ts
@@ -67,7 +67,19 @@ const include = [
   'element-plus/es/components/dropdown/style/index',
   'element-plus/es/components/dropdown-menu/style/index',
   'element-plus/es/components/dropdown-item/style/index',
-  'element-plus/es/components/skeleton/style/index'
+  'element-plus/es/components/skeleton/style/index',
+  'element-plus/es/components/skeleton/style/css',
+  'element-plus/es/components/backtop/style/css',
+  'element-plus/es/components/menu/style/css',
+  'element-plus/es/components/sub-menu/style/css',
+  'element-plus/es/components/menu-item/style/css',
+  'element-plus/es/components/dropdown/style/css',
+  'element-plus/es/components/tree/style/css',
+  'element-plus/es/components/dropdown-menu/style/css',
+  'element-plus/es/components/dropdown-item/style/css',
+  'element-plus/es/components/badge/style/css',
+  'element-plus/es/components/breadcrumb/style/css',
+  'element-plus/es/components/breadcrumb-item/style/css'
 ]
 
 const exclude = ['@iconify/json']
diff --git a/src/views/bpm/processInstance/create.vue b/src/views/bpm/processInstance/create.vue
index 084c085c..1b59ec7c 100644
--- a/src/views/bpm/processInstance/create.vue
+++ b/src/views/bpm/processInstance/create.vue
@@ -59,7 +59,7 @@ import { allSchemas } from './process.create'
 import * as DefinitionApi from '@/api/bpm/definition'
 import * as ProcessInstanceApi from '@/api/bpm/processInstance'
 import { setConfAndFields2 } from '@/utils/formCreate'
-import { ApiAttrs } from '@form-create/element-ui/types/config'
+import type { ApiAttrs } from '@form-create/element-ui/types/config'
 import { DICT_TYPE } from '@/utils/dict'
 
 const router = useRouter() // 路由

From 281bddcd40e0561301eb04fa44ed7c8b551d34e5 Mon Sep 17 00:00:00 2001
From: YunaiV <zhijiantianya@gmail.com>
Date: Tue, 7 Mar 2023 19:57:46 +0800
Subject: [PATCH 60/60] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20optimize=20=E6=96=87?=
 =?UTF-8?q?=E4=BB=B6=E5=88=97=E8=A1=A8=EF=BC=8C=E9=81=BF=E5=85=8D=20reload?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 vite.config.ts | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/vite.config.ts b/vite.config.ts
index d1ad957f..6b54e183 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -25,6 +25,8 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
     root: root,
     // 服务端渲染
     server: {
+      // 是否开启 https
+      https: false,
       // 端口号
       port: env.VITE_PORT,
       host: "0.0.0.0",