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: '当前审批任务',
diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue
index 97993f5f..da4b8389 100644
--- a/src/views/system/role/index.vue
+++ b/src/views/system/role/index.vue
@@ -111,16 +111,21 @@
           >
             <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()"-->
-                <!--/>-->
+                父子联动(选中父节点,自动选择子节点):
+                <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"
@@ -250,12 +255,12 @@ const dialogScopeTitle = ref('数据权限')
 const actionScopeType = ref('')
 const dataScopeDictDatas = ref()
 // 选项
-const checkStrictly = ref(false)
-// const treeNodeAll = ref(false)
+const checkStrictly = ref(true)
+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
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 5568ca2a..2f9ba9b0 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -408,20 +408,20 @@ 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') {
-          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
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: '请输入正确的手机号码'