From 1b8098b7f79b66a80e5ca49d8765606cb5fa0408 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 30 十一月 2023 19:11:00 +0800
Subject: [PATCH] 操作日志完善

---
 Source/UBCS-WEB/src/components/Master/MasterTree.vue |  202 ++++++++++++++++++++++++++++++++++----------------
 1 files changed, 137 insertions(+), 65 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/Master/MasterTree.vue b/Source/UBCS-WEB/src/components/Master/MasterTree.vue
index 7728041..b34e705 100644
--- a/Source/UBCS-WEB/src/components/Master/MasterTree.vue
+++ b/Source/UBCS-WEB/src/components/Master/MasterTree.vue
@@ -1,45 +1,52 @@
 <template>
-  <avue-tree ref="tree" v-model="CloneTreeAvueform" v-loading="loading" :data="Treedata" :defaultExpandAll="false"
-             :option="Treeoption"
-             style="height: calc(100vh - 150px);"
-             @node-click=" nodeClick"
-  ></avue-tree>
+  <div class="app" style="position: relative;">
+    <avue-tree ref="tree" v-model="CloneTreeAvueform" v-loading="loading" :data="Treedata" :defaultExpandAll="false"
+               :option="Treeoption" style="width: fit-content;" @node-click="nodeClick">
+      <template slot-scope="{ node }">
+        <span v-html="node.label"></span>
+      </template>
+    </avue-tree>
+    <div style="position: absolute; right: 0px; top: -1px;">
+      <el-link class="refresh-icon" icon="el-icon-refresh" @click="getTreeLists"></el-link>
+    </div>
+  </div>
 </template>
 
 <script>
 import {getTreeList} from "@/api/MasterData/master";
-import {mapMutations, mapState} from "vuex";
-import {TableData,MasterTable} from "@/api/GetItem";
+import {TableData, MasterTable} from "@/api/GetItem";
 
 export default {
   name: "MasterTree",
-  props:{
-    pageSize:{
-      type:String,
-      default:"10"
+  props: {
+    pageSize: {
+      type: String,
+      default: "100"
     },
-    currentPage:{
-      type:String,
-      default:"1"
+    currentPage: {
+      type: String,
+      default: "1"
     },
-    templateOid:{
-      type:String,
-      default:''
+    templateOid: {
+      type: String,
+      default: ''
     },
   },
-  data(){
-    return{
-      idData:'',
-      masterVrBtnList:[],
-      tableHeadFindData:[],
-      tableHeadDataFateher:[],
-      templateOids:"",
-      tableDataArray:[],
-      codeClassifyOid:"",
-      coderuleoid:"",
-      CloneTreeAvueform:{},
-      loading:false,
-      Treedata:[],
+  data() {
+    return {
+      TreeValue: '',
+      idData: '',
+      referTreeId: '',
+      masterVrBtnList: [],
+      tableHeadFindData: [],
+      tableHeadDataFateher: [],
+      templateOids: "",
+      tableDataArray: [],
+      codeClassifyOid: "",
+      coderuleoid: "",
+      CloneTreeAvueform: {},
+      loading: false,
+      Treedata: [],
       nodeClickList: "",
       Treeoption: {
         addBtn: false,
@@ -52,15 +59,20 @@
         //   console.log(node)
         //   console.log(resolve)
         // }
-        treeLoad:function (node, resolve){
-          if(node.data != false){
+        treeLoad: (node, resolve) => {
+          if (node.data != false) {
             const parentId = (node.level === 0) ? 0 : node.data.oid;
-            const parentBtmName = node.data.attributes.btmname
-            getTreeList({parentOid:parentId,parentBtmName:parentBtmName}).then(res=>{
-              resolve(res.data.map(item=>{
+            const parentBtmName = node.data.attributes.btmname;
+            getTreeList({
+              parentOid: parentId,
+              parentBtmName: parentBtmName,
+              'conditionMap[btmTypeId]': this.referTreeId
+            }).then(res => {
+              resolve(res.data.map(item => {
                 return {
                   ...item,
-                  label:item.text
+                  label: `<span style="color:#409EFF">${item.count}</span> ${item.text}`,
+                  count: item.count
                 }
               }))
             })
@@ -72,25 +84,53 @@
   created() {
     this.getTreeLists()
   },
-  computed:{
-   },
-  methods:{
+  mounted() {
+
+  },
+  computed: {
+    formatCount() {
+      return (label) => {
+        const countIndex = label.indexOf('</span>') + '</span>'.length;
+        const count = label.slice(countIndex);
+        const coloredCount = `<span class="count">${count}</span>`;
+        return `${label.slice(0, countIndex)}${coloredCount}`;
+      };
+    },
+  },
+  methods: {
     //鑾峰彇鏁版嵁
-    getTreeLists(){
+    getTreeLists() {
       const index = this.$route.query.id.indexOf('@');
       const result = this.$route.query.id.substring(0, index);
-      this.idData=result
+      this.idData = result
       // console.log(this.$route)
-      console.log(this.idData)
-      getTreeList({'conditionMap[id]':this.idData }).then(res=>{
-        this.Treedata=res.data
-        this.ModifyProperties(this.Treedata, 'text', 'label');
-        this.codeClassifyOid=res.data[0].oid;
-        this.coderuleoid=res.data[0].attributes.coderuleoid;
-        this.$emit("coderuleoid", this.coderuleoid )
-      }).catch(res=>{
-        console.log(res)
-      })
+      getTreeList({'conditionMap[id]': this.idData}).then(res => {
+        if (res) {
+          if (res.data.length === 0) {
+            this.$message.error("涓绘暟鎹垎绫绘煡璇负绌猴紒");
+          } else {
+            this.Treedata = res.data;
+
+            const [firstProperty] = res.data;
+            this.ModifyProperties(this.Treedata, 'text', 'label');
+            this.referTreeId = firstProperty.attributes.btmTypeId;
+            // console.log(this.referTreeId)
+            this.codeClassifyOid = firstProperty.oid;
+            this.coderuleoid = firstProperty.attributes.coderuleoid;
+            this.$emit("coderuleoid", this.coderuleoid)
+            this.$emit('Treedata', this.Treedata)
+            this.Treedata.forEach((item, index) => {
+              item.label = `<span style="color:#409EFF">${item.count}</span> ${item.label}`;
+            });
+            this.$emit("coderuleoid", this.coderuleoid)
+            this.$emit('Treedata', this.Treedata)
+            // console.log(this.Treedata)
+          }
+        }
+      }).catch(res => {
+        // console.log(res)
+        this.$message.error(res)
+      });
     },
 
     //瀹氫箟涓�涓慨鏀规暟鎹睘鎬у悕鐨勬柟娉�
@@ -106,27 +146,29 @@
       }
     },
     //琛ㄦ牸鍒锋柊
-    TableRend(){
+    TableRend() {
       TableData({
         templateOid: this.templateOids,
         codeClassifyOid: this.nodeClickList.oid,
         page: this.currentPage,
         limit: this.pageSize,
       }).then(res => {
-        this.tableDataArray=res.data.data;
-        this.$emit('tableDataArray',this.tableDataArray)
-        this.$emit('total',res.data.total)
-        console.log('table',this.tableDataArray)
+        this.tableDataArray = res.data.data;
+        this.$emit('tableDataArray', this.tableDataArray)
+        this.$emit('total', res.data.total)
       })
     },
     //琛ㄦ牸澶撮儴
     TableHeadRend() {
+      const index = this.$route.query.id.indexOf('@');
+      const result = this.$route.query.id.substring(0, index);
+      // console.log(this.$route)
       return new Promise((resolve, reject) => {
         MasterTable({
           codeClassifyOid: this.nodeClickList.oid,
-          functionId: 5,
+          functionId: result,
         }).then(res => {
-          const flagsToDeleteBtn = ["CODEIMPORTHISTORY", "CODEEXPORT", "CODEQUERY","batchApplyCode"];
+          const flagsToDeleteBtn = ["CODEIMPORTHISTORY", "CODEEXPORT", "CODEQUERY", "batchApplyCode"];
           //涓嶅悓鑺傜偣鏄剧ず涓嶅悓鎸夐挳
           if (!res.data.leaf) {
             this.masterVrBtnList = res.data.buttons.filter(obj => flagsToDeleteBtn.includes(obj.uniqueFlag));
@@ -135,11 +177,11 @@
           }
           this.tableHeadDataFateher = res.data;
           this.templateOids = res.data.tableDefineVO.oid;
-          let List = res.data.tableDefineVO.cols[0];
+          const [List] = res.data.tableDefineVO.cols;
           List.forEach(item => {
             let columnItem = {
               label: item.title,
-              prop: item.field,
+              prop: item.queryField,
               // type: this.columnType[item.type],
               sortable: item.sort,
               width: item.minWidth
@@ -158,13 +200,18 @@
     //鏍戠偣鍑讳簨浠�
     async nodeClick(data) {
       try {
+        // console.log(data)
+        this.TreeValue = data.label.split("</span>")[1].trim();
+        // console.log('TreeValue',this.TreeValue)
+        this.$emit('TreeValue', this.TreeValue)
         this.nodeClickList = data;
-        this.tableHeadDataFateher=[]
-        this.tableHeadFindData=[]
+        this.tableHeadDataFateher = []
+        this.tableHeadFindData = []
         await this.TableHeadRend(); // 鍏堟墽琛� TableHeadRend()
         this.TableRend(); // TableHeadRend() 鏂规硶瀹屾垚鍚庡啀鎵ц TableRend()
-        this.$emit('nodeClick',this.templateOids)
-        this.$emit("codeClassifyOid", this.nodeClickList.oid )
+        this.$emit('nodeClick', this.templateOids)
+        this.$emit("codeClassifyOid", this.nodeClickList.oid)
+        this.$emit("nodeClickList", this.nodeClickList)
       } catch (error) {
         // 澶勭悊閿欒
         this.$message.error(error)
@@ -174,6 +221,31 @@
 }
 </script>
 
-<style scoped>
+<style lang="scss" scoped>
+.app {
+  overflow: auto;
+  height: calc(100vh - 150px);
+}
 
+.app::-webkit-scrollbar {
+  height: 15px; // 绾靛悜婊氬姩鏉� 蹇呭啓
+  background: white;
+  border: white;
+  width: 10px;
+
+}
+
+// 婊氬姩鏉$殑婊戝潡
+.app::-webkit-scrollbar-thumb {
+  background-color: #ececec;
+  border-radius: 20px;
+  border: #ececec;
+}
+
+.refresh-icon {
+  color: #409EFF;
+  margin-top: 8px;
+  margin-left: 6px;
+  font-size: 18px;
+}
 </style>

--
Gitblit v1.9.3