Browse Source

fix: 添加字段

Gaokun Wang 3 weeks ago
parent
commit
d2c77a0650

+ 1 - 0
src/api/interface/system/org.ts

@@ -55,6 +55,7 @@ export interface OrgFormBo {
   name: string
   orderNum: number
   leader: string
+  leaderId: string
   phone?: string
   remark?: string
   email?: string

+ 3 - 0
src/types/auto-components.d.ts

@@ -23,6 +23,7 @@ declare module 'vue' {
     EcoDrawerForm: typeof import('./../components/EcoDrawerForm/index.vue')['default']
     EcoForm: typeof import('./../components/EcoForm/index.vue')['default']
     EcoItem: typeof import('./../components/EcoForm/components/EcoItem.vue')['default']
+    EcoUser: typeof import('./../components/EcoUser/index.vue')['default']
     ElAvatar: typeof import('element-plus/es')['ElAvatar']
     ElButton: typeof import('element-plus/es')['ElButton']
     ElCol: typeof import('element-plus/es')['ElCol']
@@ -44,6 +45,8 @@ declare module 'vue' {
     ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
     ElPagination: typeof import('element-plus/es')['ElPagination']
     ElRadio: typeof import('element-plus/es')['ElRadio']
+    ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
+    ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
     ElRow: typeof import('element-plus/es')['ElRow']
     ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
     ElSpace: typeof import('element-plus/es')['ElSpace']

+ 27 - 10
src/views/system/org/components/OrgDrawer.vue

@@ -1,5 +1,5 @@
 <template>
-  <ElDrawer ref="elDrawerRef" v-model="drawerVisible" :title="drawerProps.title" v-bind="$attrs">
+  <ElDrawer ref="elDrawerRef" v-model="drawerVisible" :title="drawerProps.title" v-bind="$attrs" destroy-on-close>
     <template #header="scope">
       <slot name="header" v-bind="scope">
         <div style="display: flex">
@@ -10,7 +10,7 @@
       </slot>
     </template>
 
-    <el-form ref="ruleFormRef" label-width="140px" label-suffix=" :" :rules="rules" :model="drawerProps.row" @submit.enter.prevent="handleConfirm">
+    <el-form ref="ruleFormRef" label-width="120px" label-suffix=" :" :rules="rules" :model="drawerProps.row" @submit.enter.prevent="handleConfirm">
       <el-form-item label="上级部门" prop="parentId">
         <el-tree-select
           v-model="drawerProps.row.parentId"
@@ -25,9 +25,18 @@
       <el-form-item label="组织名称" prop="name">
         <el-input v-model="drawerProps.row.name" placeholder="请填写部门名称" clearable />
       </el-form-item>
-      <el-form-item label="排序" prop="sort">
+      <el-form-item label="排序" prop="orderNum">
         <el-input-number v-model="drawerProps.row.orderNum" :precision="0" :min="1" :max="999999" />
       </el-form-item>
+      <el-form-item label="状态" prop="status">
+        <el-radio-group v-model="drawerProps.row.status">
+          <el-radio-button label="启用" value="1" />
+          <el-radio-button label="停用" value="0" />
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item label="负责人" prop="leader">
+        <el-input v-model="drawerProps.row.leader" />
+      </el-form-item>
       <el-form-item label="备注" prop="remark">
         <el-input v-model="drawerProps.row.remark" placeholder="请填写备注" clearable />
       </el-form-item>
@@ -35,7 +44,7 @@
 
     <template #footer>
       <slot name="footer">
-        <ElButton @Click="drawerVisible = false">取 消</ElButton>
+        <ElButton @click="drawerVisible = false">取 消</ElButton>
         <ElButton type="primary" @click="handleConfirm()">确 定</ElButton>
       </slot>
     </template>
@@ -45,11 +54,14 @@
 <script setup lang="ts" name="OrgForm">
 import { OrgTreeVO, OrgFormBo } from '@/api/interface/system/org'
 import OrgApi from '@/api/module/system/org'
+import { ResultEnum } from '@/enums/HttpEnum'
 
 import { FormInstance } from 'element-plus'
 const rules = reactive({
   name: [{ required: true, message: '请填写组织名称' }],
-  parentId: [{ required: true, message: '请选择上级' }]
+  parentId: [{ required: true, message: '请选择上级' }],
+  orderNum: [{ required: true, message: '排序不能为空' }],
+  status: [{ required: true, message: '状态不能为空' }]
 })
 
 interface EcoDrawerProps {
@@ -73,12 +85,14 @@ const drawerProps = ref<EcoDrawerProps>({
   row: {}
 })
 
+// emit
+const emit = defineEmits(['submit'])
+
 // 接收父组件传过来的参数
 const acceptParams = (params: EcoDrawerProps) => {
   drawerProps.value = params
   drawerVisible.value = true
   loadTree()
-  console.log('params', params)
 }
 
 const loadTree = () => {
@@ -93,10 +107,13 @@ const handleConfirm = () => {
   ruleFormRef.value!.validate(async valid => {
     if (!valid) return
     try {
-      await drawerProps.value.api!(drawerProps.value.row)
-      ElMessage.success({ message: `${drawerProps.value.title}用户成功!` })
-      drawerProps.value.getTableList!()
-      drawerVisible.value = false
+      const { code } = await drawerProps.value.api!(drawerProps.value.row)
+      if (code == ResultEnum.SUCCESS) {
+        ElMessage.success({ message: `${drawerProps.value.title}成功!` })
+        drawerProps.value.getTableList!()
+        emit('submit')
+        drawerVisible.value = false
+      }
     } catch (error) {
       console.log(error)
     }

+ 11 - 2
src/views/system/org/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="main-box">
-    <TreeFilter title="组织架构" :request-api="OrgApi.tree" label="name" :default-value="initParam.orgId" @change="changeTree" />
+    <TreeFilter title="组织架构" ref="treeRef" :request-api="OrgApi.tree" label="name" :default-value="initParam.orgId" @change="changeTree" />
     <div class="table-box">
       <ProTable
         ref="proTableRef"
@@ -23,19 +23,22 @@
         </template>
       </ProTable>
     </div>
-    <OrgDrawer ref="drawerRef" />
+    <OrgDrawer ref="drawerRef" @submit="refreshTree" />
   </div>
 </template>
 <script lang="tsx" setup name="OrgManage">
 import { RoleInfo, RoleQuery } from '@/api/interface/system/role'
 import OrgApi from '@/api/module/system/org'
 import OrgDrawer from './components/OrgDrawer.vue'
+import TreeFilter from '@/components/TreeFilter/index.vue'
 import { ColumnProps, ProTableInstance, SearchProps } from '@/components/ProTable/interface'
 import { OrgFormBo } from '@/api/interface/system/org'
 const initParam = reactive({ orgId: '', parentId: '' })
 
 const selectTreeId = ref<string>('')
 const proTableRef = ref<ProTableInstance>()
+const treeRef = ref<InstanceType<typeof TreeFilter>>()
+
 // 树形筛选切换
 const changeTree = (val: string) => {
   if (val) {
@@ -44,6 +47,12 @@ const changeTree = (val: string) => {
     proTableRef.value?.clearSelection()
   }
 }
+
+// 刷新树表
+const refreshTree = () => {
+  treeRef.value?.refresh()
+}
+
 // 表格配置项
 const columns: ColumnProps<RoleInfo>[] = [
   { type: 'selection', width: 60 },