|
@@ -1,152 +1,152 @@
|
|
|
-<!--<template>-->
|
|
|
-<!-- <div>-->
|
|
|
-<!-- <!– <a-input-search style="margin-bottom: 8px" placeholder="输入名称回车查询" @search="filterNode" /> –>-->
|
|
|
-<!-- <a-tree-->
|
|
|
-<!-- v-if="shipOptions.length > 0"-->
|
|
|
-<!-- :tree-data="shipOptions"-->
|
|
|
-<!-- :replaceFields="replaceFields"-->
|
|
|
-<!-- :default-expanded-keys="expandedKeys"-->
|
|
|
-<!-- :expanded-keys="expandedKeys"-->
|
|
|
-<!-- :auto-expand-parent="autoExpandParent"-->
|
|
|
-<!-- showIcon-->
|
|
|
-<!-- @select="handleNodeClick"-->
|
|
|
-<!-- @expand="onExpand"-->
|
|
|
-<!-- >-->
|
|
|
-<!-- </a-tree></div>-->
|
|
|
-<!--</template>-->
|
|
|
-<!--<script>-->
|
|
|
-<!-- import allIcon from '@/core/icons'-->
|
|
|
-<!--const getParentKey = (id, tree) => {-->
|
|
|
-<!-- let parentKey-->
|
|
|
-<!-- for (let i = 0; i < tree.length; i++) {-->
|
|
|
-<!-- const node = tree[i]-->
|
|
|
-<!-- if (node.children) {-->
|
|
|
-<!-- if (node.children.some(item => item.id === id)) {-->
|
|
|
-<!-- parentKey = node.id-->
|
|
|
-<!-- } else if (getParentKey(id, node.children)) {-->
|
|
|
-<!-- parentKey = getParentKey(id, node.children)-->
|
|
|
-<!-- }-->
|
|
|
-<!-- }-->
|
|
|
-<!-- }-->
|
|
|
-<!-- return parentKey-->
|
|
|
-<!--}-->
|
|
|
-<!--export default {-->
|
|
|
-<!-- name: 'ShipTree',-->
|
|
|
-<!-- props: {-->
|
|
|
-<!-- shipOptions: {-->
|
|
|
-<!-- type: Array,-->
|
|
|
-<!-- required: true-->
|
|
|
-<!-- },-->
|
|
|
-<!-- defalutExpandedKeys: {-->
|
|
|
-<!-- type: Array-->
|
|
|
-<!-- }-->
|
|
|
-<!-- },-->
|
|
|
-<!-- components: {-->
|
|
|
-<!-- allIcon-->
|
|
|
-<!-- },-->
|
|
|
-<!-- data () {-->
|
|
|
-<!-- return {-->
|
|
|
-<!-- expandedKeys: this.defalutExpandedKeys,-->
|
|
|
-<!-- oldShipOptions: [], // 记录查询前数据结构-->
|
|
|
-<!-- oldExpandedKeys: [],-->
|
|
|
-<!-- allIcon,-->
|
|
|
-<!-- replaceFields: { children: 'children', key: 'id', title: 'shipNanme' },-->
|
|
|
-<!-- shipNodes: [],-->
|
|
|
-<!-- searchValue: '',-->
|
|
|
-<!-- autoExpandParent: true-->
|
|
|
-<!-- }-->
|
|
|
-<!-- },-->
|
|
|
-<!-- filters: {-->
|
|
|
-<!-- },-->
|
|
|
-<!-- created () {-->
|
|
|
-<!-- },-->
|
|
|
-<!-- computed: {-->
|
|
|
-<!-- },-->
|
|
|
-<!-- watch: {-->
|
|
|
-<!-- },-->
|
|
|
-<!-- methods: {-->
|
|
|
-<!-- getAllShipNode (nodes) {-->
|
|
|
-<!-- if (!nodes || nodes.length === 0) {-->
|
|
|
-<!-- return []-->
|
|
|
-<!-- }-->
|
|
|
-<!-- nodes.forEach(node => {-->
|
|
|
-<!-- this.shipNodes.push({ id: node.id, label: node.label })-->
|
|
|
-<!-- return this.getAllShipNode(node.children)-->
|
|
|
-<!-- })-->
|
|
|
-<!-- },-->
|
|
|
-<!-- getExpandedKeys (nodes) {-->
|
|
|
-<!-- if (!nodes || nodes.length === 0) {-->
|
|
|
-<!-- return []-->
|
|
|
-<!-- }-->
|
|
|
-<!-- // 最后一层不展开-->
|
|
|
-<!-- nodes.forEach(node => {-->
|
|
|
-<!-- this.shipNodes.push(node.id)-->
|
|
|
-<!-- return this.getExpandedKeys(node.children)-->
|
|
|
-<!-- })-->
|
|
|
-<!-- },-->
|
|
|
-<!-- // 筛选节点-->
|
|
|
-<!-- filterNode (value, e) {-->
|
|
|
-<!-- if (this.oldShipOptions.length === 0) {-->
|
|
|
-<!-- this.oldShipOptions = this.shipOptions-->
|
|
|
-<!-- this.oldExpandedKeys = this.expandedKeys-->
|
|
|
-<!-- }-->
|
|
|
-<!-- if (value.trim() === '') {-->
|
|
|
-<!-- // 触发父页面设置树数据-->
|
|
|
-<!-- this.$emit('setDataOptionInfo', this.oldShipOptions)-->
|
|
|
-<!-- Object.assign(this, {-->
|
|
|
-<!-- expandedKeys: this.oldExpandedKeys,-->
|
|
|
-<!-- searchValue: value,-->
|
|
|
-<!-- autoExpandParent: true-->
|
|
|
-<!-- })-->
|
|
|
-<!-- } else {-->
|
|
|
-<!-- // const searchInfo = { shipName: value }-->
|
|
|
-<!-- // searchShip(searchInfo).then(response => {-->
|
|
|
-<!-- // // 触发父页面设置树数据-->
|
|
|
-<!-- // this.$emit('setDataOptionInfo', response.data)-->
|
|
|
-<!-- // // this.searchTree(value, response.data)-->
|
|
|
-<!-- // this.getExpandedKeys(response.data)-->
|
|
|
-<!-- // Object.assign(this, {-->
|
|
|
-<!-- // expandedKeys: this.shipNodes,-->
|
|
|
-<!-- // searchValue: value,-->
|
|
|
-<!-- // autoExpandParent: true-->
|
|
|
-<!-- // })-->
|
|
|
-<!-- // this.shipNodes = []-->
|
|
|
-<!-- // })-->
|
|
|
-<!-- }-->
|
|
|
-<!-- },-->
|
|
|
-<!-- // 节点单击事件,-->
|
|
|
-<!-- handleNodeClick (keys, event) {-->
|
|
|
-<!-- this.$emit('select', event.node)-->
|
|
|
-<!-- },-->
|
|
|
-<!-- onExpand (expandedKeys) {-->
|
|
|
-<!-- this.expandedKeys = expandedKeys-->
|
|
|
-<!-- this.autoExpandParent = false-->
|
|
|
-<!-- },-->
|
|
|
-<!-- searchTree (value, options) {-->
|
|
|
-<!-- this.getAllShipNode(options)-->
|
|
|
-<!-- console.log('shipNodes', this.shipNodes)-->
|
|
|
-<!-- const gData = options-->
|
|
|
-<!-- const expandedKeys = this.shipNodes-->
|
|
|
-<!-- .map(item => {-->
|
|
|
-<!-- if (item.label.indexOf(value) > -1) {-->
|
|
|
-<!-- return getParentKey(item.id, gData)-->
|
|
|
-<!-- }-->
|
|
|
-<!-- return null-->
|
|
|
-<!-- })-->
|
|
|
-<!-- .filter((item, i, self) => item && self.indexOf(item) === i)-->
|
|
|
-<!-- Object.assign(this, {-->
|
|
|
-<!-- expandedKeys: expandedKeys,-->
|
|
|
-<!-- searchValue: value,-->
|
|
|
-<!-- autoExpandParent: true-->
|
|
|
-<!-- })-->
|
|
|
-<!-- this.shipNodes = []-->
|
|
|
-<!-- }-->
|
|
|
-<!-- }-->
|
|
|
-<!--}-->
|
|
|
-<!--</script>-->
|
|
|
-<!--<style lang="less">-->
|
|
|
-<!-- .depIcon {-->
|
|
|
-<!-- color: #2f54eb;-->
|
|
|
-<!-- font-size: 20px;-->
|
|
|
-<!-- }-->
|
|
|
-<!--</style>-->
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <!-- <a-input-search style="margin-bottom: 8px" placeholder="输入名称回车查询" @search="filterNode" /> -->
|
|
|
+ <a-tree
|
|
|
+ v-if="shipOptions.length > 0"
|
|
|
+ :tree-data="shipOptions"
|
|
|
+ :replaceFields="replaceFields"
|
|
|
+ :default-expanded-keys="expandedKeys"
|
|
|
+ :expanded-keys="expandedKeys"
|
|
|
+ :auto-expand-parent="autoExpandParent"
|
|
|
+ showIcon
|
|
|
+ @select="handleNodeClick"
|
|
|
+ @expand="onExpand"
|
|
|
+ >
|
|
|
+ </a-tree></div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+ import allIcon from '@/core/icons'
|
|
|
+const getParentKey = (id, tree) => {
|
|
|
+ let parentKey
|
|
|
+ for (let i = 0; i < tree.length; i++) {
|
|
|
+ const node = tree[i]
|
|
|
+ if (node.children) {
|
|
|
+ if (node.children.some(item => item.id === id)) {
|
|
|
+ parentKey = node.id
|
|
|
+ } else if (getParentKey(id, node.children)) {
|
|
|
+ parentKey = getParentKey(id, node.children)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return parentKey
|
|
|
+}
|
|
|
+export default {
|
|
|
+ name: 'ShipTree',
|
|
|
+ props: {
|
|
|
+ shipOptions: {
|
|
|
+ type: Array,
|
|
|
+ required: true
|
|
|
+ },
|
|
|
+ defalutExpandedKeys: {
|
|
|
+ type: Array
|
|
|
+ }
|
|
|
+ },
|
|
|
+ components: {
|
|
|
+ allIcon
|
|
|
+ },
|
|
|
+ data () {
|
|
|
+ return {
|
|
|
+ expandedKeys: this.defalutExpandedKeys,
|
|
|
+ oldShipOptions: [], // 记录查询前数据结构
|
|
|
+ oldExpandedKeys: [],
|
|
|
+ allIcon,
|
|
|
+ replaceFields: { children: 'children', key: 'id', title: 'shipNanme' },
|
|
|
+ shipNodes: [],
|
|
|
+ searchValue: '',
|
|
|
+ autoExpandParent: true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ filters: {
|
|
|
+ },
|
|
|
+ created () {
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ getAllShipNode (nodes) {
|
|
|
+ if (!nodes || nodes.length === 0) {
|
|
|
+ return []
|
|
|
+ }
|
|
|
+ nodes.forEach(node => {
|
|
|
+ this.shipNodes.push({ id: node.id, label: node.label })
|
|
|
+ return this.getAllShipNode(node.children)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getExpandedKeys (nodes) {
|
|
|
+ if (!nodes || nodes.length === 0) {
|
|
|
+ return []
|
|
|
+ }
|
|
|
+ // 最后一层不展开
|
|
|
+ nodes.forEach(node => {
|
|
|
+ this.shipNodes.push(node.id)
|
|
|
+ return this.getExpandedKeys(node.children)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 筛选节点
|
|
|
+ filterNode (value, e) {
|
|
|
+ if (this.oldShipOptions.length === 0) {
|
|
|
+ this.oldShipOptions = this.shipOptions
|
|
|
+ this.oldExpandedKeys = this.expandedKeys
|
|
|
+ }
|
|
|
+ if (value.trim() === '') {
|
|
|
+ // 触发父页面设置树数据
|
|
|
+ this.$emit('setDataOptionInfo', this.oldShipOptions)
|
|
|
+ Object.assign(this, {
|
|
|
+ expandedKeys: this.oldExpandedKeys,
|
|
|
+ searchValue: value,
|
|
|
+ autoExpandParent: true
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ // const searchInfo = { shipName: value }
|
|
|
+ // searchShip(searchInfo).then(response => {
|
|
|
+ // // 触发父页面设置树数据
|
|
|
+ // this.$emit('setDataOptionInfo', response.data)
|
|
|
+ // // this.searchTree(value, response.data)
|
|
|
+ // this.getExpandedKeys(response.data)
|
|
|
+ // Object.assign(this, {
|
|
|
+ // expandedKeys: this.shipNodes,
|
|
|
+ // searchValue: value,
|
|
|
+ // autoExpandParent: true
|
|
|
+ // })
|
|
|
+ // this.shipNodes = []
|
|
|
+ // })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 节点单击事件,
|
|
|
+ handleNodeClick (keys, event) {
|
|
|
+ this.$emit('select', event.node)
|
|
|
+ },
|
|
|
+ onExpand (expandedKeys) {
|
|
|
+ this.expandedKeys = expandedKeys
|
|
|
+ this.autoExpandParent = false
|
|
|
+ },
|
|
|
+ searchTree (value, options) {
|
|
|
+ this.getAllShipNode(options)
|
|
|
+ console.log('shipNodes', this.shipNodes)
|
|
|
+ const gData = options
|
|
|
+ const expandedKeys = this.shipNodes
|
|
|
+ .map(item => {
|
|
|
+ if (item.label.indexOf(value) > -1) {
|
|
|
+ return getParentKey(item.id, gData)
|
|
|
+ }
|
|
|
+ return null
|
|
|
+ })
|
|
|
+ .filter((item, i, self) => item && self.indexOf(item) === i)
|
|
|
+ Object.assign(this, {
|
|
|
+ expandedKeys: expandedKeys,
|
|
|
+ searchValue: value,
|
|
|
+ autoExpandParent: true
|
|
|
+ })
|
|
|
+ this.shipNodes = []
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+<style lang="less">
|
|
|
+ .depIcon {
|
|
|
+ color: #2f54eb;
|
|
|
+ font-size: 20px;
|
|
|
+ }
|
|
|
+</style>
|