From 59765cab961847dfd101e69ae6d8d1d501a5284c Mon Sep 17 00:00:00 2001
From: yuxc <yuxc@vci-tech.com>
Date: 星期二, 04 六月 2024 11:10:28 +0800
Subject: [PATCH] 1、ice配置文件上传
---
Source/ProjectWeb/src/components/dynamic-components/dynamic-tree.vue | 276 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 271 insertions(+), 5 deletions(-)
diff --git a/Source/ProjectWeb/src/components/dynamic-components/dynamic-tree.vue b/Source/ProjectWeb/src/components/dynamic-components/dynamic-tree.vue
index 7cfdbd4..527e2e5 100644
--- a/Source/ProjectWeb/src/components/dynamic-components/dynamic-tree.vue
+++ b/Source/ProjectWeb/src/components/dynamic-components/dynamic-tree.vue
@@ -1,13 +1,49 @@
<template>
- <div>
-
+ <div class="UI-dynamic" :id="'UI-dynamic-'+areasName+componentVO.oid">
+ <dynamic-button v-if="componentVO.buttons && componentVO.buttons.length>0" :componentVO="componentVO"
+ :key="areasName+'buttons-'+componentVO.oid"
+ :butttonList="componentVO.buttons" :dataStore="checkDatas"
+ @afterMethod="handleRefresh"
+ @refresh="initData"
+ :sourceData="sourceData" type="tree" style="margin-bottom: 5px;"></dynamic-button>
+ <el-input
+ placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�"
+ v-model="filterText">
+ </el-input>
+ <el-tree
+ class="filter-tree"
+ :show-checkbox="isMuti"
+ :check-on-click-node="true"
+ :lazy="lazy"
+ :data="data"
+ :load="loadNode"
+ :props="defaultProps"
+ :filter-node-method="filterNode"
+ highlight-current
+ node-key="oid"
+ @check="checkNode"
+ @current-change="changeNode"
+ @node-click="clickNode"
+ ref="tree">
+ </el-tree>
</div>
</template>
<script>
+import {getList, getTree} from '@/api/base/ui'
+import {validatenull} from "@/util/validate";
+
export default {
name: "dynamic-tree",
props:{
+ //ui涓婁笅鏂囩殑涓氬姟绫诲瀷锛堟垨閾炬帴绫诲瀷锛�
+ uiBtmType: {
+ type: String
+ },
+ //ui涓婁笅鏂�
+ uiContext:{
+ type: String
+ },
componentVO:{
type:Object,
default: {}
@@ -15,6 +51,15 @@
inDialog: {
type: Boolean,
default: false
+ },
+ canEdit:{
+ //鍐呭鏄惁鍙紪杈�
+ type:Boolean,
+ default:false
+ },
+ actionType:{
+ //鎸夐挳鎿嶄綔绫诲瀷
+ default:""
},
areasName:{
type:String,
@@ -25,17 +70,238 @@
type:Object,
default: {}
},
+ //涓婁竴鍖哄煙涓氬姟绫诲瀷
+ sourceBtmType:{
+ type: String
+ },
+ dataStore:{
+ //寮圭獥鏃舵寜閽墍灞炲尯鍩熼�変腑鏁版嵁
+ type:Array,
+ default: []
+ },
paramVOS:{
type:Object,
default: {}
+ },
+ isShow: {
+ //鎵�鍦ㄥ尯鍩熸槸鍚﹀凡鏄剧ず锛岄拡瀵箃ab鍜宑ollapse
+ type: Boolean,
+ default: true
+ },
+ },
+ watch: {
+ filterText(val) {
+ this.$refs.tree.filter(val);
+ },
+ isShow:{
+ handler(newval) {
+ if(newval) {
+ //console.log(this.$el.clientHeight)
+ }
+ }
+ },
+ checkDatas:{
+ handler(newval) {
+ if(newval) {
+ this.$emit("setDataStore", {
+ area: this.areasName,
+ type:this.componentVO.uiComponentType,
+ btmType:this.componentVO.treeDefineVO.btmType,
+ dataStore:newval
+ });
+ }
+ },
+ deep: true,
+ immediate: true
+ },
+ data:{
+ handler(newval) {
+ if(newval) {
+ this.$emit("setData", {
+ area: this.areasName,
+ type:this.componentVO.uiComponentType,
+ currentDefineVO:this.componentVO.treeDefineVO,
+ data:newval
+ });
+ }
+ },
+ deep: true,
+ immediate: true
+ },
+ sourceData:{
+ handler(newval) {
+ //婧愭暟鎹湁鍙樺寲鏃跺彉鏇村綋鍓嶅尯鍩熸暟鎹�
+ this.sourceDataMapParams=this.sourceDataMap();
+ this.getParams();
+ this.handleRefresh();
+ },
+ deep: true,
+ immediate: true
}
},
data() {
- return {}
- }
+ return {
+ filterText: '',
+ defaultProps: {
+ children: 'children',
+ label: 'text'
+ },
+ lazy:this.componentVO.treeDefineVO.loadType == 'node',
+ isMuti:false,
+ data:[],
+ checkDatas:[],
+ currentClickNode:null,
+ params:{},
+ sourceDataMapParams:{}
+ }
+ },
+ created() {
+ },
+ mounted() {
+ if(this.componentVO.buttons && this.componentVO.buttons.length>0){
+ this.$children[2].$el.style.height = 'calc(100% - 50px - '+this.$children[0].$el.clientHeight+'px - 10px)';
+ }
+ },
+ methods: {
+ filterNode(value, data) {
+ if (!value) return true;
+ return data[this.defaultProps.label].indexOf(value) !== -1;
+ },
+ sourceDataMap: function () {
+ const sourceDataMap = {};
+ if (Object.keys(this.sourceData).length > 0) {
+ if (this.sourceData.oid) {
+ if (this.sourceData.oid.indexOf('@vcitreesep@') > -1) {
+ this.sourceData.oid = this.sourceData.oid.split('@vcitreesep@')[1];
+ }
+ sourceDataMap.sourceBtmName = this.sourceBtmType;
+ sourceDataMap.sourceOid = this.sourceData.oid;
+ }
+ for (let i in this.sourceData) {
+ const item = this.sourceData[i]
+ if (item && item.constructor === Object) continue;
+ if (i == 'type' || i == 'context' || i == 'content') continue;
+ sourceDataMap['sourceData["' + i + '"]'] = item
+ }
+ }
+
+ if (Object.keys(this.paramVOS).length > 0) {
+ for (let j in this.paramVOS) {
+ if (this.paramVOS[j] && this.paramVOS[j].constructor === Object) continue;
+ if (j == 'type' || j == 'context' || j == 'content' || j == "getdataurl" || j == "getdatamethod" || j == "url" || j == "method" || j == "uploadfileurl" || j == "title") continue;
+ sourceDataMap['sourceData["' + j + '"]'] = this.paramVOS[j]
+ }
+ }
+ return sourceDataMap;
+ },
+ getParams: function () {
+ let parentFieldName = "";
+ if (this.componentVO.treeDefineVO.showLinkAbs) {
+ parentFieldName = this.componentVO.treeDefineVO.showLinkAbs.split(",")[0];
+ }
+ const treeParams = {
+ queryAllLevel: !this.lazy,
+ loadType: this.componentVO.treeDefineVO.loadType,
+ multipleSelect: this.isMuti,
+ isMuti: this.isMuti,
+ isQueryAllColumn: true,
+ btmname: this.componentVO.treeDefineVO.btmType,
+ componentOid: this.componentVO.oid,
+ uiDefineId: this.uiContext,
+ valueField: this.componentVO.treeDefineVO.valueField || 'oid',
+ parentFieldName: parentFieldName,
+ textField: this.componentVO.treeDefineVO.treeNodeExpression,
+ queryTemplate: this.sourceData.querytemplate,
+ linkTypeFlag: validatenull(this.sourceData.queryType) ? (validatenull(this.sourceData.linkType) ? false : true) : (this.sourceData.queryType == 0 ? false : true),
+ rootExpress: this.componentVO.treeDefineVO.rootExpress || ''
+ }
+ const sourceDataMapList = this.sourceDataMapParams;
+
+ this.params = Object.assign({}, treeParams, sourceDataMapList);
+ },
+ initData() {
+ this.data=[];
+ if (Object.keys(this.sourceData).length > 0 && this.isShow) {
+ getTree(null, null, Object.assign({
+ queryRoot: true
+ }, this.params)).then(res => {
+ this.data = res.data.treeData;
+ }).catch(error => {
+ this.$message.error(error);
+ })
+ }
+ },
+ loadNode(node, resolve) {
+ //閫愮骇鍔犺浇
+ let parentOid = (node.level === 0) ? 0 : node.data.oid;
+ if (parentOid != 0 && parentOid.indexOf('@vcitreesep@') > -1) {
+ parentOid = parentOid.split('@vcitreesep@')[1];
+ }
+ const parentBtmName = (node.level === 0) ? '' : node.data.attributes.btmname;
+ const params = this.params;
+ if (node.level === 0) {
+ params.queryRoot = true;
+ } else {
+ delete params.queryRoot;
+ }
+ getTree(parentOid, parentBtmName, params).then(res => {
+ resolve(res.data.treeData)
+ this.$nextTick(()=>{
+ if (this.isRefresh) {
+ this.$refs.tree.setCurrentKey(this.currentClickNode.data.oid);
+ this.isRefresh=false;
+ }
+ })
+
+ }).catch(error => {
+ this.$message.error(error);
+ })
+ },
+ checkNode(checkedNode, checkedData) {
+ if (this.isMuti) {
+ let checkDatas = [];
+ checkedData.checkedNodes.forEach(item=>{
+ checkDatas.push(item.attributes)
+ })
+ this.checkDatas=checkDatas;
+ }
+ },
+ changeNode(data, node) {
+ if (!this.isMuti) {
+ this.checkDatas = [data.attributes];
+ }
+ },
+ clickNode(data, node) {
+ this.currentClickNode = node;
+ },
+ handleRefresh(type,data) {
+ //type:add\edit\delete
+ if(type=="delete" || type=="del"){
+ this.$refs.tree.remove(this.currentClickNode);
+ this.currentClickNode=null;
+ }else{
+ if (!this.lazy) {
+ this.initData();
+ } else {
+ if (this.currentClickNode) {
+ let node = this.currentClickNode.parent;
+ node.loaded = false;
+ node.expand();
+ this.isRefresh=true;
+ }
+ }
+ }
+ this.checkDatas = [];
+ }
+ },
}
</script>
<style scoped>
-
+.filter-tree{
+ height: calc(100% - 50px);
+ overflow: auto;
+ box-sizing: border-box;
+ padding-top: 10px;
+}
</style>
--
Gitblit v1.9.3