From 87c0c5e680d467f2e618c6aa3cd78b7e7faa747d Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期五, 14 二月 2025 15:00:08 +0800 Subject: [PATCH] 设备结构树: 1、实现文档批量删除功能 2、实现文档列表的排序以及筛选功能 3、实现树节点车间与设备的权限配置功能 系统管理:删除DNC部门管理页面以及在菜单管理中删除对应菜单 --- /dev/null | 197 ---------------------------- src/views/dnc/common/DocumentBatchDeleteModal.vue | 17 + src/views/dnc/base/modules/ProductStructure/ProductStructureMainTop.vue | 4 src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue | 17 ++ src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentTableList.vue | 61 ++++++++ src/views/dnc/base/modules/DeviceStructure/Document/HasSentDocumentTableList.vue | 71 +++++++++ 6 files changed, 156 insertions(+), 211 deletions(-) diff --git a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue index b56ba33..debcfd5 100644 --- a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue +++ b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureMainTop.vue @@ -13,6 +13,9 @@ </a-tab-pane> <TableContextMenu :tableRowInfo="currentRightClickedTableRowInfo" ref="tableContextMenuRef"/> + + <DocumentBatchDeleteModal :currentDocumentInfo="currentRightClickedTableRowInfo" :size="tableContainerSize" + @reloadDocumentListData="reloadDocumentListData" ref="documentBatchDeleteModalRef"/> </a-tabs> </template> @@ -21,10 +24,11 @@ import TableContextMenu from '../../../common/TableContextMenu' import HasSentDocumentTableList from './Document/HasSentDocumentTableList' import HasReceivedDocumentTableList from './Document/HasReceivedDocumentTableList' + import DocumentBatchDeleteModal from '../../../common/DocumentBatchDeleteModal' export default { name: 'DeviceStructureMainTop', - components: { HasReceivedDocumentTableList, HasSentDocumentTableList, TableContextMenu }, + components: { DocumentBatchDeleteModal, HasReceivedDocumentTableList, HasSentDocumentTableList, TableContextMenu }, props: { currentTreeNodeInfo: { type: Object @@ -49,7 +53,6 @@ */ handleTableContextMenuOpen(record) { this.currentRightClickedTableRowInfo = Object.assign({}, record) - console.log('currentRightClickedTableRowInfo', this.currentRightClickedTableRowInfo) this.$refs.tableContextMenuRef.currentMenuLevel = record.param this.$refs.tableContextMenuRef.menuStyle.top = event.clientY + 'px' this.$refs.tableContextMenuRef.menuStyle.left = event.clientX + 'px' @@ -162,6 +165,16 @@ }, /** + * 鐐瑰嚮鎵归噺鍒犻櫎鍚庡嚭鐜板脊绐� + * @param modalTitle 寮圭獥鏍囬 + */ + handleBatchRemove(modalTitle) { + if (!this.$refs.documentBatchDeleteModalRef) return + this.$refs.documentBatchDeleteModalRef.title = modalTitle + this.$refs.documentBatchDeleteModalRef.visible = true + }, + + /** * 鍑哄簱褰撳墠鍙抽敭閫変腑鏂囨。 * @param menuLabel */ diff --git a/src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentTableList.vue b/src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentTableList.vue index b4d946f..ee053f4 100644 --- a/src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentTableList.vue +++ b/src/views/dnc/base/modules/DeviceStructure/Document/HasReceivedDocumentTableList.vue @@ -40,12 +40,44 @@ return parseInt(index) + 1 } }, - { title: '鏂囦欢鍚嶇О', dataIndex: 'docName', align: 'center' }, + { + title: '鏂囦欢鍚嶇О', + dataIndex: 'docName', + key: 'docName', + align: 'center', + width: 300, + sorter: true + }, { title: '浠g爜鐗堟湰', dataIndex: 'docAlias', align: 'center' }, - { title: '鍑哄簱鐘舵��', dataIndex: 'pullStatus_dictText', align: 'center' }, - { title: '鐘� 鎬�', dataIndex: 'docStatus_dictText', align: 'center' }, + { + title: '鍑哄簱鐘舵��', + dataIndex: 'pullStatus_dictText', + key: 'pullStatus', + align: 'center', + filters: [ + { text: '鏈嚭搴�', value: 1 }, + { text: '宸插嚭搴�', value: 2 } + ] + }, + { + title: '鐘� 鎬�', + dataIndex: 'docStatus_dictText', + key: 'docStatus', + align: 'center', + filters: [ + { text: '璁捐', value: 1 }, + { text: '鍙戝竷', value: 2 }, + { text: '褰掓。', value: 3 } + ] + }, { title: '绯荤粺鎸囧畾鐗堟湰', dataIndex: 'publishVersion', align: 'center' }, - { title: '涓婁紶鏃堕棿', dataIndex: 'createTime', align: 'center' } + { + title: '鍒涘缓鏃堕棿', + dataIndex: 'createTime', + align: 'center', + width: 200, + sorter: true + } ], dataSource: [], currentRightClickedDocumentInfo: {}, @@ -115,6 +147,27 @@ } }, + /** + * 琛ㄦ牸鍒嗛〉銆佹帓搴忔敼鍙樸�佺瓫閫夋椂瑙﹀彂 + * @param pagination 鍒嗛〉鍣ㄩ�夐」 + * @param filters 绛涢�夐�夐」 + * @param sorter 鎺掑簭閫夐」 + */ + handleTableChange(pagination, filters, sorter) { + if (sorter.order) { + this.isorter.column = sorter.field + this.isorter.order = sorter.order === 'ascend' ? 'asc' : 'desc' + } else { + this.isorter.column = 'createTime' + this.isorter.order = 'desc' + } + for (let key in filters) { + this.filters[key] = filters[key].join(',') + } + this.ipagination = pagination + this.loadData() + }, + handleDocumentEdit(record, modalTitle) { this.$refs.modalForm.edit(record) this.$refs.modalForm.title = modalTitle diff --git a/src/views/dnc/base/modules/DeviceStructure/Document/HasSentDocumentTableList.vue b/src/views/dnc/base/modules/DeviceStructure/Document/HasSentDocumentTableList.vue index 4272858..c517cac 100644 --- a/src/views/dnc/base/modules/DeviceStructure/Document/HasSentDocumentTableList.vue +++ b/src/views/dnc/base/modules/DeviceStructure/Document/HasSentDocumentTableList.vue @@ -40,12 +40,54 @@ return parseInt(index) + 1 } }, - { title: '鏂囦欢鍚嶇О', dataIndex: 'docName', align: 'center' }, + { + title: '鏂囦欢鍚嶇О', + dataIndex: 'docName', + key: 'docName', + align: 'center', + width: 300, + sorter: true + }, { title: '浠g爜鐗堟湰', dataIndex: 'docAlias', align: 'center' }, - { title: '鍑哄簱鐘舵��', dataIndex: 'pullStatus_dictText', align: 'center' }, - { title: '鐘� 鎬�', dataIndex: 'docStatus_dictText', align: 'center' }, + { + title: '鍑哄簱鐘舵��', + dataIndex: 'pullStatus_dictText', + key: 'pullStatus', + align: 'center', + filters: [ + { text: '鏈嚭搴�', value: 1 }, + { text: '宸插嚭搴�', value: 2 } + ] + }, + { + title: '鐘� 鎬�', + dataIndex: 'docStatus_dictText', + key: 'docStatus', + align: 'center', + filters: [ + { text: '璁捐', value: 1 }, + { text: '鍙戝竷', value: 2 }, + { text: '褰掓。', value: 3 } + ] + }, { title: '绯荤粺鎸囧畾鐗堟湰', dataIndex: 'publishVersion', align: 'center' }, - { title: '涓婁紶鏃堕棿', dataIndex: 'createTime', align: 'center' } + { + title: '鍚屾鐘舵��', + dataIndex: 'syncStatus_dictText', + key: 'syncStatus', + align: 'center', + filters: [ + { text: '鏈悓姝�', value: 1 }, + { text: '宸插悓姝�', value: 2 } + ] + }, + { + title: '鍒涘缓鏃堕棿', + dataIndex: 'createTime', + align: 'center', + width: 200, + sorter: true + } ], dataSource: [], currentRightClickedDocumentInfo: {}, @@ -115,6 +157,27 @@ } }, + /** + * 琛ㄦ牸鍒嗛〉銆佹帓搴忔敼鍙樸�佺瓫閫夋椂瑙﹀彂 + * @param pagination 鍒嗛〉鍣ㄩ�夐」 + * @param filters 绛涢�夐�夐」 + * @param sorter 鎺掑簭閫夐」 + */ + handleTableChange(pagination, filters, sorter) { + if (sorter.order) { + this.isorter.column = sorter.field + this.isorter.order = sorter.order === 'ascend' ? 'asc' : 'desc' + } else { + this.isorter.column = 'createTime' + this.isorter.order = 'desc' + } + for (let key in filters) { + this.filters[key] = filters[key].join(',') + } + this.ipagination = pagination + this.loadData() + }, + handleDocumentEdit(record, modalTitle) { this.$refs.modalForm.edit(record) this.$refs.modalForm.title = modalTitle diff --git a/src/views/dnc/base/modules/ProductStructure/ProductStructureMainTop.vue b/src/views/dnc/base/modules/ProductStructure/ProductStructureMainTop.vue index b0fecf4..7551d6b 100644 --- a/src/views/dnc/base/modules/ProductStructure/ProductStructureMainTop.vue +++ b/src/views/dnc/base/modules/ProductStructure/ProductStructureMainTop.vue @@ -146,6 +146,10 @@ }) }, + /** + * 鐐瑰嚮鎵归噺鍒犻櫎鍚庡嚭鐜板脊绐� + * @param modalTitle 寮圭獥鏍囬 + */ handleBatchRemove(modalTitle) { if (!this.$refs.documentBatchDeleteModalRef) return this.$refs.documentBatchDeleteModalRef.title = modalTitle diff --git a/src/views/dnc/common/DocumentBatchDeleteModal.vue b/src/views/dnc/common/DocumentBatchDeleteModal.vue index 36180b6..f4fee17 100644 --- a/src/views/dnc/common/DocumentBatchDeleteModal.vue +++ b/src/views/dnc/common/DocumentBatchDeleteModal.vue @@ -83,7 +83,7 @@ filters: [ { text: '鏈嚭搴�', value: 1 }, { text: '宸插嚭搴�', value: 2 } - ], + ] }, { title: '鐘� 鎬�', @@ -94,7 +94,7 @@ { text: '璁捐', value: 1 }, { text: '鍙戝竷', value: 2 }, { text: '褰掓。', value: 3 } - ], + ] }, { title: '绯荤粺鎸囧畾鐗堟湰', dataIndex: 'publishVersion', align: 'center', width: 200 }, { @@ -183,7 +183,7 @@ // 纭鎵归噺鍒犻櫎鏂囨。 confirmBatchDeleteDocument() { const that = this - const { selectedRowKeys, $notification, $confirm, currentDocumentInfo: { param, attributionId } } = that + const { selectedRowKeys, $notification, $confirm, currentDocumentInfo: { param, attributionId, attributionType } } = that if (selectedRowKeys.length === 0) { $notification.warning({ @@ -201,8 +201,17 @@ onOk: () => { let hasRequestedSuccessCount = 0 let hasRequestedCount = 0 + let method + let queryParam selectedRowKeys.forEach(key => { - dncApi.deleteDocumentApi(key) + if (attributionType !== 4) { + method = dncApi.deleteDocumentApi + queryParam = key + } else { + method = dncApi.deleteDeviceRelativeDocumentApi + queryParam = { docId: key, attributionId } + } + method(queryParam) .then(res => { if (res.success) { $notification.success({ diff --git a/src/views/system/DncDepartmentList.vue b/src/views/system/DncDepartmentList.vue deleted file mode 100644 index e9cc243..0000000 --- a/src/views/system/DncDepartmentList.vue +++ /dev/null @@ -1,634 +0,0 @@ -<template xmlns:background-color="http://www.w3.org/1999/xhtml"> - <a-row :gutter="10"> - <a-col :md="12" :sm="24"> - <a-card :bordered="false"> - - <!-- 鎸夐挳鎿嶄綔鍖哄煙 --> - <a-row style="margin-left: 14px"> - <a-button @click="handleAdd(1)" type="primary">娣诲姞閮ㄩ棬</a-button> - <a-button @click="handleAdd(2)" type="primary">娣诲姞涓嬬骇</a-button> -<!-- <a-button title="鍒犻櫎澶氭潯鏁版嵁" @click="batchDel" type="default">鎵归噺鍒犻櫎</a-button>--> - <!--<a-button @click="refresh" type="default" icon="reload" :loading="loading">鍒锋柊</a-button>--> - </a-row> - <div style="background: #fff;padding-left:16px;height: 100%; margin-top: 5px"> - <a-alert type="info" :showIcon="true"> - <div slot="message"> - 褰撳墠閫夋嫨锛�<span v-if="this.currSelected.title">{{ getCurrSelectedTitle() }}</span> - <a v-if="this.currSelected.title" style="margin-left: 10px" @click="onClearSelected">鍙栨秷閫夋嫨</a> - </div> - </a-alert> - <a-input-search @search="onSearch" style="width:100%;margin-top: 10px" placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"/> - <!-- 鏍�--> - <a-col :md="10" :sm="24"> - <template> - <a-dropdown :trigger="[this.dropTrigger]" @visibleChange="dropStatus"> - <span style="user-select: none"> - <a-tree - checkable - multiple - @select="onSelect" - @check="onCheck" - @rightClick="rightHandle" - :selectedKeys="selectedKeys" - :checkedKeys="checkedKeys" - :treeData="departTree" - :checkStrictly="checkStrictly" - :expandedKeys="iExpandedKeys" - :autoExpandParent="autoExpandParent" - @expand="onExpand"/> - </span> - <!--鏂板鍙抽敭鐐瑰嚮浜嬩欢,鍜屽鍔犳坊鍔犲拰鍒犻櫎鍔熻兘--> - <a-menu slot="overlay"> - <a-menu-item @click="handleAdd(3)" key="1">娣诲姞</a-menu-item> - <a-menu-item @click="handleDelete" key="2">鍒犻櫎</a-menu-item> - <a-menu-item @click="closeDrop" key="3">鍙栨秷</a-menu-item> - </a-menu> - </a-dropdown> - </template> - </a-col> - </div> - </a-card> - <!---- author:os_chengtgen -- date:20190827 -- for:鍒囨崲鐖跺瓙鍕鹃�夋ā寮� =======------> - <div class="drawer-bootom-button"> - <a-dropdown :trigger="['click']" placement="topCenter"> - <a-menu slot="overlay"> - <a-menu-item key="1" @click="switchCheckStrictly(1)">鐖跺瓙鍏宠仈</a-menu-item> - <a-menu-item key="2" @click="switchCheckStrictly(2)">鍙栨秷鍏宠仈</a-menu-item> - <a-menu-item key="3" @click="checkALL">鍏ㄩ儴鍕鹃��</a-menu-item> - <a-menu-item key="4" @click="cancelCheckALL">鍙栨秷鍏ㄩ��</a-menu-item> - <a-menu-item key="5" @click="expandAll">灞曞紑鎵�鏈�</a-menu-item> - <a-menu-item key="6" @click="closeAll">鍚堝苟鎵�鏈�</a-menu-item> - </a-menu> - <a-button> - 鏍戞搷浣� <a-icon type="up" /> - </a-button> - </a-dropdown> - </div> - <!---- author:os_chengtgen -- date:20190827 -- for:鍒囨崲鐖跺瓙鍕鹃�夋ā寮� =======------> - </a-col> - <a-col :md="12" :sm="24"> - <a-tabs defaultActiveKey="1"> - <a-tab-pane tab="鍩烘湰淇℃伅" key="1" > - <a-card :bordered="false" v-if="selectedKeys.length>0"> - <a-form-model ref="form" :model="model" :rules="validatorRules"> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="departName" label="鏈烘瀯鍚嶇О"> - <a-input placeholder="璇疯緭鍏ユ満鏋�/閮ㄩ棬鍚嶇О" v-model="model.departName" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="涓婄骇閮ㄩ棬"> - <a-tree-select - style="width:100%" - :dropdownStyle="{maxHeight:'200px',overflow:'auto'}" - :treeData="treeData" - :disabled="disable" - v-model="model.parentId" - placeholder="鏃�"> - </a-tree-select> - </a-form-model-item> - <!--<a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orgCode" label="鏈烘瀯缂栫爜">--> - <!--<a-input disabled placeholder="璇疯緭鍏ユ満鏋勭紪鐮�" v-model="model.orgCode" />--> - <!--</a-form-model-item>--> - <!--<a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orgCategory" label="鏈烘瀯绫诲瀷">--> - <!--<template v-if="orgCategoryDisabled">--> - <!--<a-radio-group v-model="model.orgCategory" placeholder="璇烽�夋嫨鏈烘瀯绫诲瀷">--> - <!--<a-radio value="1">--> - <!--鍏徃--> - <!--</a-radio>--> - <!--</a-radio-group>--> - <!--</template>--> - <!--<template v-else>--> - <!--<a-radio-group v-model="model.orgCategory" placeholder="璇烽�夋嫨鏈烘瀯绫诲瀷">--> - <!--<a-radio value="2">--> - <!--閮ㄩ棬--> - <!--</a-radio>--> - <!--<a-radio value="3">--> - <!--宀椾綅--> - <!--</a-radio>--> - <!--</a-radio-group>--> - <!--</template>--> - <!--</a-form-model-item>--> - <!--<a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="閮ㄩ棬璐熻矗浜�">--> - <!--<j-select-multi-user v-model="model.directorUserIds" valueKey="id"></j-select-multi-user>--> - <!--</a-form-model-item>--> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎺掑簭"> - <a-input-number v-model="model.priority" /> - </a-form-model-item> - <!--<a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎵嬫満鍙�" prop="mobile">--> - <!--<a-input placeholder="璇疯緭鍏ユ墜鏈哄彿" v-model="model.mobile" />--> - <!--</a-form-model-item>--> - <!--<a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍦板潃">--> - <!--<a-input placeholder="璇疯緭鍏ュ湴鍧�" v-model="model.address"/>--> - <!--</a-form-model-item>--> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="澶囨敞"> - <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.description"/> - </a-form-model-item> - </a-form-model> - <div class="anty-form-btn"> - <a-button @click="emptyCurrForm" type="default" htmlType="button" icon="sync">閲嶇疆</a-button> - <a-button @click="submitCurrForm" type="primary" htmlType="button" icon="form">淇濆瓨</a-button> - </div> - </a-card> - <a-card v-else > - <a-empty> - <span slot="description"> 璇峰厛閫夋嫨涓�涓儴闂�! </span> - </a-empty> - </a-card> - </a-tab-pane> - <a-tab-pane tab="閮ㄩ棬鏉冮檺" key="2" forceRender> - <DepartMentAuthModal ref="departAuth"/> - </a-tab-pane> - </a-tabs> - - </a-col> - <DncDepartmentModal ref="DncDepartmentModal" @ok="loadTree"></DncDepartmentModal> - </a-row> -</template> -<script> - import {queryDepartTreeList, searchByKeywords, deleteByDepartId} from '@/api/api' - import { httpAction, deleteAction, getAction } from '@/api/manage' - import {JeecgListMixin} from '@/mixins/JeecgListMixin' - import DncDepartmentModal from './modules/DncDepartmentModal' - import DepartMentAuthModal from './modules/DepartMentAuthModal' - import Vue from 'vue' - // 琛ㄥご - const columns = [ - { - title: '鏈烘瀯鍚嶇О', - dataIndex: 'departName' - }, - { - title: '鏈烘瀯绫诲瀷', - align: 'center', - dataIndex: 'orgType' - }, - { - title: '鏈烘瀯缂栫爜', - dataIndex: 'orgCode', - }, - { - title: '鎵嬫満鍙�', - dataIndex: 'mobile' - }, - { - title: '浼犵湡', - dataIndex: 'fax' - }, - { - title: '鍦板潃', - dataIndex: 'address' - }, - { - title: '鎺掑簭', - align: 'center', - dataIndex: 'departOrder' - }, - { - title: '鎿嶄綔', - align: 'center', - dataIndex: 'action', - scopedSlots: {customRender: 'action'} - } - ] - export default { - name: 'DepartList', - mixins: [JeecgListMixin], - components: { - DncDepartmentModal, - DepartMentAuthModal - }, - data() { - return { - iExpandedKeys: [], - loading: false, - autoExpandParent: true, - currFlowId: '', - currFlowName: '', - disable: true, - treeData: [], - visible: false, - departTree: [], - rightClickSelectedKey: '', - rightClickSelectedOrgCode: '', - hiding: true, - model: {}, - dropTrigger: '', - depart: {}, - columns: columns, - disableSubmit: false, - checkedKeys: [], - selectedKeys: [], - autoIncr: 1, - currSelected: {}, - allTreeKeys:[], - checkStrictly: true, - labelCol: { - xs: {span: 24}, - sm: {span: 5} - }, - wrapperCol: { - xs: {span: 24}, - sm: {span: 16} - }, - graphDatasource: { - nodes: [], - edges: [] - }, - validatorRules: { - departName: [{required: true, message: '璇疯緭鍏ユ満鏋�/閮ㄩ棬鍚嶇О!'}], - orgCode: [{required: true, message: '璇疯緭鍏ユ満鏋勭紪鐮�!'}], - orgCategory:[{required: true, message: '璇烽�夋嫨鏈烘瀯绫诲瀷!'}], - mobile: Vue.prototype.rules.mobile2 - }, - url: { - tree:"/ucenter/depart/queryTreeList", - delete: '/ucenter/depart/delete', - edit: '/ucenter/depart/edit', - deleteBatch: '/sys/sysDepart/deleteBatch', - searchBy:'/ucenter/depart/searchBy', - }, - orgCategoryDisabled:false, - oldDirectorUserIds:"" - } - }, - computed: { - importExcelUrl: function () { - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; - } - }, - methods: { - loadData() { - this.refresh(); - }, - loadTree() { - var that = this - that.treeData = [] - that.departTree = [] - //淇敼鎺ュ彛 - getAction(this.url.tree).then((res) => { - if (res.success) { - //閮ㄩ棬鍏ㄩ�夊悗锛屽啀娣诲姞閮ㄩ棬锛岄�変腑鏁伴噺澧炲 - this.allTreeKeys = []; - for (let i = 0; i < res.result.length; i++) { - let temp = res.result[i] - that.treeData.push(temp) - that.departTree.push(temp) - that.setThisExpandedKeys(temp) - that.getAllKeys(temp); - // console.log(temp.id) - } - this.loading = false - } - }) - }, - setThisExpandedKeys(node) { - if (node.children && node.children.length > 0) { - this.iExpandedKeys.push(node.key) - for (let a = 0; a < node.children.length; a++) { - this.setThisExpandedKeys(node.children[a]) - } - } - }, - refresh() { - this.loading = true - this.loadTree() - }, - // 鍙抽敭鎿嶄綔鏂规硶 - rightHandle(node) { - this.dropTrigger = 'contextmenu' - console.log(node.node.eventKey) - this.rightClickSelectedKey = node.node.eventKey - this.rightClickSelectedOrgCode = node.node.dataRef.orgCode - }, - onExpand(expandedKeys) { - console.log('onExpand', expandedKeys) - this.iExpandedKeys = expandedKeys - this.autoExpandParent = false - }, - backFlowList() { - this.$router.back(-1) - }, - // 鍙抽敭鐐瑰嚮涓嬫媺妗嗘敼鍙樹簨浠� - dropStatus(visible) { - if (visible == false) { - this.dropTrigger = '' - } - }, - // 鍙抽敭涓嬫媺鍏抽棴涓嬫媺妗� - closeDrop() { - this.dropTrigger = '' - }, - addRootNode() { - this.$refs.nodeModal.add(this.currFlowId, '') - }, - batchDel: function () { - console.log(this.checkedKeys) - if (this.checkedKeys.length <= 0) { - this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒') - } else { - var ids = '' - for (var a = 0; a < this.checkedKeys.length; a++) { - ids += this.checkedKeys[a] + ',' - } - var that = this - this.$confirm({ - title: '纭鍒犻櫎', - content: '纭畾瑕佸垹闄ゆ墍閫変腑鐨� ' + this.checkedKeys.length + ' 鏉℃暟鎹紝浠ュ強瀛愯妭鐐规暟鎹悧?', - onOk: function () { - deleteAction(that.url.deleteBatch, {ids: ids}).then((res) => { - if (res.success) { - that.$message.success(res.message) - that.loadTree() - that.onClearSelected() - } else { - that.$message.warning(res.message) - } - }) - } - }) - } - }, - onSearch(value) { - let that = this - if (value) { - getAction(this.url.searchBy,{keyWord: value}).then((res) => { - if (res.success) { - that.departTree = [] - for (let i = 0; i < res.result.length; i++) { - let temp = res.result[i] - that.departTree.push(temp) - } - } else { - that.$message.warning(res.message) - } - }) - } else { - that.loadTree() - } - - }, - nodeModalOk() { - this.loadTree() - }, - nodeModalClose() { - }, - hide() { - console.log(111) - this.visible = false - }, - onCheck(checkedKeys, info) { - console.log('onCheck', checkedKeys, info) - this.hiding = false - //---- author:os_chengtgen -- date:20190827 -- for:鍒囨崲鐖跺瓙鍕鹃�夋ā寮� =======------ - if(this.checkStrictly){ - this.checkedKeys = checkedKeys.checked; - }else{ - this.checkedKeys = checkedKeys - } - //---- author:os_chengtgen -- date:20190827 -- for:鍒囨崲鐖跺瓙鍕鹃�夋ā寮� =======------ - }, - onSelect(selectedKeys, e) { - console.log('selected', selectedKeys, e) - this.hiding = false - let record = e.node.dataRef - console.log('onSelect-record', record) - this.currSelected = Object.assign({}, record) - this.model = this.currSelected - this.selectedKeys = [record.key] - this.model.parentId = record.parentId - this.setValuesToForm(record) - this.$refs.departAuth.show(record.departId); - this.oldDirectorUserIds = record.directorUserIds - - //update-beign-author:taoyan date:20220316 for: VUEN-329銆恇ug銆戜负浠�涔堜笉鏄け鍘荤劍鐐圭殑鏃跺�欙紝瑙﹀彂鎵嬫満鍙锋牎楠� - this.$nextTick(()=>{ - this.$refs.form.validateField('mobile') - }) - //update-end-author:taoyan date:20220316 for: VUEN-329銆恇ug銆戜负浠�涔堜笉鏄け鍘荤劍鐐圭殑鏃跺�欙紝瑙﹀彂鎵嬫満鍙锋牎楠� - }, - // 瑙﹀彂onSelect浜嬩欢鏃�,涓洪儴闂ㄦ爲鍙充晶鐨刦orm琛ㄥ崟璧嬪�� - setValuesToForm(record) { - if(record.orgCategory == '1'){ - this.orgCategoryDisabled = true; - }else{ - this.orgCategoryDisabled = false; - } - }, - getCurrSelectedTitle() { - return !this.currSelected.title ? '' : this.currSelected.title - }, - onClearSelected() { - this.hiding = true - this.checkedKeys = [] - this.currSelected = {} - this.selectedKeys = [] - this.$refs.departAuth.departId = '' - }, - handleNodeTypeChange(val) { - this.currSelected.nodeType = val - }, - notifyTriggerTypeChange(value) { - this.currSelected.notifyTriggerType = value - }, - receiptTriggerTypeChange(value) { - this.currSelected.receiptTriggerType = value - }, - submitCurrForm() { - this.$refs.form.validate(valid => { - if (valid) { - if (!this.currSelected.departId) { - this.$message.warning('璇风偣鍑婚�夋嫨瑕佷慨鏀归儴闂�!') - return - } - - //update-begin---author:wangshuai ---date:20200308 for锛歔JTC-119]鍦ㄩ儴闂ㄧ鐞嗚彍鍗曚笅璁剧疆閮ㄩ棬璐熻矗浜� - this.currSelected.oldDirectorUserIds = this.oldDirectorUserIds - //update-end---author:wangshuai ---date:20200308 for锛歔JTC-119]鍦ㄩ儴闂ㄧ鐞嗚彍鍗曚笅璁剧疆閮ㄩ棬璐熻矗浜� - httpAction(this.url.edit+'/'+this.currSelected.departId, this.currSelected, 'put').then((res) => { - if (res.success) { - this.$message.success('淇濆瓨鎴愬姛!') - this.loadTree() - } else { - this.$message.error(res.message) - } - }) - } - }) - }, - emptyCurrForm() { - this.$refs.form.resetFields(); - this.model={} - }, - nodeSettingFormSubmit() { - this.$refs.form.validate(valid => { - if (valid) { - console.log('Received values of form: ', this.model) - } - }) - }, - openSelect() { - this.$refs.sysDirectiveModal.show() - }, - handleAdd(num) { - if (num == 1) { - this.$refs.DncDepartmentModal.add() - this.$refs.DncDepartmentModal.title = '鏂板' - } else if (num == 2) { - let key = this.currSelected.key - if (!key) { - this.$message.warning('璇峰厛鐐瑰嚮閫変腑涓婄骇閮ㄩ棬锛�') - return false - } - this.$refs.DncDepartmentModal.add(this.selectedKeys) - this.$refs.DncDepartmentModal.title = '鏂板' - } else { - this.$refs.DncDepartmentModal.add(this.rightClickSelectedKey) - this.$refs.DncDepartmentModal.title = '鏂板' - } - }, - handleDelete() { - var that = this - this.$confirm({ - title: '纭鍒犻櫎', - content: '纭畾瑕佸垹闄ゆ閮ㄩ棬浠ュ強瀛愯妭鐐规暟鎹悧?', - onOk: function () { - deleteAction(that.url.delete,{id: that.rightClickSelectedKey}).then((resp) => { - if (resp.success) { - //鍒犻櫎鎴愬姛鍚庯紝鍘婚櫎宸查�変腑涓殑鏁版嵁 - that.checkedKeys.splice(that.checkedKeys.findIndex(key => key === that.rightClickSelectedKey), 1); - that.$message.success('鍒犻櫎鎴愬姛!') - that.loadTree() - //鍒犻櫎鍚庡悓姝ユ竻绌哄彸渚у熀鏈俊鎭唴瀹� - let orgCode=that.model.orgCode; - if(orgCode && orgCode === that.rightClickSelectedOrgCode){ - that.onClearSelected() - } - } else { - that.$message.warning(resp.message) - } - }) - } - }) - }, - selectDirectiveOk(record) { - console.log('閫変腑鎸囦护鏁版嵁', record) - this.nodeSettingForm.setFieldsValue({directiveCode: record.directiveCode}) - this.currSelected.sysCode = record.sysCode - }, - getFlowGraphData(node) { - this.graphDatasource.nodes.push({ - id: node.id, - text: node.flowNodeName - }) - if (node.children.length > 0) { - for (let a = 0; a < node.children.length; a++) { - let temp = node.children[a] - this.graphDatasource.edges.push({ - source: node.id, - target: temp.id - }) - this.getFlowGraphData(temp) - } - } - }, - //---- author:os_chengtgen -- date:20190827 -- for:鍒囨崲鐖跺瓙鍕鹃�夋ā寮� =======------ - expandAll () { - this.iExpandedKeys = this.allTreeKeys - }, - closeAll () { - this.iExpandedKeys = [] - }, - checkALL () { - this.checkStriccheckStrictlytly = false - this.checkedKeys = this.allTreeKeys - }, - cancelCheckALL () { - //this.checkedKeys = this.defaultCheckedKeys - this.checkedKeys = [] - }, - switchCheckStrictly (v) { - if(v==1){ - this.checkStrictly = false - }else if(v==2){ - this.checkStrictly = true - } - }, - getAllKeys(node) { - // console.log('node',node); - this.allTreeKeys.push(node.key) - if (node.children && node.children.length > 0) { - for (let a = 0; a < node.children.length; a++) { - this.getAllKeys(node.children[a]) - } - } - } - //---- author:os_chengtgen -- date:20190827 -- for:鍒囨崲鐖跺瓙鍕鹃�夋ā寮� =======------ - - }, - created() { - this.currFlowId = this.$route.params.id - this.currFlowName = this.$route.params.name - // this.loadTree() - }, - - } -</script> -<style scoped> - .ant-card-body .table-operator { - margin: 15px; - } - - .anty-form-btn { - width: 100%; - text-align: center; - } - - .anty-form-btn button { - margin: 0 5px; - } - - .anty-node-layout .ant-layout-header { - padding-right: 0 - } - - .header { - padding: 0 8px; - } - - .header button { - margin: 0 3px - } - - .ant-modal-cust-warp { - height: 100% - } - - .ant-modal-cust-warp .ant-modal-body { - height: calc(100% - 110px) !important; - overflow-y: auto - } - - .ant-modal-cust-warp .ant-modal-content { - height: 90% !important; - overflow-y: hidden - } - - #app .desktop { - height: auto !important; - } - - /** Button鎸夐挳闂磋窛 */ - .ant-btn { - margin-left: 3px - } - - .drawer-bootom-button { - /*position: absolute;*/ - bottom: 0; - width: 100%; - border-top: 1px solid #e8e8e8; - padding: 10px 16px; - text-align: left; - left: 0; - background: #fff; - border-radius: 0 0 2px 2px; - } -</style> \ No newline at end of file diff --git a/src/views/system/modules/DepartMentAuthModal.vue b/src/views/system/modules/DepartMentAuthModal.vue deleted file mode 100644 index d629a37..0000000 --- a/src/views/system/modules/DepartMentAuthModal.vue +++ /dev/null @@ -1,200 +0,0 @@ -<template> - <a-card :bordered="false"> - <template v-if="this.departId"> - <a-spin :spinning="loading"> - <a-form> - <a-form-item label='鎵�鎷ユ湁鐨勬潈闄�'> - <a-tree - checkable - @check="onCheck" - :checkedKeys="checkedKeys" - :treeData="treeData" - @expand="onExpand" - @select="onTreeNodeSelect" - :selectedKeys="selectedKeys" - :expandedKeys="expandedKeysss" - :checkStrictly="checkStrictly" - style="height:500px;overflow: auto;"> - <span slot="hasDatarule" slot-scope="{slotTitle,ruleFlag}"> - {{ slotTitle }} - <a-icon v-if="ruleFlag" type="align-left" style="margin-left:5px;color: red;"></a-icon> - </span> - </a-tree> - </a-form-item> - </a-form> - </a-spin> - <div class="anty-form-btn"> - <a-dropdown style="float: left" :trigger="['click']" placement="topCenter"> - <a-menu slot="overlay"> - <!-- 绠�鍖朤ree閫昏緫锛屼娇鐢ㄩ粯璁heckStrictly涓篺alse鐨勮涓猴紝鍗抽粯璁ょ埗瀛愬叧鑱� - <a-menu-item key="1" @click="switchCheckStrictly(1)">鐖跺瓙鍏宠仈</a-menu-item> - <a-menu-item key="2" @click="switchCheckStrictly(2)">鍙栨秷鍏宠仈</a-menu-item> - --> - <a-menu-item key="3" @click="checkALL">鍏ㄩ儴鍕鹃��</a-menu-item> - <a-menu-item key="4" @click="cancelCheckALL">鍙栨秷鍏ㄩ��</a-menu-item> - <a-menu-item key="5" @click="expandAll">灞曞紑鎵�鏈�</a-menu-item> - <a-menu-item key="6" @click="closeAll">鍚堝苟鎵�鏈�</a-menu-item> - </a-menu> - <a-button> - 鏍戞搷浣� <a-icon type="up" /> - </a-button> - </a-dropdown> - <a-button style="float: right" @click="handleSubmit" type="primary" htmlType="button" icon="form">淇濆瓨</a-button> - </div> - </template> - <a-card v-else :bordered="false" style="height:200px"> - <a-empty> - <span slot="description"> 璇峰厛閫夋嫨涓�涓儴闂�! </span> - </a-empty> - </a-card> - <depart-datarule-modal ref="datarule"/> - </a-card> -</template> - -<script> - import {queryTreeListForRole,queryDepartPermission,saveDepartPermission} from '@/api/api' - import DepartDataruleModal from './DepartDataruleModal' - - export default { - name: 'DepartAuthModal', - components: { DepartDataruleModal }, - data(){ - return { - departId:"", - treeData: [], - defaultCheckedKeys:[], - checkedKeys:[], - halfCheckedKeys:[], - expandedKeysss:[], - allTreeKeys:[], - autoExpandParent: true, - checkStrictly: false, - title:"閮ㄩ棬鏉冮檺閰嶇疆", - visible: false, - loading: false, - selectedKeys:[] - } - }, - methods: { - onTreeNodeSelect(id){ - if(id && id.length>0){ - this.selectedKeys = id - } - this.$refs.datarule.show(this.selectedKeys[0],this.departId) - }, - onCheck (checkedKeys, { halfCheckedKeys }) { - // 淇濆瓨閫変腑鐨勫拰鍗婇�変腑鐨勶紝鍚庨潰淇濆瓨鐨勬椂鍊欏悎骞舵彁浜� - this.checkedKeys = checkedKeys - this.halfCheckedKeys = halfCheckedKeys - }, - show(departId){ - this.departId=departId - this.loadData(); - }, - close () { - this.reset() - this.$emit('close'); - this.visible = false; - }, - onExpand(expandedKeys){ - this.expandedKeysss = expandedKeys; - this.autoExpandParent = false - }, - reset () { - this.expandedKeysss = [] - this.checkedKeys = [] - this.defaultCheckedKeys = [] - this.loading = false - }, - expandAll () { - this.expandedKeysss = this.allTreeKeys - }, - closeAll () { - this.expandedKeysss = [] - }, - checkALL () { - this.checkedKeys = this.allTreeKeys - }, - cancelCheckALL () { - this.checkedKeys = [] - }, - handleCancel () { - this.close() - }, - handleSubmit() { - let that = this; - if(!that.departId){ - this.$message.warning('璇风偣鍑婚�夋嫨涓�涓儴闂�!') - } - let checkedKeys = [...that.checkedKeys, ...that.halfCheckedKeys] - const permissionIds = checkedKeys.join(",") - let params = { - departId:that.departId, - permissionIds, - lastpermissionIds:that.defaultCheckedKeys.join(","), - }; - that.loading = true; - saveDepartPermission(params).then((res)=>{ - if(res.success){ - // that.$message.success(res.message); - that.$notification.warning({ - message:'娑堟伅', - description:res.message - }); - that.loading = false; - that.loadData(); - }else { - // that.$message.error(res.message); - that.$notification.warning({ - message:'娑堟伅', - description:res.message - }); - that.loading = false; - } - }) - }, - convertTreeListToKeyLeafPairs(treeList, keyLeafPair = []) { - for(const {key, isLeaf, children} of treeList) { - keyLeafPair.push({key, isLeaf}) - if(children && children.length > 0) { - this.convertTreeListToKeyLeafPairs(children, keyLeafPair) - } - } - return keyLeafPair; - }, - emptyCurrForm() { - this.form.resetFields() - }, - loadData(){ - this.loading = true; - queryTreeListForRole().then((res) => { - this.treeData = res.result.treeList - this.allTreeKeys = res.result.ids - const keyLeafPairs = this.convertTreeListToKeyLeafPairs(this.treeData) - queryDepartPermission({departId:this.departId}).then((res)=>{ - // 杩囨护鍑� leaf node 鍗冲彲锛屽嵆閫変腑鐨� - // Tree缁勪欢涓璫heckStrictly榛樿涓篺alse鐨勬椂鍊欙紝閫変腑瀛愯妭鐐癸紝鐖惰妭鐐逛細鑷姩璁剧疆閫変腑鎴栧崐閫変腑 - // 淇濆瓨 checkedKeys 浠ュ強 halfCheckedKeys 浠ヤ究浜庢湭鍋氫换浣曟搷浣滄椂鎻愪氦琛ㄥ崟鏁版嵁 - const checkedKeys = [...res.result].filter(key => { - const keyLeafPair = keyLeafPairs.filter(item => item.key === key)[0] - return keyLeafPair && keyLeafPair.isLeaf - }) - const halfCheckedKeys = [...res.result].filter(key => { - const keyLeafPair = keyLeafPairs.filter(item => item.key === key)[0] - return keyLeafPair && !keyLeafPair.isLeaf - }) - this.checkedKeys = [...checkedKeys]; - this.halfCheckedKeys = [...halfCheckedKeys] - this.defaultCheckedKeys = [...halfCheckedKeys, ...checkedKeys]; - this.expandedKeysss = this.allTreeKeys; - this.loading = false; - }) - }) - } - }, - } -</script> - -<style scoped> - -</style> \ No newline at end of file diff --git a/src/views/system/modules/DncDepartmentModal.vue b/src/views/system/modules/DncDepartmentModal.vue deleted file mode 100644 index 40e6fcc..0000000 --- a/src/views/system/modules/DncDepartmentModal.vue +++ /dev/null @@ -1,197 +0,0 @@ -<template> - <a-modal - :title="title" - :width="800" - :ok=false - :visible="visible" - :confirmLoading="confirmLoading" - :okButtonProps="{ props: {disabled: disableSubmit} }" - @ok="handleOk" - @cancel="handleCancel" - cancelText="鍏抽棴"> - - <a-spin :spinning="confirmLoading"> - <a-form-model-item - :labelCol="labelCol" - :wrapperCol="wrapperCol" - label="閮ㄩ棬缂栫爜" - prop="departName" - :hidden="false" - hasFeedback > - <a-input id="departCode" placeholder="璇疯緭鍏ラ儴闂ㄧ紪鐮�" v-model="model.departCode"/> - </a-form-model-item> - - <a-form-model ref="form" :model="model" :rules="validatorRules"> - <a-form-model-item - :labelCol="labelCol" - :wrapperCol="wrapperCol" - label="閮ㄩ棬鍚嶇О" - prop="departName" - :hidden="false" - hasFeedback > - <a-input id="departName" placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" v-model="model.departName"/> - </a-form-model-item> - - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" :hidden="seen" label="涓婄骇閮ㄩ棬" hasFeedback> - <a-tree-select - style="width:100%" - :dropdownStyle="{maxHeight:'200px',overflow:'auto'}" - :treeData="departTree" - v-model="model.parentId" - placeholder="璇烽�夋嫨涓婄骇閮ㄩ棬" - :disabled="condition"> - </a-tree-select> - </a-form-model-item> - <a-form-model-item - :labelCol="labelCol" - :wrapperCol="wrapperCol" - label="鎺掑簭"> - <a-input-number v-model="model.getPriority"/> - </a-form-model-item> - <a-form-model-item - :labelCol="labelCol" - :wrapperCol="wrapperCol" - label="澶囨敞"> - <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.description"/> - </a-form-model-item> - - </a-form-model> - </a-spin> - </a-modal> -</template> - -<script> -import { getAction, httpAction } from '@/api/manage' - import { queryIdTree } from '@/api/api' - import pick from 'lodash.pick' - import ATextarea from 'ant-design-vue/es/input/TextArea' - export default { - name: "SysDepartModal", - components: { ATextarea }, - data () { - return { - departTree:[], - orgTypeData:[], - phoneWarning:'', - departName:"", - departCode:"", - title:"鎿嶄綔", - seen:false, - visible: false, - condition:true, - disableSubmit:false, - model: {}, - defaultModel:{ - getPriority:0, - orgCategory:'1' - }, - menuhidden:false, - menuusing:true, - labelCol: { - xs: { span: 24 }, - sm: { span: 5 }, - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 16 }, - }, - - confirmLoading: false, - validatorRules:{ - departName:[{ required: true, message: '璇疯緭鍏ラ儴闂ㄥ悕绉�!' }], - departCode:[{ required: true, message: '璇疯緭鍏ラ儴闂ㄧ紪鐮�!' }], - mobile: [{validator:this.validateMobile}], - orgCategory:[{required: true, message: '璇疯緭鍏ラ儴闂ㄧ被鍨�!'}] - }, - url: { - tree:"/ucenter/depart/queryTreeList", - add: "/ucenter/depart/add", - }, - dictDisabled:true, - } - }, - created () { - }, - methods: { - loadTreeData(){ - var that = this; - getAction(this.url.tree).then((res) => { - if(res.success){ - that.departTree = []; - for (let i = 0; i < res.result.length; i++) { - let temp = res.result[i]; - that.departTree.push(temp); - } - } - - }) - }, - add (depart) { - if(depart){ - this.seen = false; - this.dictDisabled = false; - }else{ - this.seen = true; - this.dictDisabled = true; - } - this.edit(depart); - }, - edit (record) { - this.visible = true; - this.model = Object.assign({}, this.defaultModel, record) - this.loadTreeData(); - this.model.parentId = record!=null?record.toString():null; - if(this.seen){ - this.model.orgCategory = '1'; - }else{ - this.model.orgCategory = '2'; - } - }, - close () { - this.$emit('close'); - this.disableSubmit = false; - this.visible = false; - this.$refs.form.resetFields(); - }, - handleOk () { - const that = this; - // 瑙﹀彂琛ㄥ崟楠岃瘉 - this.$refs.form.validate(valid => { - if (valid) { - that.confirmLoading = true; - httpAction(this.url.add,this.model,"post").then((res)=>{ - if(res.success){ - that.$message.success(res.message); - that.loadTreeData(); - that.$emit('ok'); - }else{ - that.$message.warning(res.message); - } - }).finally(() => { - that.confirmLoading = false; - that.close(); - }) - - }else{ - return false; - } - }) - }, - handleCancel () { - this.close() - }, - validateMobile(rule,value,callback){ - if (!value || new RegExp(/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/).test(value)){ - callback(); - }else{ - callback("鎮ㄧ殑鎵嬫満鍙风爜鏍煎紡涓嶆纭�!"); - } - - } - } - } -</script> - -<style scoped> - -</style> \ No newline at end of file -- Gitblit v1.9.3