<template>
|
<GlobalWindow
|
:title="title"
|
:visible.sync="visible"
|
:confirm-working="isWorking"
|
@confirm="confirm"
|
>
|
<el-form :model="form" ref="form" :rules="rules">
|
<el-form-item label="资料名称" prop="name">
|
<el-input v-model="form.name" placeholder="请输入资料名称" v-trim/>
|
</el-form-item>
|
<el-form-item label="资料类型" prop="categoryId">
|
<el-select v-model="form.categoryId" clearable filterable placeholder="请选择">
|
<el-option v-for="item in cateList" :key="item.id" :label="item.name" :value="item.id">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="责任部门" prop="companyId">
|
<treeselect
|
v-model="form.companyId"
|
placeholder="请选择"
|
:options="companyList"
|
:normalizer="normalizeOptions"
|
:default-expand-level="1"
|
noChildrenText="没有子选项"
|
noOptionsText="没有可选项"
|
noResultsText="没有匹配的结果" />
|
</el-form-item>
|
<el-form-item label="附件地址" prop="fileurl">
|
<UploadFile :uploadData="{ folder: 'company_documents',fileType:'' }" :fileList="fileList" @uploadSuccess="uploadFileBiz" />
|
|
<!-- <UploadFile width="100px" height="100px" :list="[]" folder="company_documents" @success="uploadFileBiz($event, 2)" />-->
|
</el-form-item>
|
<el-form-item label="附件描述" prop="content">
|
<el-input type="textarea" v-model="form.content" 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>
|
</GlobalWindow>
|
</template>
|
|
<script>
|
import BaseOpera from '@/components/base/BaseOpera'
|
import GlobalWindow from '@/components/common/GlobalWindow'
|
import { fetchList as companyList } from '@/api/business/company'
|
import UploadFile from '@/components/common/UploadFile'
|
import { fetchList } from '@/api/business/category'
|
export default {
|
name: 'OperaCompanyDocumentsWindow',
|
extends: BaseOpera,
|
components: { GlobalWindow, UploadFile },
|
data () {
|
return {
|
// 表单数据
|
form: {
|
id: null,
|
name: '',
|
status: '0',
|
sortnum: '',
|
fileurl: '',
|
fileName: '',
|
fileSize: '',
|
categoryId: null,
|
companyId: null,
|
content: '',
|
fileurlFull: ''
|
},
|
fileList:[],
|
cateList: [],
|
companyList: [],
|
// 验证规则
|
rules: {
|
name: [{ required: true, message: '请输入资料名称', trigger: 'blur' }],
|
companyId: [{ required: true, message: '请选择责任部门' }],
|
categoryId: [{ required: true, message: '请选择资料类型' }],
|
fileurl: [{ required: true, message: '请上传资料文件' }]
|
}
|
}
|
},
|
created () {
|
this.config({
|
api: '/business/companyDocuments',
|
'field.id': 'id'
|
})
|
},
|
methods: {
|
|
// 规范化选项数据的方法
|
normalizeOptions (node) {
|
// node: 原始的选项数据
|
// 在这里根据需要进行选项数据的规范化操作,并返回规范化后的选项数据
|
// 例如,可以将原始的选项数据转换为符合插件要求的结构
|
if (node.childList && !node.childList.length) {
|
// 去掉children=[]的children属性
|
delete node.childList
|
}
|
return {
|
id: node.id,
|
label: node.name,
|
children: node.childList
|
}
|
},
|
open (title, target) {
|
this.title = title
|
this.visible = true
|
this.getCate()
|
this.getCompany()
|
// 新建组织
|
if (target == null) {
|
this.$nextTick(() => {
|
this.$refs.form.resetFields()
|
this.form[this.configData['field.id']] = null
|
})
|
return
|
}
|
// 编辑
|
this.$nextTick(() => {
|
for (const key in this.form) {
|
this.form[key] = target[key]
|
}
|
})
|
},
|
uploadFileBiz (file) {
|
// this.$emit('uploadSuccess', { fileurl: data.imgaddr, fileurlFull: data.url, name: data.originname })
|
this.form.fileurl = file.fileurl
|
this.form.fileName = file.name
|
this.form.fileurlFull = file.fileurlFull
|
this.form.fileSize = file.fileSize
|
},
|
getCate () {
|
fetchList({
|
model: { type: 2 },
|
capacity: 1000,
|
page: 1
|
}).then(res => {
|
if (res && res.records && res.records.length > 0) {
|
this.cateList = res.records || []
|
}
|
})
|
},
|
getCompany () {
|
companyList()
|
.then(res => {
|
if (res && res.length > 0) {
|
this.companyList = this.getDepartmentTree(res)
|
}
|
})
|
},
|
getDepartmentTree (tree) {
|
if (tree == null) {
|
return []
|
}
|
return tree.map(item => {
|
const newItem = { ...item }
|
if (newItem) {
|
newItem.children = newItem.childList
|
}
|
if (item.children && item.children.length == 0) {
|
this.$delete(newItem, 'children')
|
} else {
|
newItem.children = this.getDepartmentTree(newItem.children)
|
}
|
return newItem
|
})
|
}
|
}
|
}
|
</script>
|