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 1/9] =?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 7c325ee96d49b68188762d4405aaf551e5e819b8 Mon Sep 17 00:00:00 2001
From: bimei <18812666091@163.com>
Date: Fri, 3 Mar 2023 13:13:42 +0800
Subject: [PATCH 2/9] =?UTF-8?q?fix:=20=E4=B8=BB=E9=A2=98=E5=88=87=E6=8D=A2?=
 =?UTF-8?q?XTable=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 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 3/9] =?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 4/9] =?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 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 5/9] =?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 6/9] =?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 7/9] =?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 8/9] =?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 9/9] =?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()