<template>
|
<GlobalWindow
|
:title="title"
|
:visible.sync="visible"
|
:confirm-working="isWorking"
|
@confirm="confirm"
|
>
|
<el-form :model="form" ref="form" :rules="rules">
|
<el-form-item label="上级组织" >
|
<!--
|
<companySelect v-if="!form.id " v-model="form.parentId" placeholder="请选择上级菜单" clearable :inline="false"/>
|
-->
|
<span>【{{form.parentName || '-'}}】</span>
|
</el-form-item>
|
<el-form-item label="组织名称" prop="name">
|
<el-input v-model="form.name" placeholder="请输入组织名称" v-trim/>
|
</el-form-item>
|
<el-form-item label="排序码" prop="sortnum">
|
<el-input v-model="form.sortnum" placeholder="请输入排序码" v-trim/>
|
</el-form-item>
|
<el-form-item label="组织类型" prop="type" v-if="(editType === 'edit' && parentId) || (editType === 'add')" >
|
<!-- :disabled="(editType === 'edit') || (!!(editType === 'add' && parentId))"-->
|
<el-radio-group v-model="form.type">
|
<el-radio :label="0">相关方组织</el-radio>
|
<el-radio :label="1" v-if="sysConfig() && sysConfig().orgUserDataOrigin!=3">内部组织</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
<el-form-item label="对接部门" prop="relationCompanyId" v-if="form.type === 0">
|
<treeselect
|
@input="changeSel"
|
v-model="form.relationCompanyId"
|
placeholder="请选择"
|
:options="companyTree"
|
:normalizer="normalizeOptions"
|
:default-expand-level="1"
|
noChildrenText="没有子选项"
|
noOptionsText="没有可选项"
|
noResultsText="没有匹配的结果" />
|
</el-form-item>
|
<el-form-item label="对接人员" prop="relationUserId" v-if="form.type === 0">
|
<el-select v-model="form.relationUserId" clearable filterable placeholder="请选择">
|
<el-option v-for="item in memberList" :key="item.id" :label="item.name" :value="item.id">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</el-form>
|
</GlobalWindow>
|
</template>
|
|
<script>
|
import BaseOpera from '@/components/base/BaseOpera'
|
import GlobalWindow from '@/components/common/GlobalWindow'
|
import companySelect from '@/components/common/companySelect'
|
import { allList } from '@/api/business/member'
|
import { fetchList as companyTree } from '@/api/business/company'
|
export default {
|
name: 'OperaInternalCompanyWindow',
|
extends: BaseOpera,
|
components: { GlobalWindow, companySelect },
|
data () {
|
return {
|
options: [],
|
memberList: [],
|
companyTree: [],
|
isInit: false,
|
// 表单数据
|
form: {
|
id: null,
|
type: 0,
|
name: '',
|
parentId: null,
|
disable: false,
|
parentName: '',
|
sortnum: '',
|
relationCompanyId: null,
|
relationUserId: null
|
},
|
editType: '',
|
parentId: null,
|
// 验证规则
|
rules: {
|
name: [
|
{ required: true, message: '请输入组织名称' }
|
],
|
type: [
|
{ required: true, message: '请选择组织类型' }
|
]
|
}
|
}
|
},
|
props: {
|
list: {
|
type: Array
|
}
|
},
|
inject: ['sysConfig'],
|
created () {
|
this.config({
|
api: '/business/company.js',
|
'field.id': 'id'
|
})
|
},
|
methods: {
|
open (title, target, row, editType) {
|
this.title = title
|
this.editType = editType
|
this.isInit = false
|
if (editType === 'edit') {
|
this.parentId = row.parentId
|
} else if (editType === 'add') {
|
this.parentId = target.parentId
|
}
|
this.visible = true
|
this.getfindCompanyTreePage()
|
this.form = {
|
id: null,
|
type: 0,
|
name: '',
|
parentId: null,
|
disable: false,
|
parentName: '',
|
parentType: null,
|
sortnum: null,
|
relationCompanyId: null,
|
relationUserId: null
|
}
|
if (target != null) {
|
this.form.parentId = target.id
|
this.form.parentType = target.type >= 0 ? target.type : 0
|
this.form.parentName = target.companyNamePath
|
}
|
// 新建组织
|
if (row == null) {
|
this.$nextTick(() => {
|
this.$refs.form.resetFields()
|
this.form[this.configData['field.id']] = null
|
this.form.type = 0
|
this.isInit = true
|
})
|
return
|
}
|
// 编辑
|
const savedRelationUserId = row.relationUserId
|
this.$nextTick(() => {
|
this.originPermissionCode = target.code
|
for (const key in this.form) {
|
if (row[key] !== undefined) {
|
this.form[key] = row[key]
|
}
|
}
|
if (target.type == 0) {
|
this.form.type = 0
|
}
|
|
setTimeout(() => {
|
this.form.relationUserId = savedRelationUserId
|
}, 500)
|
|
this.loadMember().then(() => {
|
this.isInit = true
|
})
|
})
|
},
|
normalizeOptions (node) {
|
if (!node.childList || !node.childList.length) {
|
delete node.childList
|
}
|
return {
|
id: node.id,
|
label: node.name,
|
children: node.childList
|
}
|
},
|
changeSel () {
|
const { form } = this
|
if (form.relationCompanyId) {
|
this.loadMember().then(() => {
|
if (this.isInit) {
|
this.form.relationUserId = ''
|
}
|
})
|
}
|
},
|
getfindCompanyTreePage () {
|
companyTree(1)
|
.then(res => {
|
if (res && res.length > 0) {
|
this.companyTree = res
|
}
|
})
|
},
|
loadMember () {
|
const { form } = this
|
return allList({
|
type: 2,
|
companyId: form.relationCompanyId
|
})
|
.then(res => {
|
this.memberList = res
|
})
|
.catch(e => {
|
})
|
.finally(() => {
|
this.isWorking = false
|
})
|
},
|
// 确认新建/修改
|
confirm () {
|
this.$refs.form.validate((valid) => {
|
if (!valid) {
|
return
|
}
|
// 调用新建接口
|
this.isWorking = true
|
if (this.form.id == null || this.form.id === '') {
|
this.api.create({
|
parentId: this.form.parentId,
|
name: this.form.name,
|
type: this.form.type,
|
sortnum: this.form.sortnum,
|
relationCompanyId: this.form.relationCompanyId,
|
relationUserId: this.form.relationUserId
|
})
|
.then(() => {
|
this.visible = false
|
this.$tip.apiSuccess('新建成功')
|
this.$emit('success')
|
})
|
.catch(e => {
|
// this.$tip.apiFailed(e)
|
})
|
.finally(() => {
|
this.isWorking = false
|
})
|
} else {
|
this.api.updateById({
|
id: this.form.id,
|
parentId: this.form.parentId,
|
name: this.form.name,
|
type: this.form.type,
|
sortnum: this.form.sortnum,
|
relationCompanyId: this.form.relationCompanyId,
|
relationUserId: this.form.relationUserId
|
})
|
.then(() => {
|
this.visible = false
|
this.$tip.apiSuccess('修改成功')
|
this.$emit('success')
|
})
|
.catch(e => {
|
// this.$tip.apiFailed(e)
|
})
|
.finally(() => {
|
this.isWorking = false
|
})
|
}
|
})
|
}
|
}
|
}
|
</script>
|