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