From 90044289b992e5df6506c70b1e9bb299df321869 Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期三, 21 五月 2025 16:22:20 +0800
Subject: [PATCH] 1、全局加载名称调整为MDC智慧车间 2、消息确认页面调整设备异常反馈功能

---
 public/index.html                                                                    |    2 
 src/views/mdc/base/MdcMessageconfirmationList.vue                                    |  141 ++++++++------
 src/views/mdc/base/modules/MdcMessageApproval/SelectDeviceDrawer-SingleSelection.vue |  240 ++++++++++++++++++++++++++
 src/views/mdc/base/modules/MdcMessageApproval/MdcMessageApprovalModal.vue            |  101 ++++++++---
 4 files changed, 393 insertions(+), 91 deletions(-)

diff --git a/public/index.html b/public/index.html
index 0645826..8eff331 100644
--- a/public/index.html
+++ b/public/index.html
@@ -251,7 +251,7 @@
     <div id="loader"></div>
     <div class="loader-section section-left"></div>
     <div class="loader-section section-right"></div>
-    <div class="load_title">姝e湪鍔犺浇缁熻鍒嗘瀽,璇疯�愬績绛夊緟
+    <div class="load_title">姝e湪鍔犺浇MDC鏅烘収杞﹂棿,璇疯�愬績绛夊緟
 
     </div>
   </div>
diff --git a/src/views/mdc/base/MdcMessageconfirmationList.vue b/src/views/mdc/base/MdcMessageconfirmationList.vue
index f619525..6ccacad 100644
--- a/src/views/mdc/base/MdcMessageconfirmationList.vue
+++ b/src/views/mdc/base/MdcMessageconfirmationList.vue
@@ -5,30 +5,46 @@
       <a-form layout="inline" @keyup.enter.native="searchQuery">
         <a-row :gutter="24">
 
-          <a-col :span="6">
+          <a-col :span="4">
             <a-form-item label="璁惧缂栧彿">
               <a-input placeholder="璇疯緭鍏ヨ澶囩紪鍙�" v-model="queryParam.equipmentId"></a-input>
             </a-form-item>
           </a-col>
-          <a-col :span="6">
+          <a-col :span="4">
             <a-form-item label="娑堟伅鐘舵��">
-              <a-select v-model='queryParam.msgStatus' placeholder="璇烽�夋嫨娑堟伅鐘舵��">
-                <a-select-option v-for="item in msgStatusOptionList" :key="item.value" :value="item.value">
-                  {{item.title}}
-                </a-select-option>
+              <j-dict-select-tag dictCode="mdcMsgStatus" v-model='queryParam.msgStatus' placeholder="璇烽�夋嫨娑堟伅鐘舵��"/>
+            </a-form-item>
+          </a-col>
+
+          <a-col :span="4">
+            <a-form-item label="寮傚父绫诲瀷">
+              <j-dict-select-tag dictCode="mdcMsgType" v-model='queryParam.msgType' placeholder="璇烽�夋嫨寮傚父绫诲瀷"/>
+            </a-form-item>
+          </a-col>
+
+          <a-col :span="4">
+            <a-form-item label="娑堟伅鏉ユ簮">
+              <a-select v-model="queryParam.msgSource" placeholder="璇烽�夋嫨娑堟伅鏉ユ簮">
+                <a-select-option key="鎵嬪姩涓婃姤">鎵嬪姩涓婃姤</a-select-option>
+                <a-select-option key="绯荤粺鐢熸垚">绯荤粺鐢熸垚</a-select-option>
               </a-select>
             </a-form-item>
           </a-col>
 
-          <a-col :span="8">
-            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+          <a-col :span="6">
+            <a-space>
               <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-button type="primary" @click="searchReset" icon="reload">閲嶇疆</a-button>
+            </a-space>
           </a-col>
 
         </a-row>
       </a-form>
+    </div>
+
+    <!-- 鎿嶄綔鎸夐挳鍖哄煙路 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button>
     </div>
 
     <a-table
@@ -42,11 +58,10 @@
       :loading="loading"
       @change="handleTableChange">
       <span slot="action" slot-scope="text, record">
-        <a @click="showModal(record,0)">鏌ョ湅</a>
+        <a @click="showModal(record,1)">鏌ョ湅</a>
         <a-divider type="vertical" v-if="record.hasProcess||record.hasConfirm"></a-divider>
-        <a @click="showModal(record,1)" v-if="record.hasProcess">涓婃姤</a>
-        <a-divider type="vertical" v-if="record.hasConfirm&&record.hasProcess"></a-divider>
-        <a @click="showModal(record,2)" v-if="record.hasConfirm">纭</a>
+        <a @click="showModal(record,2)" v-if="record.hasProcess">涓婃姤</a>
+        <a @click="showModal(record,3)" v-if="record.hasConfirm">纭</a>
         <!--<a @click="showModal(record,0)">鏌ョ湅</a>-->
         <!--<a-divider type="vertical"></a-divider>-->
         <!--<a @click="showModal(record,1)">涓婃姤</a>-->
@@ -54,7 +69,8 @@
         <!--<a @click="showModal(record,2)">纭</a>-->
       </span>
     </a-table>
-    <mdc-message-approval-modal ref="modalRef" :title="modalTitle" :visible="modalVisible" :buttonId="buttonId"
+    <mdc-message-approval-modal ref="modalForm" :title="modalTitle" :visible="modalVisible" :buttonId="buttonId"
+                                :disableSubmit="disableSubmit"
                                 @closeModal="modalVisible = false" @formHasSubmitted="loadData"/>
   </a-card>
 </template>
@@ -75,53 +91,63 @@
         queryParam: {},
         columns: [
           {
+            title: '娑堟伅鏉ユ簮',
+            align: 'center',
+            dataIndex: 'msgSource',
+            width: 150
+          },
+          {
             title: '璁惧缂栧彿',
             align: 'center',
-            dataIndex: 'equipmentId'
+            dataIndex: 'equipmentId',
+            width: 150
+          },
+          {
+            title: '寮傚父绫诲瀷',
+            align: 'center',
+            dataIndex: 'msgType',
+            width: 150
           },
           {
             title: '鏍囬',
             align: 'center',
             dataIndex: 'titile'
-          }, {
+          },
+          {
             title: '鍐呭',
             align: 'center',
-            dataIndex: 'msgContent',
-            width: 450
-          }, {
+            dataIndex: 'msgContent'
+          },
+          {
             title: '鍘熷洜',
             align: 'center',
-            dataIndex: 'reportContent',
-            width: 450
-          }, {
-            title: '澶勭悊浜�',
+            dataIndex: 'reportContent'
+          },
+          {
+            title: '鍙嶉浜�',
             align: 'center',
-            dataIndex: 'senderNames'
-          }, {
+            dataIndex: 'senderNames',
+            width: 120
+          },
+          {
             title: '纭浜�',
             align: 'center',
-            dataIndex: 'approverNames'
-          }, {
+            dataIndex: 'approverNames',
+            width: 120
+          },
+          {
             title: '鐘舵��',
             align: 'center',
-            dataIndex: 'msgStatus',
-            customRender: function(text) {
-              if (text == '0') {
-                return '寰呭鐞�'
-              } else if (text == '1') {
-                return '寰呯‘璁�'
-              } else if (text == '2') {
-                return '宸茬‘璁�'
-              } else {
-                return '宸叉嫆缁�'
-              }
-            }
-          }, {
+            dataIndex: 'msgStatus_dictText',
+            width: 120,
+          },
+          {
             title: '鎿嶄綔',
             dataIndex: 'action',
             align: 'center',
             scopedSlots: { customRender: 'action' }
-          }],
+          }
+        ],
         url: {
           list: '/mdc/mdcMessageApproval/list'
         },
@@ -129,25 +155,17 @@
         msgStatusOptionList: [],
         modalTitle: '',
         modalVisible: false,
+        disableSubmit: false,
         buttonId: null
       }
     },
-    created() {
-      this.initDictData('mdcMsgStatus')
-    },
     methods: {
-      /**
-       * 璋冪敤鎺ュ彛鑾峰彇鏁版嵁瀛楀吀閰嶇疆msgStatus
-       * @param dictCode 鏁版嵁瀛楀吀缂栧彿
-       */
-      initDictData(dictCode) {
-        //鏍规嵁瀛楀吀Code, 鍒濆鍖栧瓧鍏告暟缁�
-        ajaxGetDictItems(dictCode, null).then((res) => {
-          if (res.success) {
-            console.log('res================', res)
-            this.msgStatusOptionList = res.result
-          }
-        })
+      handleAdd() {
+        this.modalTitle = '鏂板'
+        this.buttonId = null
+        this.disableSubmit = false
+        this.$refs.modalForm.formParams = {}
+        this.modalVisible = true
       },
 
       /**
@@ -157,20 +175,21 @@
        */
       showModal(record, buttonId) {
         this.buttonId = buttonId
+        this.disableSubmit = true
         switch (buttonId) {
-          case 0:
+          case 1:
             this.modalTitle = '娑堟伅鍐呭'
             break
-          case 1:
+          case 2:
             this.modalTitle = '涓婃姤鍘熷洜'
             break
-          case 2:
+          case 3:
             this.modalTitle = '纭娑堟伅'
             break
           default:
             this.modalTitle = '娑堟伅鍐呭'
         }
-        this.$refs.modalRef.formParams = Object.assign({}, record)
+        this.$refs.modalForm.formParams = Object.assign({}, record)
         this.modalVisible = true
       }
     }
diff --git a/src/views/mdc/base/modules/MdcMessageApproval/MdcMessageApprovalModal.vue b/src/views/mdc/base/modules/MdcMessageApproval/MdcMessageApprovalModal.vue
index 30d9cbf..b6e0511 100644
--- a/src/views/mdc/base/modules/MdcMessageApproval/MdcMessageApprovalModal.vue
+++ b/src/views/mdc/base/modules/MdcMessageApproval/MdcMessageApprovalModal.vue
@@ -4,28 +4,32 @@
            @cancel="closeModal"
            :visible="visible"
            :footer="null">
-    <a-spin :spinning="confirmLoading">
-      <a-form-model ref="form" :form="form" :model="formParams" :rules="validatorRules">
-        <a-form-model-item label="璁惧缂栧彿" :labelCol="{span: 4}" :wrapperCol="{span: 8}">
-          <a-input v-model="formParams.equipmentId" disabled></a-input>
+    <a-spin :spinning="spinning">
+      <a-form-model ref="form" :form="form" :model="formParams" :rules="validatorRules" :labelCol="{span: 4}"
+                    :wrapperCol="{span: 20}">
+        <a-form-model-item label="璁惧缂栧彿" :labelCol="{span: 4}" :wrapperCol="{span: 10}" prop="equipmentId">
+          <a-input-search :readOnly="true" :disabled="disableSubmit" v-model="formParams.equipmentId"
+                          @search="deviceSearch" enter-button
+                          placeholder="璇烽�夋嫨璁惧"/>
         </a-form-model-item>
-        <a-form-model-item label="鏍囬" :labelCol="{span: 4}" :wrapperCol="{span: 20}">
-          <a-input v-model="formParams.titile" disabled></a-input>
+        <a-form-model-item label="寮傚父绫诲瀷" :labelCol="{span: 4}" :wrapperCol="{span: 10}"
+                           :prop="!buttonId?'msgType':''">
+          <j-dict-select-tag dictCode="mdcMsgType" v-model='formParams.msgType' placeholder="璇烽�夋嫨寮傚父绫诲瀷"
+                             :disabled="disableSubmit&&buttonId!==2"/>
         </a-form-model-item>
-        <a-form-model-item label="鍐呭" :labelCol="{span: 4}" :wrapperCol="{span: 20}">
-          <a-input v-model="formParams.msgContent" disabled></a-input>
+        <a-form-model-item label="鏍囬">
+          <a-input placeholder="璇疯緭鍏ユ爣棰�" v-model="formParams.titile" :disabled="disableSubmit"/>
+        </a-form-model-item>
+        <a-form-model-item label="鍐呭">
+          <a-input placeholder="璇疯緭鍏ュ唴瀹�" v-model="formParams.msgContent" :disabled="disableSubmit"/>
         </a-form-model-item>
 
-        <a-form-model-item label="鍘熷洜" :labelCol="{span: 4}" :wrapperCol="{span: 20}" prop="reportContent"
-                           v-if="buttonId===1">
-          <a-textarea v-model="formParams.reportContent" :disabled="buttonId!==1"></a-textarea>
-        </a-form-model-item>
-        <a-form-model-item label="鍘熷洜" :labelCol="{span: 4}" :wrapperCol="{span: 20}" v-else>
-          <a-textarea v-model="formParams.reportContent" :disabled="buttonId!==1"></a-textarea>
+        <a-form-model-item label="鍘熷洜" prop="reportContent" v-if="buttonId">
+          <a-textarea v-model="formParams.reportContent" :disabled="buttonId!==2"/>
         </a-form-model-item>
 
         <a-form-model-item label="纭" :labelCol="{span: 4}" :wrapperCol="{span: 12}" prop="isConfirm"
-                           v-if="buttonId==2">
+                           v-if="buttonId==3">
           <a-select v-model='formParams.isConfirm' placeholder="璇烽�夋嫨鏄惁纭">
             <a-select-option value="2">纭</a-select-option>
             <a-select-option value="3">鎷掔粷</a-select-option>
@@ -34,20 +38,26 @@
       </a-form-model>
     </a-spin>
 
-    <div class="drawer-bottom-button" v-show="buttonId!==0">
-      <a-popconfirm title="纭畾鏀惧純鎿嶄綔锛�" @confirm="closeModal" okText="纭畾" cancelText="鍙栨秷">
-        <a-button style="margin-right: .8rem">鍙栨秷</a-button>
-      </a-popconfirm>
-      <a-button @click="handleSubmit" type="primary" :loading="confirmLoading">鎻愪氦</a-button>
+    <div class="drawer-bottom-button" v-show="buttonId!==1">
+      <a-space>
+        <a-popconfirm title="纭畾鏀惧純鎿嶄綔锛�" @confirm="closeModal" okText="纭畾" cancelText="鍙栨秷">
+          <a-button>鍙栨秷</a-button>
+        </a-popconfirm>
+        <a-button @click="handleSubmit" type="primary" :loading="confirmLoading">鎻愪氦</a-button>
+      </a-space>
     </div>
+
+    <SelectDeviceDrawerSingleSelection ref="selectDeviceDrawer" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
   </a-modal>
 </template>
 
 <script>
   import { postAction } from '@/api/manage'
+  import SelectDeviceDrawerSingleSelection from './SelectDeviceDrawer-SingleSelection'
 
   export default {
     name: 'MdcMessageApprovalModal',
+    components: { SelectDeviceDrawerSingleSelection },
     props: {
       visible: {
         type: Boolean
@@ -57,11 +67,16 @@
       },
       buttonId: {
         type: Number
+      },
+      disableSubmit: {
+        type: Boolean
       }
     },
     data() {
       return {
         form: this.$form.createForm(this),
+        treeData: [],
+        treeDefaultExpandedKeys: [],
         formParams: {
           equipmentId: '',
           titile: '',
@@ -71,7 +86,14 @@
           isConfirm: ''
         },
         confirmLoading: false,
+        spinning: false,
         validatorRules: {
+          equipmentId: [
+            { required: true, message: '璇烽�夋嫨璁惧', trigger: 'change' }
+          ],
+          msgType: [
+            { required: true, message: '璇烽�夋嫨寮傚父绫诲瀷' }
+          ],
           reportContent: [
             { required: true, message: '璇疯緭鍏ヤ笂鎶ュ師鍥�' }
           ],
@@ -80,29 +102,45 @@
           ]
         },
         url: {
+          add: '/mdc/mdcMessageApproval/add',
           reportUrl: '/mdc/mdcMessageApproval/reportReason',
           confirmUrl: '/mdc/mdcMessageApproval/handleConfirm'
         }
       }
     },
     methods: {
-      closeModal() {
-        this.$refs.form.clearValidate()
-        this.$emit('closeModal')
+      deviceSearch() {
+        this.$refs.selectDeviceDrawer.visible = true
+        this.$refs.selectDeviceDrawer.checkedKeys = this.formParams.equipmentId ? [this.formParams.equipmentId] : []
+        this.$refs.selectDeviceDrawer.selectedKeys = this.formParams.equipmentId ? [this.formParams.equipmentId] : []
       },
+
+      /**
+       * 閫夋嫨宸叉湁璁惧鍚庣偣鍑荤‘瀹氭椂瑙﹀彂
+       * @param data 宸查�夋嫨鐨勮澶�
+       */
+      selectOK(data) {
+        this.$set(this.formParams, 'equipmentId', data[0])
+      },
+
       handleSubmit() {
         const that = this
         // 瑙﹀彂琛ㄥ崟楠岃瘉
         this.$refs.form.validate(valid => {
           if (valid) {
-            that.confirmLoading = true
+            that.confirmLoading = that.spinning = true
             this.formParams.msgStatus = this.formParams.isConfirm
             let obj
-            if (this.buttonId === 1) {
-              obj = postAction(this.url.reportUrl, this.formParams)
+            if (!this.buttonId) {
+              obj = postAction(this.url.add, this.formParams)
             } else {
-              obj = postAction(this.url.confirmUrl, this.formParams)
+              if (this.buttonId === 2) {
+                obj = postAction(this.url.reportUrl, this.formParams)
+              } else {
+                obj = postAction(this.url.confirmUrl, this.formParams)
+              }
             }
+
             obj.then((res) => {
               if (res.success) {
                 that.$notification.success({
@@ -110,6 +148,7 @@
                   description: res.message
                 })
                 that.$emit('formHasSubmitted')
+                that.closeModal()
               } else {
                 that.$notification.warning({
                   message: '娑堟伅',
@@ -117,13 +156,17 @@
                 })
               }
             }).finally(() => {
-              that.confirmLoading = false
-              that.closeModal()
+              that.confirmLoading = that.spinning = false
             })
           } else {
             return false
           }
         })
+      },
+
+      closeModal() {
+        this.$refs.form.clearValidate()
+        this.$emit('closeModal')
       }
     }
   }
diff --git a/src/views/mdc/base/modules/MdcMessageApproval/SelectDeviceDrawer-SingleSelection.vue b/src/views/mdc/base/modules/MdcMessageApproval/SelectDeviceDrawer-SingleSelection.vue
new file mode 100644
index 0000000..e796512
--- /dev/null
+++ b/src/views/mdc/base/modules/MdcMessageApproval/SelectDeviceDrawer-SingleSelection.vue
@@ -0,0 +1,240 @@
+<template>
+  <a-drawer
+    :title="title"
+    :visible="visible"
+    width="500"
+    @ok="handleOk"
+    @close="handleCancel"
+  >
+
+    <a-spin :spinning="loading">
+      <!-- showLine -->
+      <a-form>
+        <a-form-item>
+          <a-input-search @search="handleSearch" style="width:100%;" placeholder="妫�绱� 绫诲埆缂栫爜/鍚嶇О" allowClear
+                          v-model="searchInput" @change="handleSearch"/>
+        </a-form-item>
+        <a-form-item label="杞﹂棿灞傜骇锛�">
+          <a-tree showLine ref="tree" :expandedKeys.sync="expandedKeys" :selectedKeys="selectedKeys"
+                  :autoExpandParent="autoExpandParent" checkStrictly
+                  :treeData="treeDataSource" checkable @check="onCheck" @select="onSelect" v-model="checkedKeys"
+                  @expand="onExpand">
+            <template slot="title" slot-scope="{ title, parentId, entity, key}">
+              <span v-if="title.indexOf(searchValue) > -1">{{ title.substr(0, title.indexOf(searchValue)) }}
+                <span class="replaceSearch">{{ searchValue }}</span>
+                {{ title.substr(title.indexOf(searchValue) + searchValue.length) }}
+              </span>
+              <span v-else>{{ title }}</span>
+            </template>
+          </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="expandedKeys=allTreeKeys">灞曞紑鎵�鏈�</a-menu-item>
+          <a-menu-item key="2" @click="expandedKeys=['-1']">鍚堝苟鎵�鏈�</a-menu-item>
+          <a-menu-item key="3" @click="queryTreeData">鍒锋柊</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>
+  </a-drawer>
+</template>
+
+<script>
+  import { getAction, postAction, deleteAction } from '@/api/manage'
+  import { mapActions } from 'vuex'
+
+  export default {
+    name: 'SelectDeviceDrawer-SingleSelection',
+    props: {
+      editDisable: {
+        type: Boolean,
+        default() {
+          return true
+        }
+      },
+      title: {
+        type: String
+      }
+    },
+    data() {
+      return {
+        searchInput: '',
+        searchValue: '',
+        cardLoading: false,
+        loading: false,
+        treeDataSource: [],
+        expandedKeys: [],
+        checkedKeys: [],
+        selectedKeys: [],
+        autoExpandParent: true,
+        dataList: [],
+        allTreeKeys: [],
+        visible: false,
+        dataSource: []
+      }
+    },
+    created() {
+      this.queryTreeData()
+    },
+    methods: {
+      ...mapActions(['QueryProduction']),
+
+      queryTreeData() {
+        this.loading = true
+        this.cardLoading = true
+        this.QueryProduction().then(res => {
+          if (res.success) {
+            this.dataList = []
+            this.allTreeKeys = []
+            this.getTreeDataSource(res.result)
+            this.treeDataSource = res.result
+            this.generateList(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)
+          }
+        }
+      },
+
+      handleSearch(value) {
+        let search = this.searchInput
+        let expandedKeys = this.dataList
+          .map(item => {
+            if (item.title != null) {
+              if (item.title.indexOf(search) > -1) {
+                return this.getParentKey(item.key, this.treeDataSource)
+              }
+              return null
+            }
+          })
+          .filter((item, i, self) => item && self.indexOf(item) === i)
+        console.log('expandedKeys', expandedKeys)
+        Object.assign(this, {
+          expandedKeys,
+          searchValue: search,
+          autoExpandParent: true
+        })
+      },
+
+      getParentKey(key, tree) {
+        let parentKey
+        for (let i = 0; i < tree.length; i++) {
+          const node = tree[i]
+          if (node.children) {
+            if (node.children.some(item => item.key === key)) {
+              parentKey = node.key
+            } else if (
+              this.getParentKey(key, node.children)) {
+              parentKey = this.getParentKey(key, node.children)
+            }
+          }
+        }
+        return parentKey
+      },
+
+      getTreeDataSource(data) {
+        data.forEach(item => {
+          if (item.children && item.children.length > 0) {
+            this.getTreeDataSource(item.children)
+          }
+          item.key = item.equipmentId ? item.equipmentId : item.key
+          item.value = item.equipmentId ? item.equipmentId : item.value
+        })
+      },
+
+      /**
+       * 澶氶�夋閫変腑鏃惰Е鍙�
+       * @param selectedKeys 鏍戣妭鐐归�変腑鍒楄〃锛坈heck浜嬩欢绗竴涓弬鏁版湭鐢ㄥ埌锛屾鍙傛暟鏄敱select浜嬩欢浼犲叆鐨勶級
+       * @param event 澶氶�夋浜嬩欢瀵硅薄
+       */
+      onCheck(selectedKeys, event) {
+        let checkedKeys
+        if (event) checkedKeys = event.checkedNodes.filter(item => item.data.props.equipmentId).map(item => item.data.props.equipmentId)
+        else checkedKeys = selectedKeys
+        this.checkedKeys = this.selectedKeys = checkedKeys.slice(-1)
+      },
+
+      /**
+       * 鏍戣妭鐐归�変腑鏃惰Е鍙�
+       * @param selectedKeys 鏍戣妭鐐归�変腑鍒楄〃锛堜紶鍏heck浜嬩欢绗竴涓弬鏁帮級
+       * @param event 鏍戣妭鐐归�変腑浜嬩欢瀵硅薄
+       */
+      onSelect(selectedKeys, event) {
+        if (event.selectedNodes[0].data.props.equipmentId) this.onCheck(selectedKeys)
+      },
+
+      /**
+       * 鏍戝睍寮�鍚堝苟鏃惰Е鍙�
+       * @param expandedKeys
+       */
+      onExpand(expandedKeys) {
+        this.expandedKeys = expandedKeys
+        this.autoExpandParent = false
+      },
+
+      handleOk() {
+        this.$emit('selectFinished', this.checkedKeys)
+        this.handleCancel()
+      },
+
+      handleCancel() {
+        this.visible = false
+      }
+    }
+  }
+</script>
+<style lang="less" scoped>
+  .replaceSearch {
+    color: #40a9ff;
+    font-weight: bold;
+    background-color: rgb(204, 204, 204);
+  }
+
+  .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