From bf2e77248f05798c3f2904fe24416bb75c9e6476 Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期四, 03 七月 2025 17:33:48 +0800 Subject: [PATCH] 设备台账维修班组字段使用后台数据 --- src/views/eam/base/EamRepairDepartList.vue | 613 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 613 insertions(+), 0 deletions(-) diff --git a/src/views/eam/base/EamRepairDepartList.vue b/src/views/eam/base/EamRepairDepartList.vue new file mode 100644 index 0000000..665b4f8 --- /dev/null +++ b/src/views/eam/base/EamRepairDepartList.vue @@ -0,0 +1,613 @@ +<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 type="primary" icon="download" @click="handleExportXls('缁翠慨閮ㄩ棬淇℃伅')">瀵煎嚭</a-button> + <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" + :action="importExcelUrl" @change="handleImportExcel"> + <a-button type="primary" icon="import">瀵煎叆</a-button> + </a-upload> + <a-button @click="handleDelete" v-if="selectedKeys.length>0">鍒犻櫎</a-button> + <a-button title="鍒犻櫎澶氭潯鏁版嵁" @click="batchDel" v-if="checkedKeys.length>0">鎵归噺鍒犻櫎</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"> + <a-tree + checkable + multiple + @select="onSelect" + @check="onCheck" + @rightClick="rightHandle" + :selectedKeys="selectedKeys" + :checkedKeys="checkedKeys" + :treeData="departTree" + :checkStrictly="checkStrictly" + :expandedKeys="iExpandedKeys" + :autoExpandParent="autoExpandParent" + @expand="onExpand"/> + </a-col> + </div> + </a-card> + <!---- author:os_chengtgen -- date:20190827 -- for:鍒囨崲鐖跺瓙鍕鹃�夋ā寮� =======------> + <div class="drawer-bottom-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="departCode" label="缁翠慨閮ㄩ棬缂栧彿"> + <a-input placeholder="璇疯緭鍏ヤ骇绾�/缁翠慨閮ㄩ棬缂栧彿" v-model="model.departCode"/> + </a-form-model-item> + <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" label="鎺掑簭"> + <a-input-number v-model="model.departOrder"/> + </a-form-model-item> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="澶囨敞"> + <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.memo"/> + </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-tabs> + + </a-col> + <eam-repair-depart-modal ref="departModal" @ok="loadTree"></eam-repair-depart-modal> + </a-row> +</template> +<script> +import { queryRepairDepartTreeList, queryRepDepIdTree, deleteByRepairDepartId } from '@api/api' +import { httpAction, deleteAction } from '@api/manage' +import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import EamRepairDepartModal from './modules/EamRepairDepartModal' + + export default { + name: 'EamRepairDepartList', + mixins: [JeecgListMixin], + components: { + EamRepairDepartModal + }, + data() { + return { + iExpandedKeys: [], + loading: false, + autoExpandParent: true, + currFlowId: '', + currFlowName: '', + disable: true, + treeData: [], + visible: false, + departTree: [], + rightClickSelectedKey: '', + rightClickSelectedOrgCode: '', + hiding: true, + model: {}, + dropTrigger: '', + depart: {}, + 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: '璇疯緭鍏ヤ骇绾�/缁翠慨閮ㄩ棬鍚嶇О!' }] + }, + url: { + delete: '/eam/eamBaseRepairDepart/delete', + edit: '/eam/eamBaseRepairDepart/edit', + deleteBatch: '/eam/eamBaseRepairDepart/deleteBatch', + exportXlsUrl: '/eam/eamBaseRepairDepart/exportXls', + importExcelUrl: '/eam/eamBaseRepairDepart/importExcel' + }, + orgCategoryDisabled: false, + isIncludesNotLeaf: false + } + }, + computed: { + importExcelUrl: function() { + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` + } + }, + methods: { + loadData() { + this.refresh() + }, + loadTree() { + var that = this + that.treeData = [] + that.departTree = [] + queryRepairDepartTreeList().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({ event, node }) { + this.dropTrigger = 'contextmenu' + const record = node.dataRef + this.rightClickSelectedKey = record.id + this.rightClickSelected = record + this.rightClickSelectedOrgCode = record.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) + this.isIncludesNotLeaf = false + this.includesNotLeaf(this.departTree) + console.log('isIncludesNotLeaf', this.isIncludesNotLeaf) + + // 涓簍rue鍒欒〃绀洪�変腑椤瑰寘鍚潪鍙跺瓙缁撶偣 false鍒欒〃绀洪�変腑椤瑰潎涓哄彾瀛愮粨鐐� + if (!this.isIncludesNotLeaf) { + if (this.checkedKeys.length <= 0) { + // this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒') + this.$notification.warning({ + message: '娑堟伅', + description: '璇烽�夋嫨涓�鏉¤褰�' + }) + } 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.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.loadTree() + that.onClearSelected() + } else { + // that.$message.warning(res.message) + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }) + } + }) + } + } else { + this.$notification.warning({ + message: '娑堟伅', + description: '閫変腑椤瑰寘鍚凡鎸傝浇瀛愯妭鐐圭淮淇儴闂�' + }) + } + }, + includesNotLeaf(treeData) { + for (let i = 0; i < treeData.length; i++) { + if (!treeData[i].leaf) { + this.includesNotLeaf(treeData[i].children) + } + if (this.checkedKeys.includes(treeData[i].id) && !treeData[i].leaf) { + this.isIncludesNotLeaf = true + } + } + }, + onSearch(value) { + let that = this + if (value) { + queryRepDepIdTree({ 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) + that.$notification.warning({ + message: '娑堟伅', + description: 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 + this.deleteTrigger = 'leftClick' + 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.id) + }, + // 瑙﹀彂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.id) { + // this.$message.warning('璇风偣鍑婚�夋嫨瑕佷慨鏀圭淮淇儴闂�!') + this.$notification.warning({ + message: '娑堟伅', + description: '璇风偣鍑婚�夋嫨瑕佷慨鏀圭淮淇儴闂紒' + }) + return + } + + httpAction(this.url.edit, this.currSelected, 'put').then((res) => { + if (res.success) { + // this.$message.success('淇濆瓨鎴愬姛!') + this.$notification.success({ + message: '娑堟伅', + description: '淇濆瓨鎴愬姛' + }) + this.loadTree() + } else { + // this.$message.error(res.message) + this.$notification.warning({ + message: '娑堟伅', + description: 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.departModal.add() + this.$refs.departModal.title = '鏂板' + } else if (num == 2) { + console.log(this.currSelected) + let key = this.currSelected.key + if (!key) { + // this.$message.warning('璇峰厛鐐瑰嚮閫変腑涓婄骇缁翠慨閮ㄩ棬锛�') + this.$notification.warning({ + message: '娑堟伅', + description: '璇峰厛鐐瑰嚮閫変腑涓婄骇缁翠慨閮ㄩ棬锛�' + }) + return false + } + this.$refs.departModal.add(this.selectedKeys) + this.$refs.departModal.title = '鏂板' + } else { + this.$refs.departModal.add(this.rightClickSelectedKey) + this.$refs.departModal.title = '鏂板' + } + }, + handleDelete() { + var that = this + if (this.currSelected.leaf) { + this.$confirm({ + title: '纭鍒犻櫎', + content: `纭畾瑕佸垹闄� ${that.currSelected.departName} 鍚�?`, + onOk: function() { + deleteByRepairDepartId({ id: that.currSelected.id }).then((resp) => { + if (resp.success) { + //鍒犻櫎鎴愬姛鍚庯紝鍘婚櫎宸查�変腑涓殑鏁版嵁 + // that.checkedKeys.splice(that.checkedKeys.findIndex(key => key === that.rightClickSelectedKey), 1) + // that.$message.success('鍒犻櫎鎴愬姛!') + that.$notification.success({ + message: '娑堟伅', + description: '鍒犻櫎鎴愬姛' + }) + that.loadTree() + //鍒犻櫎鍚庡悓姝ユ竻绌哄彸渚у熀鏈俊鎭唴瀹� + // let orgCode=that.model.orgCode; + // if(orgCode && orgCode === that.rightClickSelectedOrgCode){ + that.onClearSelected() + // } + } else { + // that.$message.warning('鍒犻櫎澶辫触!') + that.$notification.warning({ + message: '娑堟伅', + description: '鍒犻櫎澶辫触' + }) + } + }) + } + }) + } else { + this.$notification.warning({ + message: '娑堟伅', + description: '姝ょ淮淇儴闂ㄥ凡鎸傝浇瀛愯妭鐐�' + }) + } + console.log('deletedRecord', deletedRecord) + }, + 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 + } + + /** Button鎸夐挳闂磋窛 */ + .ant-btn { + margin-left: 3px + } + + .drawer-bottom-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 -- Gitblit v1.9.3