流程表单信息部门机构树选择
parent
8157939eee
commit
3b6ef1d9c0
|
|
@ -0,0 +1,50 @@
|
||||||
|
<template>
|
||||||
|
<el-tree-select
|
||||||
|
v-bind="attrs"
|
||||||
|
:data="deptList"
|
||||||
|
:props="defaultProps"
|
||||||
|
check-strictly
|
||||||
|
node-key="id"
|
||||||
|
placeholder="请选择"
|
||||||
|
:multiple="multiple"
|
||||||
|
:show-checkbox="showCheckbox"
|
||||||
|
:filterable="filterable"
|
||||||
|
:clearable="clearable"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { defaultProps, handleTree } from '@/utils/tree'
|
||||||
|
import * as DeptApi from '@/api/system/dept'
|
||||||
|
|
||||||
|
defineOptions({ name: 'DeptTreeSelect' })
|
||||||
|
|
||||||
|
const attrs = useAttrs()
|
||||||
|
|
||||||
|
// 接受父组件参数
|
||||||
|
interface Props {
|
||||||
|
multiple: boolean, //是否多选
|
||||||
|
showCheckbox: boolean, //是否多选
|
||||||
|
filterable:boolean, //是否允许搜索
|
||||||
|
formCreateInject?: any
|
||||||
|
}
|
||||||
|
|
||||||
|
const props = withDefaults(defineProps<Props>(), {
|
||||||
|
multiple: false,
|
||||||
|
showCheckbox: false,
|
||||||
|
filterable:false,
|
||||||
|
clearable:false
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const deptList = ref<Tree[]>([]) // 树形结构
|
||||||
|
onMounted(async () => {
|
||||||
|
console.log('Props',props)
|
||||||
|
const data = await DeptApi.getSimpleDeptList() //1.调用后端接口获取数据
|
||||||
|
if (!data || data.length === 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
deptList.value = handleTree(data)
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
@ -2,6 +2,7 @@ import { useUploadFileRule } from './useUploadFileRule'
|
||||||
import { useUploadImgRule } from './useUploadImgRule'
|
import { useUploadImgRule } from './useUploadImgRule'
|
||||||
import { useUploadImgsRule } from './useUploadImgsRule'
|
import { useUploadImgsRule } from './useUploadImgsRule'
|
||||||
import { useDictSelectRule } from './useDictSelectRule'
|
import { useDictSelectRule } from './useDictSelectRule'
|
||||||
|
import { useDeptTreeSelectRule } from './useDeptTreeSelectRule'
|
||||||
import { useEditorRule } from './useEditorRule'
|
import { useEditorRule } from './useEditorRule'
|
||||||
import { useSelectRule } from './useSelectRule'
|
import { useSelectRule } from './useSelectRule'
|
||||||
|
|
||||||
|
|
@ -10,6 +11,7 @@ export {
|
||||||
useUploadImgRule,
|
useUploadImgRule,
|
||||||
useUploadImgsRule,
|
useUploadImgsRule,
|
||||||
useDictSelectRule,
|
useDictSelectRule,
|
||||||
|
useDeptTreeSelectRule,
|
||||||
useEditorRule,
|
useEditorRule,
|
||||||
useSelectRule
|
useSelectRule
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
import { generateUUID } from '@/utils'
|
||||||
|
import { localeProps, makeRequiredRule } from '@/components/FormCreate/src/utils'
|
||||||
|
import { selectRule } from '@/components/FormCreate/src/config/selectRule'
|
||||||
|
import { cloneDeep } from 'lodash-es'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门树选择器规则,如果规则使用到动态数据则需要单独配置不能使用 useSelectRule
|
||||||
|
*/
|
||||||
|
export const useDeptTreeSelectRule = () => {
|
||||||
|
const label = '部门树选择'
|
||||||
|
const name = 'DeptTreeSelect'
|
||||||
|
const event = ['click','change','visibleChange','clear','blur','focus']
|
||||||
|
const rules = cloneDeep(selectRule)
|
||||||
|
return {
|
||||||
|
icon: 'icon-doc-text',
|
||||||
|
label,
|
||||||
|
name,
|
||||||
|
event: event,
|
||||||
|
rule() {
|
||||||
|
return {
|
||||||
|
type: name,
|
||||||
|
field: generateUUID(),
|
||||||
|
title: label,
|
||||||
|
info: '',
|
||||||
|
$required: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
props(_, { t }) {
|
||||||
|
return localeProps(t, name + '.props', [
|
||||||
|
makeRequiredRule(),
|
||||||
|
{ type: 'switch', field: 'showCheckbox', title: '是否显示复选框' },
|
||||||
|
...rules
|
||||||
|
])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue