From 41d50b20c975faeaa9e5277bdcff13b5acecb575 Mon Sep 17 00:00:00 2001
From: qushaowei <qushaowei@163.com>
Date: 星期三, 13 十二月 2023 16:57:37 +0800
Subject: [PATCH] Merge branch 'master' of http://117.34.109.166:18448/r/vue_mdc_430 into develop

---
 src/views/system/modules/SelectDeviceModal.vue |  527 +++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 340 insertions(+), 187 deletions(-)

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

--
Gitblit v1.9.3