|
@@ -11,25 +11,46 @@
|
|
|
size="small"
|
|
|
prefix-icon="el-icon-search"
|
|
|
/>
|
|
|
- <el-button type="primary" size="small">查询</el-button>
|
|
|
+ <el-button type="primary" size="small" @click="handleSearchClick">查询</el-button>
|
|
|
</div>
|
|
|
<div class="head-container" style="overflow: auto; height: calc(100% - 50px);">
|
|
|
<el-tree
|
|
|
- :load="loadDeptNode"
|
|
|
- :props="defaultProps"
|
|
|
- :expand-on-click-node="false"
|
|
|
- ref="tree"
|
|
|
- node-key="id"
|
|
|
- lazy
|
|
|
- accordion
|
|
|
- highlight-current
|
|
|
- @node-click="handleNodeClick"
|
|
|
+ v-show="stepViewFlag"
|
|
|
+ :load="loadDeptNode"
|
|
|
+ :props="defaultProps"
|
|
|
+ :expand-on-click-node="false"
|
|
|
+ ref="tree"
|
|
|
+ node-key="id"
|
|
|
+ lazy
|
|
|
+ accordion
|
|
|
+ highlight-current
|
|
|
+ @node-click="handleNodeClick"
|
|
|
>
|
|
|
<template slot-scope="{ node, data }">
|
|
|
- <span class="custom-tree-node" :class="{ 'is-dept': !data.isMatter, 'is-matter': data.isMatter }">
|
|
|
- <i class="el-icon" :class="data.isMatter ? 'el-icon-tickets' : 'el-icon-office-building'"></i>
|
|
|
- <span>{{ data.deptName ? data.deptName : data.itemName }}</span>
|
|
|
- </span>
|
|
|
+ <span class="custom-tree-node" :class="{ 'is-dept': !data.isMatter, 'is-matter': data.isMatter }">
|
|
|
+ <i class="el-icon" :class="data.isMatter ? 'el-icon-tickets' : 'el-icon-office-building'"></i>
|
|
|
+ <span>{{ data.deptName ? data.deptName : data.itemName }}</span>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-tree>
|
|
|
+ <el-tree
|
|
|
+ v-show="!stepViewFlag"
|
|
|
+ :data="searchMatterList"
|
|
|
+ :props="defaultProps"
|
|
|
+ :expand-on-click-node="false"
|
|
|
+ ref="searchTree"
|
|
|
+ node-key="id"
|
|
|
+ :lazy="false"
|
|
|
+ accordion
|
|
|
+ default-expand-all
|
|
|
+ highlight-current
|
|
|
+ @node-click="handleNodeClick"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ node, data }">
|
|
|
+ <span class="custom-tree-node" :class="{ 'is-dept': !data.isMatter, 'is-matter': data.isMatter }">
|
|
|
+ <i class="el-icon" :class="data.isMatter ? 'el-icon-tickets' : 'el-icon-office-building'"></i>
|
|
|
+ <span>{{ data.deptName ? data.deptName : data.itemName }}</span>
|
|
|
+ </span>
|
|
|
</template>
|
|
|
</el-tree>
|
|
|
</div>
|
|
@@ -116,6 +137,8 @@ export default {
|
|
|
return {
|
|
|
// 审查事项名称
|
|
|
matterName: undefined,
|
|
|
+ // 左侧显示类型:true 部门树 false 搜索树
|
|
|
+ stepViewFlag: true,
|
|
|
// 是否前置问题部分
|
|
|
preQuestionPart: false,
|
|
|
// 是否材料部分
|
|
@@ -128,6 +151,8 @@ export default {
|
|
|
currMatterPrintInfo: {},
|
|
|
// 当前选中的审查事项问题选项情况
|
|
|
currMaterial: {},
|
|
|
+ // 搜索事项数据
|
|
|
+ searchMatterList: [],
|
|
|
defaultProps: {
|
|
|
children: 'children',
|
|
|
label: 'deptName',
|
|
@@ -241,6 +266,51 @@ export default {
|
|
|
this.currMatterQuestion = questionData ? questionData : {}
|
|
|
});
|
|
|
},
|
|
|
+ /** 查询事项 **/
|
|
|
+ handleSearchClick() {
|
|
|
+ if (!this.matterName) {
|
|
|
+ this.stepViewFlag = true
|
|
|
+ return
|
|
|
+ }
|
|
|
+ listMatterAll({
|
|
|
+ itemName: this.matterName
|
|
|
+ }).then(response => {
|
|
|
+ const matterData = response.data
|
|
|
+ this.stepViewFlag = false
|
|
|
+ if (matterData.length == 0) {
|
|
|
+ this.searchMatterList = []
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let deptTree = []
|
|
|
+ matterData.forEach(data => {
|
|
|
+ let newItem = {
|
|
|
+ id: data.dept.deptId,
|
|
|
+ deptName: data.dept.deptName,
|
|
|
+ children: []
|
|
|
+ }
|
|
|
+ let matterItem = data
|
|
|
+ matterItem.isMatter = true
|
|
|
+ matterItem.leaf = true
|
|
|
+ // 查找或创建部门项
|
|
|
+ let deptItem = this.findOrCreateDeptItem(deptTree, newItem)
|
|
|
+ // 检查部门项的子项中是否已存在该事项项
|
|
|
+ if (!deptItem.children.find(child => child.id === matterItem.id)) {
|
|
|
+ // 不存在则添加到子项中
|
|
|
+ deptItem.children.push(matterItem)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.searchMatterList = deptTree
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /** 数据判重 **/
|
|
|
+ findOrCreateDeptItem(deptTree, newItem) {
|
|
|
+ let deptItem = deptTree.find(item => item.id === newItem.id)
|
|
|
+ if (!deptItem) {
|
|
|
+ deptItem = newItem
|
|
|
+ deptTree.push(deptItem)
|
|
|
+ }
|
|
|
+ return deptItem
|
|
|
+ },
|
|
|
/** 打印材料事件 **/
|
|
|
handleMaterialPrint() {
|
|
|
let printContent = document.getElementById('print_material').innerHTML;
|