From ba77fdc6a30c9ad0941e40319f8c4f6fe6fdf9f1 Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期四, 07 八月 2025 10:30:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/views/mdc/base/modules/deviceCalendar/DeviceCalendarAdd.vue |  528 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 528 insertions(+), 0 deletions(-)

diff --git a/src/views/mdc/base/modules/deviceCalendar/DeviceCalendarAdd.vue b/src/views/mdc/base/modules/deviceCalendar/DeviceCalendarAdd.vue
new file mode 100644
index 0000000..a5e511a
--- /dev/null
+++ b/src/views/mdc/base/modules/deviceCalendar/DeviceCalendarAdd.vue
@@ -0,0 +1,528 @@
+<template>
+
+  <a-card class="tree_con" :loading="cardLoading" :bordered="false" >
+    <a-spin :spinning="loading">
+      <a-alert type="info" :showIcon="false" style="margin-right: 54px;padding-left: 5px">
+        <div slot="message">
+          <span v-if="this.currSelected.title">{{ getCurrSelectedTitle() }}</span>
+          <span v-else>鏃�</span>
+        </div>
+      </a-alert>
+      <div class="drawer-bootom-button">
+        <a-dropdown :trigger="['click']" placement="bottomCenter">
+          <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="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="bars"/>
+          </a-button>
+        </a-dropdown>
+      </div>
+      <a-input-search @search="handleSearch" style="width:100%;margin-top: 10px" placeholder="妫�绱� 绫诲埆缂栫爜/鍚嶇О" allowClear
+                      v-model="searchInput" @change="handleChange"/>
+
+      <a-form>
+        <a-form-item>
+            <a-tree  ref="tree"
+                     checkable
+                     @check="onCheck"
+                     :checkStrictly="checkStrictly"
+                     :expandedKeys="expandedKeys"
+                     :checkedKeys="checkedKeys"
+                      :selectedKeys="selectedKeys"
+                      :treeData="treeDataSource"
+                      :autoExpandParent="autoExpandParent"
+                     @select="onSelect"
+                     @expand="onExpand">
+            </a-tree>
+
+        </a-form-item>
+      </a-form>
+
+    </a-spin>
+
+    <!--<tier-model ref="tierModalForm"  @ok="modalFormOk"></tier-model>-->
+
+
+  </a-card>
+    <!--<div class="drawer-bootom-button">-->
+      <!--<a-dropdown style="float: left" :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>-->
+      <!--&lt;!&ndash;&lt;!&ndash;<a-popconfirm title="纭畾鏀惧純缂栬緫锛�" @confirm="close" okText="纭畾" cancelText="鍙栨秷">&ndash;&gt;&ndash;&gt;-->
+      <!--&lt;!&ndash;&lt;!&ndash;<a-button style="margin-right: .8rem">鍙栨秷</a-button>&ndash;&gt;&ndash;&gt;-->
+      <!--&lt;!&ndash;&lt;!&ndash;</a-popconfirm>&ndash;&gt;&ndash;&gt;-->
+      <!--&lt;!&ndash;&lt;!&ndash;<a-button @click="handleSubmit(false)" type="primary" :loading="loading" ghost style="margin-right: 0.8rem">浠呬繚瀛�</a-button>&ndash;&gt;&ndash;&gt;-->
+      <!--&lt;!&ndash;&lt;!&ndash;<a-button @click="handleSubmit(true)" type="primary" :loading="loading">淇濆瓨骞跺叧闂�</a-button>&ndash;&gt;&ndash;&gt;-->
+    <!--</div>-->
+</template>
+
+<script>
+  import {
+    getAction,
+    postAction,
+    deleteAction
+  } from '@/api/manage'
+  import Tooltip from 'ant-design-vue/es/tooltip'
+  // import TierModel from './modules/baseTree/TierModel'
+
+  export default {
+    name: 'BaseTree',
+    props: {
+      editDisable: {
+        type: Boolean,
+        default() {
+          return true
+        }
+      }
+    },
+    components: {
+      Tooltip,
+      // TierModel
+    },
+    data() {
+      return {
+        searchInput: '',
+        cardLoading: false,
+        loading: false,
+        treeDataSource: [],
+        selectedKeys: [],
+        expandedKeys: [],
+        checkedKeys:[],
+        checkedId:[],
+        url: {
+          getBaseTree: '/mdc/mdcequipment/loadTree',
+          deleteBatch: '/mdc/mdcequipment/deleteBatch'
+        },
+        searchValue: '',
+        dataList: [],
+        autoExpandParent: false,
+        checkStrictly: false,
+        allTreeKeys: [],
+        currSelected: {},
+        currentSlectList:[],
+        hiding: false,
+        mathChange:''
+      }
+    }
+    ,
+    created() {
+      this.queryTreeData()
+      // this.closeAll()
+    }
+    ,
+    methods: {
+      switchCheckStrictly (v) {
+        if(v==1){
+          this.checkStrictly = false
+        }else if(v==2){
+          this.checkStrictly = true
+        }
+      },
+      checkALL (e) {
+        this.checkedKeys = this.allTreeKeys
+        // console.log(this.checkedKeys);
+        this.currentSlectList =  this.treeDataSource;
+        // console.log(this.currentSlectList)
+      },
+      cancelCheckALL () {
+        //this.checkedKeys = this.defaultCheckedKeys
+        this.checkedKeys = [];
+        this.currentSlectList = [];
+        // console.log(this.checkedKeys);
+        // console.log(this.currentSlectList)
+      },
+      onCheck (o,checkedNodes) {
+        console.log(o);
+        console.log(checkedNodes);
+        if(this.checkStrictly){
+          this.checkedKeys = o.checked;
+        }else{
+          this.checkedKeys = o
+        }
+        // console.log(checkedNodes)
+        // console.log(o)
+        // console.log(o.checked)
+        // console.log(checkedNodes.node.dataRef);
+        // console.log( this.currentSlectList);
+        // if(checkedNodes.checked == true && this.checkStrictly){
+        //   this.currentSlectList.push(checkedNodes.node.dataRef)
+        // }else if(checkedNodes.checked == false && this.checkStrictly.length == 0){
+        //   console.log(111)
+        // }
+        // console.log(this.checkStrictly)
+        if(checkedNodes.checked == true){
+          this.currentSlectList.push(checkedNodes.node.dataRef)
+        }else{
+          for(var i = 0;i<this.currentSlectList.length;i++){
+            if(this.currentSlectList[i].key == checkedNodes.node.dataRef.key){
+              this.currentSlectList.splice(i,1);
+            }
+          }
+        }
+        // console.log(this.currentSlectList)
+        // // if(this.checkStrictly = false){
+        // //   if(checkedNodes.checked == true){
+        // //     this.currentSlectList.push(checkedNodes.node.dataRef)
+        // //   }else{
+        // //     for(var i = 0;i<this.currentSlectList.length;i++){
+        // //       if(this.currentSlectList[i].key == checkedNodes.node.dataRef.key){
+        // //         this.currentSlectList.splice(i,1);
+        // //       }
+        // //     }
+        // //   }
+        // //   console.log(this.currentSlectList);
+        // // }else{
+        // //   console.log(checkedNodes)
+        // //   if(checkedNodes.checked == true){
+        // //     this.currentSlectList.push(checkedNodes.node.dataRef)
+        // //   }
+        // //   else{
+        // //     for(var i = 0;i<this.currentSlectList.length;i++){
+        // //       if(this.currentSlectList[i].key == checkedNodes.node.dataRef.key){
+        // //         this.currentSlectList.splice(i,1);
+        // //       }
+        // //     }
+        // //   }
+        // //   console.log(this.currentSlectList)
+        // // }
+        // // console.log( this.currentSlectList);
+        // if(this.checkStrictly){
+        //   this.checkedKeys = o.checked;
+        //   console.log(checkedNodes)
+        //   // this.
+        //   console.log(this.checkedKeys)
+        // }else{
+        //   this.checkedKeys = o;
+        //   console.log(this.checkedKeys)
+        // }
+      },
+      clearSelect(){
+        this.checkedKeys = [];
+        this.currentSlectList = [];
+      },
+      getCurrSelectedTitle() {
+        return !this.currSelected.title ? '' : this.currSelected.title
+      }
+      ,
+      // onClearSelected() {
+      //   this.hiding = true
+      //   this.currSelected = {}
+      //   this.selectedKeys = []
+      //   this.$emit('sendSelectBaseTree', '')
+      // },
+
+      onSelect(selectedKeys, e) {
+        // console.log(e);
+        this.hiding = false
+        let record = e.node.dataRef
+        this.currSelected = Object.assign({}, record)
+        // console.log(this.currSelected)
+        this.selectedKeys = [record.key]
+        this.$emit('sendSelectBaseTree', this.selectedKeys)
+      },
+      handleEdit(entity) {
+        this.$refs.tierModalForm.edit(entity)
+        this.$refs.tierModalForm.title = '缂栬緫灞傜骇'
+        this.$refs.tierModalForm.disableSubmit = false
+      },
+      onExpand(expandedKeys) {
+        this.expandedKeys = expandedKeys
+        this.autoExpandParent = false
+      },
+      queryTreeData() {
+        this.loading = true
+        this.cardLoading = true
+        getAction(this.url.getBaseTree).then((res) => {
+          if (res.success) {
+            this.dataList = []
+            this.allTreeKeys = []
+            this.treeDataSource = res.result
+            this.generateList(res.result)
+          } else {
+            // this.$message.warn(res.message)
+            this.$notification.warning({
+              message:'娑堟伅',
+              description:res.message
+            });
+          }
+        }).finally(() => {
+          this.loading = false
+          this.cardLoading = false
+        })
+      },
+      handleChange() {
+        let search = this.searchInput
+        let expandedKeys = this.dataList
+          .map(item => {
+            if (item.title.indexOf(search) > -1) {
+              return this.getParentKey(item.key, this.treeDataSource)
+            }
+            return null
+          })
+          .filter((item, i, self) => item && self.indexOf(item) === i)
+        Object.assign(this, {
+          expandedKeys,
+          searchValue: search,
+          autoExpandParent: true
+        })
+      }
+      ,
+      handleSearch(value) {
+        let search = value
+        let expandedKeys = this.dataList
+          .map(item => {
+            if (item.title.indexOf(search) > -1) {
+              return this.getParentKey(item.key, this.treeDataSource)
+            }
+            return null
+          })
+          .filter((item, i, self) => item && self.indexOf(item) === i)
+        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
+      },
+
+      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)
+          }
+        }
+      },
+      expandAll() {
+        this.expandedKeys = this.allTreeKeys
+      },
+      closeAll() {
+        this.expandedKeys = ['-1']
+      },
+      refreshTree() {
+        this.queryTreeData()
+      },
+      batchDel: function(entity) {
+        if (!this.url.deleteBatch) {
+          this.$message.error('璇疯缃畊rl.deleteBatch灞炴��!')
+          return
+        }
+        let ids = entity.id
+        if (!ids) {
+          // this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒')
+          this.$notification.warning({
+            message:'娑堟伅',
+            description:'璇烽�夋嫨涓�鏉¤褰�'
+          });
+          return
+        } else {
+          var that = this
+          this.$confirm({
+            title: '纭鍒犻櫎',
+            content: '鏄惁鍒犻櫎閫変腑鏁版嵁?',
+            onOk: function() {
+              that.loading = true
+              deleteAction(that.url.deleteBatch, { ids: ids }).then((res) => {
+                if (res.success) {
+                  // that.$message.success(res.message)
+                  that.$notification.success({
+                    message:'娑堟伅',
+                    description:res.message
+                  });
+                  that.queryTreeData();
+                } else {
+                  // that.$message.warning(res.message)
+                  that.$notification.warning({
+                    message:'娑堟伅',
+                    description:res.message
+                  });
+                }
+              }).finally(() => {
+                that.loading = false
+              })
+            }
+          })
+        }
+      },
+      modalFormOk(val) {
+        console.log("mmm")
+        // 鏂板/淇敼 鎴愬姛鏃讹紝閲嶈浇鍒楄〃
+        this.queryTreeData()
+        // 鏂板/淇敼 鎴愬姛鏃讹紝閲嶈浇鍒楄〃
+      }
+
+    }
+    ,
+    //鐩戝惉
+    watch: {
+      currSelected(val) { //鐩戝惉currSelected 鍙樺寲锛屽皢鍙樺寲鍚庣殑鏁板�间紶閫掔粰 getCurrSelected 浜嬩欢
+        this.$emit('getCurrSelected', val)
+
+      },
+      currentSlectList(msg){
+        this.$emit('getcurrentSlectList',msg)
+      },
+      checkedKeys(valId){
+        this.$emit('getcheckedKeys',valId)
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+  /*.tree_con{*/
+    /*position: relative;*/
+  /*}*/
+  .drawer-bootom-button {
+    position: absolute;
+    top: 1px;
+    /* padding: 10px 16px; */
+    text-align: left;
+    right: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
+  .draw-bootom-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;
+  }
+  .replaceSearch {
+    color: #40a9ff;
+    font-weight: bold;
+    background-color: rgb(204, 204, 204);
+  }
+
+  .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;
+  }
+
+  .ant-alert {
+    padding: 5px 15px 5px 37px;
+  }
+
+  /*.drawer-bootom-button {*/
+    /*position: absolute;*/
+    /*bottom: 1px;*/
+     /*padding: 10px 16px;*/
+    /*text-align: left;*/
+    /*left: 0;*/
+    /*background: #fff;*/
+    /*border-radius: 0 0 2px 2px;*/
+  /*}*/
+  @media screen and (min-width: 1920px){
+    .tree_con{
+      height: 748px!important;
+      overflow: scroll;
+    }
+  }
+  @media screen and (min-width: 1680px) and (max-width: 1920px){
+    .tree_con{
+      height: 748px!important;
+      overflow: scroll;
+    }
+  }
+  @media screen and (min-width: 1400px) and (max-width: 1680px){
+    .tree_con{
+      height: 600px!important;
+      overflow: scroll;
+    }
+  }
+  @media screen and (min-width: 1280px) and (max-width: 1400px){
+    .tree_con{
+      height: 501px!important;
+      overflow: scroll;
+    }
+  }
+  @media screen and (max-width: 1280px){
+    .tree_con{
+      height: 501px!important;
+      overflow: scroll;
+    }
+  }
+</style>

--
Gitblit v1.9.3