mirror of
https://gitee.com/jeecg/JeecgBoot.git
synced 2025-12-30 09:22:26 +00:00
217 lines
5.1 KiB
Vue
217 lines
5.1 KiB
Vue
import { FormSchema } from '/@/components/Form';
|
|
import { getPositionByDepartId } from "./depart.api";
|
|
import { useMessage } from "@/hooks/web/useMessage";
|
|
import { BasicColumn } from "@/components/Table";
|
|
import { getDepartPathNameByOrgCode } from '@/utils/common/compUtils';
|
|
import { h, ref } from 'vue';
|
|
|
|
const { createMessage: $message } = useMessage();
|
|
//部门名称
|
|
const departNamePath = ref<Record<string, string>>({});
|
|
|
|
// 部门基础表单
|
|
export function useBasicFormSchema(treeData) {
|
|
const basicFormSchema: FormSchema[] = [
|
|
{
|
|
field: 'departName',
|
|
label: '机构名称',
|
|
component: 'Input',
|
|
componentProps: {
|
|
placeholder: '请输入机构/部门名称',
|
|
},
|
|
rules: [{ required: true, message: '机构名称不能为空' }],
|
|
},
|
|
{
|
|
field: 'parentId',
|
|
label: '上级部门',
|
|
component: 'TreeSelect',
|
|
componentProps: {
|
|
treeData: [],
|
|
placeholder: '无',
|
|
treeCheckAble: true,
|
|
multiple: true,
|
|
dropdownStyle: { maxHeight: '200px', overflow: 'auto' },
|
|
tagRender: (options) => {
|
|
const { value, label, option } = options;
|
|
if (departNamePath.value[value]) {
|
|
return h(
|
|
'span', { style: { marginLeft: '10px' } },
|
|
departNamePath.value[value]
|
|
);
|
|
}
|
|
getDepartPathNameByOrgCode('', label, option.id).then((data) => {
|
|
departNamePath.value[value] = data;
|
|
});
|
|
},
|
|
},
|
|
},
|
|
{
|
|
field: 'orgCode',
|
|
label: '机构编码',
|
|
component: 'Input',
|
|
componentProps: {
|
|
placeholder: '请输入机构编码',
|
|
},
|
|
},
|
|
{
|
|
field: 'orgCategory',
|
|
label: '机构类型',
|
|
component: 'RadioButtonGroup',
|
|
componentProps: { options: [] },
|
|
},
|
|
{
|
|
field: 'positionId',
|
|
label: '职务级别',
|
|
component: 'JDictSelectTag',
|
|
componentProps: ({ formModel, formActionType }) => {
|
|
return {
|
|
dictCode: "sys_position,name,id, 1=1 order by post_level asc",
|
|
getPopupContainer: ()=> document.body,
|
|
onChange: (value) => {
|
|
formModel.depPostParentId = "";
|
|
return positionChange(value, formModel, treeData);
|
|
},
|
|
}
|
|
},
|
|
ifShow:({ values })=>{
|
|
return values.orgCategory === '3'
|
|
},
|
|
required: true,
|
|
},
|
|
{
|
|
field: 'depPostParentId',
|
|
label: '上级岗位',
|
|
component: 'TreeSelect',
|
|
ifShow:({ values })=>{
|
|
return values.orgCategory === '3'
|
|
},
|
|
slot: 'depPostParentId',
|
|
},
|
|
{
|
|
field: 'departOrder',
|
|
label: '排序',
|
|
component: 'InputNumber',
|
|
componentProps: {},
|
|
},
|
|
{
|
|
field: 'mobile',
|
|
label: '电话',
|
|
component: 'Input',
|
|
componentProps: {
|
|
placeholder: '请输入电话',
|
|
},
|
|
ifShow:({ values })=>{
|
|
return values.orgCategory !== '3'
|
|
},
|
|
},
|
|
{
|
|
field: 'fax',
|
|
label: '传真',
|
|
component: 'Input',
|
|
componentProps: {
|
|
placeholder: '请输入传真',
|
|
},
|
|
ifShow:({ values })=>{
|
|
return values.orgCategory !== '3'
|
|
},
|
|
},
|
|
{
|
|
field: 'address',
|
|
label: '地址',
|
|
component: 'Input',
|
|
componentProps: {
|
|
placeholder: '请输入地址',
|
|
},
|
|
ifShow:({ values })=>{
|
|
return values.orgCategory !== '3'
|
|
},
|
|
},
|
|
{
|
|
field: 'memo',
|
|
label: '备注',
|
|
component: 'InputTextArea',
|
|
componentProps: {
|
|
placeholder: '请输入备注',
|
|
},
|
|
ifShow:({ values })=>{
|
|
return values.orgCategory !== '3'
|
|
},
|
|
},
|
|
{
|
|
field: 'id',
|
|
label: 'ID',
|
|
component: 'Input',
|
|
show: false,
|
|
},
|
|
];
|
|
return { basicFormSchema };
|
|
}
|
|
|
|
// 机构类型选项
|
|
export const orgCategoryOptions = {
|
|
// 一级部门
|
|
root: [{ value: '1', label: '公司' }],
|
|
// 子级部门
|
|
child: [
|
|
{ value: '4', label: '子公司' },
|
|
{ value: '2', label: '部门' },
|
|
{ value: '3', label: '岗位' },
|
|
],
|
|
//部门岗位
|
|
childDepartPost: [
|
|
{ value: '2', label: '部门' },
|
|
{ value: '3', label: '岗位' },
|
|
],
|
|
//岗位
|
|
childPost: [
|
|
{ value: '3', label: '岗位' },
|
|
]
|
|
};
|
|
|
|
/**
|
|
* 用户列表
|
|
*/
|
|
export const userColumns: BasicColumn[] = [
|
|
{
|
|
title: '用户账号',
|
|
dataIndex: 'username',
|
|
width: 120,
|
|
},
|
|
{
|
|
title: '姓名',
|
|
dataIndex: 'realname',
|
|
width: 150,
|
|
},
|
|
{
|
|
title: '手机',
|
|
width: 150,
|
|
dataIndex: 'phone',
|
|
},
|
|
{
|
|
title: '主岗位',
|
|
dataIndex: 'mainDepPostId_dictText',
|
|
width: 200,
|
|
},
|
|
];
|
|
|
|
/**
|
|
* 职位改变事件
|
|
* @param value
|
|
* @param model
|
|
* @param treeData
|
|
*/
|
|
export function positionChange(value, model, treeData) {
|
|
if(value && model.parentId){
|
|
getPositionByDepartId({ parentId: model.parentId, departId: model.id ? model.id:'', positionId: value }).then((res) =>{
|
|
if(res.success){
|
|
treeData.value = res.result;
|
|
}else{
|
|
treeData.value = [];
|
|
$message.warning(res.message);
|
|
}
|
|
});
|
|
} else {
|
|
treeData.value = [];
|
|
}
|
|
}
|