| <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:'.zip,.war,.pdf' }" :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 type="number" 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.fileList = [] | 
|       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] | 
|         } | 
|         if(this.form.fileurl){ | 
|           this.fileList = [{ fileurl: this.form.fileurl, fileurlFull:this.form.fileurlFull, name: this.form.fileName,fileSize:this.form.fileSize }] | 
|         } | 
|       }) | 
|     }, | 
|     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> |