From 41d50b20c975faeaa9e5277bdcff13b5acecb575 Mon Sep 17 00:00:00 2001 From: qushaowei <qushaowei@163.com> Date: 星期三, 13 十二月 2023 16:57:37 +0800 Subject: [PATCH] Merge branch 'master' of http://117.34.109.166:18448/r/vue_mdc_430 into develop --- src/views/system/modules/SelectDeviceModal.vue | 527 +++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 340 insertions(+), 187 deletions(-) diff --git a/src/views/system/modules/SelectDeviceModal.vue b/src/views/system/modules/SelectDeviceModal.vue index 6d8ace1..f91e1d4 100644 --- a/src/views/system/modules/SelectDeviceModal.vue +++ b/src/views/system/modules/SelectDeviceModal.vue @@ -1,228 +1,369 @@ <template> <div> - <a-modal - centered + <a-drawer :title="title" - :width="1000" :visible="visible" + width="650" @ok="handleOk" - @cancel="handleCancel" - cancelText="鍏抽棴"> + @close="handleCancel" + > - <!-- 鏌ヨ鍖哄煙 --> - <div class="table-page-search-wrapper"> - <a-form layout="inline" @keyup.enter.native="searchQuery"> - <a-row :gutter="24"> + <!--<!– 鏌ヨ鍖哄煙 –>--> + <!--<div class="table-page-search-wrapper">--> + <!--<a-form layout="inline" @keyup.enter.native="searchQuery">--> + <!--<a-row :gutter="24">--> - <a-col :span="10"> - <a-form-item label="璁惧鍚嶇О"> - <a-input placeholder="璇疯緭鍏ヨ澶囧悕绉�" v-model="queryParam.equipmentName"></a-input> - </a-form-item> - </a-col> - <a-col :span="8"> - <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> - <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> - <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> - </span> - </a-col> + <!--<a-col :span="10">--> + <!--<a-form-item label="璁惧鍚嶇О">--> + <!--<a-input placeholder="璇疯緭鍏ヨ澶囧悕绉�" v-model="queryParam.equipmentName"></a-input>--> + <!--</a-form-item>--> + <!--</a-col>--> + <!--<a-col :span="8">--> + <!--<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">--> + <!--<a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>--> + <!--<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>--> + <!--</span>--> + <!--</a-col>--> - </a-row> + <!--</a-row>--> + <!--</a-form>--> + <!--</div>--> + <!--<!– table鍖哄煙-begin –>--> + <!--<div>--> + <!--<a-table--> + <!--size="small"--> + <!--bordered--> + <!--rowKey="equipmentId"--> + <!--:columns="columns1"--> + <!--:dataSource="dataSource1"--> + <!--:pagination="ipagination"--> + <!--:loading="loading"--> + <!--:scroll="{ y: 240 }"--> + <!--:rowSelection="{selectedRowKeys: selectedRowKeys,onSelectAll:onSelectAll,onSelect:onSelect,onChange: onSelectChange}"--> + <!--@change="handleTableChange">--> + <!--</a-table>--> + <!--</div>--> + <!--<!– table鍖哄煙-end –>--> + + <a-spin :spinning="loading"> + <!-- showLine --> + <a-form> + <a-form-item label="杞﹂棿灞傜骇锛�"> + <a-tree showLine ref="tree" :expandedKeys.sync="expandedKeys" + :treeData="treeDataSource" checkable @check="onCheck" v-model="checkedKeys" + @expand="onExpand"> + </a-tree> + </a-form-item> </a-form> + + </a-spin> + + + <div class="drawer-bottom-button"> + <a-dropdown + style="float: left" + :trigger="['click']" + placement="topCenter" + > + <a-menu slot="overlay"> + <a-menu-item key="1" @click="expandAll">灞曞紑鎵�鏈�</a-menu-item> + <a-menu-item key="2" @click="closeAll">鍚堝苟鎵�鏈�</a-menu-item> + <a-menu-item key="3" @click="refreshTree">鍒锋柊</a-menu-item> + </a-menu> + <a-button> + 鏍戞搷浣� + <a-icon type="up"/> + </a-button> + </a-dropdown> + <a-popconfirm title="纭畾鏀惧純缂栬緫锛�" @confirm="handleCancel" okText="纭畾" cancelText="鍙栨秷"> + <a-button style="margin-right: .8rem">鍏抽棴</a-button> + </a-popconfirm> + <a-button + @click="handleOk" + type="primary" + >纭畾 + </a-button> </div> - <!-- table鍖哄煙-begin --> - <div> - <a-table - size="small" - bordered - rowKey="equipmentId" - :columns="columns1" - :dataSource="dataSource1" - :pagination="ipagination" - :loading="loading" - :scroll="{ y: 240 }" - :rowSelection="{selectedRowKeys: selectedRowKeys,onSelectAll:onSelectAll,onSelect:onSelect,onChange: onSelectChange}" - @change="handleTableChange"> - </a-table> - </div> - <!-- table鍖哄煙-end --> - </a-modal> + + </a-drawer> </div> </template> <script> - import { filterObj } from '@/utils/util' - import { getAction } from '@/api/manage' + // import { filterObj } from '@/utils/util' + // import { getAction } from '@/api/manage' + import { + getAction, + postAction, + deleteAction + } from '@/api/manage' + import BaseTree from '@/views/mdc/common/BaseTree' + import DepartTree from '@/views/mdc/base/modules/DepartList/DepartListTree/DepartTree' + import { mapActions } from 'vuex' export default { name: 'SelectDeviceModal', + components: { + BaseTree, DepartTree + }, + props: { + editDisable: { + type: Boolean, + default() { + return true + } + }, + title: { + type: String + } + }, data() { return { - title: '娣诲姞宸叉湁璁惧', - names: [], - visible: false, - placement: 'right', - description: '', - // 鏌ヨ鏉′欢 - queryParam: {}, - // 琛ㄥご - columns1: [ - { - title: '#', - dataIndex: '', - key: 'rowIndex', - width: 50, - align: 'center', - customRender: function(t, r, index) { - return parseInt(index) + 1 - } - }, - { - title: '璁惧缂栧彿', - align: 'center', - width: 100, - dataIndex: 'equipmentId' - }, - { - title: '璁惧鍚嶇О', - align: 'center', - width: 100, - dataIndex: 'equipmentName' - }, - { - title: '璁惧绫诲瀷', - align: 'center', - width: 100, - dataIndex: 'equipmentType' - }, - { - title: '椹卞姩绫诲瀷', - align: 'center', - width: 100, - dataIndex: 'driveType' - } - ], - //鏁版嵁闆� - dataSource1: [], - dataSource2: [], - // 鍒嗛〉鍙傛暟 - ipagination: { - current: 1, - pageSize: 10, - pageSizeOptions: ['10', '20', '30'], - showTotal: (total, range) => { - return range[0] + '-' + range[1] + ' 鍏�' + total + '鏉�' - }, - showQuickJumper: true, - showSizeChanger: true, - total: 0 - }, + cardLoading: false, loading: false, - selectedRowKeys: [], - selectedRows: [], + treeDataSource: [], + expandedKeys: [], + checkedKeys: [], url: { - list: '/mdc/mdcEquipment/list' - } + getBaseTree: '/mdc/mdcEquipment/queryTreeListByProduction' + }, + dataList: [], + allTreeKeys: [], + visible: false, + dataSource: [] + + // names: [], + // placement: 'right', + // description: '', + // // 鏌ヨ鏉′欢 + // queryParam: {}, + // // 琛ㄥご + // columns1: [ + // { + // title: '#', + // dataIndex: '', + // key: 'rowIndex', + // width: 50, + // align: 'center', + // customRender: function(t, r, index) { + // return parseInt(index) + 1 + // } + // }, + // { + // title: '璁惧缂栧彿', + // align: 'center', + // width: 100, + // dataIndex: 'equipmentId' + // }, + // { + // title: '璁惧鍚嶇О', + // align: 'center', + // width: 100, + // dataIndex: 'equipmentName' + // }, + // { + // title: '璁惧绫诲瀷', + // align: 'center', + // width: 100, + // dataIndex: 'equipmentType' + // }, + // { + // title: '椹卞姩绫诲瀷', + // align: 'center', + // width: 100, + // dataIndex: 'driveType' + // } + // ], + // //鏁版嵁闆� + // dataSource1: [], + // dataSource2: [], + // // 鍒嗛〉鍙傛暟 + // ipagination: { + // current: 1, + // pageSize: 10, + // pageSizeOptions: ['10', '20', '30'], + // showTotal: (total, range) => { + // return range[0] + '-' + range[1] + ' 鍏�' + total + '鏉�' + // }, + // showQuickJumper: true, + // showSizeChanger: true, + // total: 0 + // }, + // loading: false, + // selectedRowKeys: [], + // selectedRows: [], + // url: { + // list: '/mdc/mdcEquipment/list' + // }, + // activeKey: '1', + // isDepartType: '' } }, created() { - this.loadData() + // this.loadData() + this.queryTreeData() + this.closeAll() }, methods: { - searchQuery() { - this.loadData(1) + ...mapActions(['QueryProduction']), + + onExpand(expandedKeys) { + this.expandedKeys = expandedKeys + this.autoExpandParent = false }, - searchReset() { - this.queryParam = {} - this.loadData(1) + + queryTreeData() { + this.loading = true + this.cardLoading = true + this.QueryProduction().then(res => { + if (res.success) { + this.dataList = [] + this.allTreeKeys = [] + this.getTreeDataSouce(res.result) + this.treeDataSource = res.result + this.generateList(this.treeDataSource) + console.log('treeDataSource', this.treeDataSource) + this.expandedKeys = this.allTreeKeys + } else { + this.$message.warn(res.message) + } + }).finally(() => { + this.loading = false + this.cardLoading = false + }) + }, + + generateList(data) { + for (let i = 0; i < data.length; i++) { + const node = data[i] + const key = node.key + const title = node.title + this.dataList.push({ + key, + title: title + }) + this.allTreeKeys.push(key) + if (node.children) { + this.generateList(node.children) + } + } + }, + + getTreeDataSouce(data) { + data.forEach(item => { + if (item.children && item.children.length > 0) { + this.getTreeDataSouce(item.children) + } + item.key = item.equipmentId ? item.equipmentId : item.key + item.value = item.equipmentId ? item.equipmentId : item.value + }) + }, + expandAll() { + this.expandedKeys = this.allTreeKeys + }, + closeAll() { + this.expandedKeys = ['-1'] + }, + refreshTree() { + this.queryTreeData() + }, + onCheck(value, obj) { + this.checkedKeys = value + console.log('obj,', obj) + this.deviceNodes = obj.checkedNodes.filter(item => item.data.props.equipmentId).map(item => item.data.props.equipmentId) + console.log(this.deviceNodes) }, handleCancel() { this.visible = false }, handleOk() { - this.dataSource2 = this.selectedRowKeys - console.log('data---------' + this.dataSource2) - if (this.dataSource2.length > 0) { - this.$emit('selectFinished', this.dataSource2) - } + this.$emit('selectFinished', this.deviceNodes) this.visible = false - }, - add() { - this.visible = true - }, - loadData(arg) { - //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭 - if (arg === 1) { - this.ipagination.current = 1 - } - var params = this.getQueryParams()//鏌ヨ鏉′欢 - getAction(this.url.list, params).then((res) => { - if (res.success) { - this.dataSource1 = res.result.records - this.ipagination.total = res.result.total - } - }) - }, - getQueryParams() { - var param = Object.assign({}, this.queryParam, this.isorter) - param.field = this.getQueryField() - param.pageNo = this.ipagination.current - param.pageSize = this.ipagination.pageSize - return filterObj(param) - }, - getQueryField() { - //TODO 瀛楁鏉冮檺鎺у埗 - }, - onSelectAll(selected, selectedRows, changeRows) { - if (selected === true) { - for (var a = 0; a < changeRows.length; a++) { - this.dataSource2.push(changeRows[a]) - } - } else { - for (var b = 0; b < changeRows.length; b++) { - this.dataSource2.splice(this.dataSource2.indexOf(changeRows[b]), 1) - } - } - // console.log(selected, selectedRows, changeRows); - }, - onSelect(record, selected) { - console.log(this.selectedRowKeys) - if (selected === true) { - this.dataSource2.push(record) - } else { - var index = this.dataSource2.indexOf(record) - //console.log(); - if (index >= 0) { - this.dataSource2.splice(this.dataSource2.indexOf(record), 1) - } - } - }, - onSelectChange(selectedRowKeys, selectedRows) { - console.log('selectedRowKeys', selectedRowKeys) - this.selectedRowKeys = selectedRowKeys - this.selectionRows = selectedRows - }, - onClearSelected() { - this.selectedRowKeys = [] - this.selectionRows = [] - }, - handleDelete: function(record) { - this.dataSource2.splice(this.dataSource2.indexOf(record), 1) - }, - handleTableChange(pagination, filters, sorter) { - //鍒嗛〉銆佹帓搴忋�佺瓫閫夊彉鍖栨椂瑙﹀彂 - console.log(sorter) - //TODO 绛涢�� - if (Object.keys(sorter).length > 0) { - this.isorter.column = sorter.field - this.isorter.order = 'ascend' == sorter.order ? 'asc' : 'desc' - } - this.ipagination = pagination - this.loadData() } + + // add() { + // this.visible = true + // }, + // loadData(arg) { + // //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭 + // if (arg === 1) { + // this.ipagination.current = 1 + // } + // var params = this.getQueryParams()//鏌ヨ鏉′欢 + // getAction(this.url.list, params).then((res) => { + // if (res.success) { + // this.dataSource1 = res.result.records + // this.ipagination.total = res.result.total + // } + // }) + // }, + // getQueryParams() { + // var param = Object.assign({}, this.queryParam, this.isorter) + // param.field = this.getQueryField() + // param.pageNo = this.ipagination.current + // param.pageSize = this.ipagination.pageSize + // return filterObj(param) + // }, + // getQueryField() { + // //TODO 瀛楁鏉冮檺鎺у埗 + // }, + // onSelectAll(selected, selectedRows, changeRows) { + // if (selected === true) { + // for (var a = 0; a < changeRows.length; a++) { + // this.dataSource2.push(changeRows[a]) + // } + // } else { + // for (var b = 0; b < changeRows.length; b++) { + // this.dataSource2.splice(this.dataSource2.indexOf(changeRows[b]), 1) + // } + // } + // // console.log(selected, selectedRows, changeRows); + // }, + // onSelect(record, selected) { + // console.log(this.selectedRowKeys) + // if (selected === true) { + // this.dataSource2.push(record) + // } else { + // var index = this.dataSource2.indexOf(record) + // //console.log(); + // if (index >= 0) { + // this.dataSource2.splice(this.dataSource2.indexOf(record), 1) + // } + // } + // }, + // onSelectChange(selectedRowKeys, selectedRows) { + // console.log('selectedRowKeys', selectedRowKeys) + // this.selectedRowKeys = selectedRowKeys + // this.selectionRows = selectedRows + // }, + // onClearSelected() { + // this.selectedRowKeys = [] + // this.selectionRows = [] + // }, + // handleDelete: function(record) { + // this.dataSource2.splice(this.dataSource2.indexOf(record), 1) + // }, + // handleTableChange(pagination, filters, sorter) { + // //鍒嗛〉銆佹帓搴忋�佺瓫閫夊彉鍖栨椂瑙﹀彂 + // console.log(sorter) + // //TODO 绛涢�� + // if (Object.keys(sorter).length > 0) { + // this.isorter.column = sorter.field + // this.isorter.order = 'ascend' == sorter.order ? 'asc' : 'desc' + // } + // this.ipagination = pagination + // this.loadData() + // }, + + } } </script> <style lang="less" scoped> + /deep/ .ant-modal { + /*transform-origin: 337px 50px;*/ + } + .ant-card-body .table-operator { margin-bottom: 18px; } @@ -253,4 +394,16 @@ height: 90% !important; overflow-y: hidden } + + .drawer-bottom-button { + position: absolute; + bottom: 0; + width: 100%; + border-top: 1px solid #e8e8e8; + padding: 10px 16px; + text-align: right; + left: 0; + background: #fff; + border-radius: 0 0 2px 2px; + } </style> \ No newline at end of file -- Gitblit v1.9.3