Browse Source

Merge branch 'lwx_v27'

han_v2
liwenxuan 5 months ago
parent
commit
2fae45d018
  1. 61
      src/components/DesignForm/app/index.vue
  2. 2
      src/components/DesignForm/public/form/formItem.vue
  3. 64
      src/components/DesignForm/tableListPage/index.vue
  4. 129
      src/widget/lowcodetransfer/lowcodeTransfer.vue

61
src/components/DesignForm/app/index.vue

@ -905,6 +905,7 @@ const searchSend = reactive({
viewClass: {},
});
let asfDetails = [];
let transferDetails = [];
let asfQueryParams: any[] = [];
/**
@ 作者: 秦东
@ -957,6 +958,10 @@ const getPageData = () => {
return item.fieldClass == "associatedForms";
});
transferDetails = props.data.columns.filter((item: any) => {
return item.fieldClass == "lowcodeTransfer";
});
if (asfDetails.length > 0 && data.data.list != null) {
//console.log(data.data.list)
//,asf
@ -1007,6 +1012,36 @@ const getPageData = () => {
tableDataList.value = data.data.list;
}
} else {
//console.log(data.data.list)
transferDetails.forEach(element => {
//console.log(element)
data.data.list.forEach((obj: any) => {
//console.log(obj)
for (const key in obj) {
//
if (Object.prototype.hasOwnProperty.call(obj, key)) {
const value = obj[key];
// /使JSON
const formattedValue =
(Array.isArray(value) || (typeof value === 'object' && value !== null))
? JSON.stringify(value, null, 2)
: value;
//console.log(`${key}: ${formattedValue}`);
if(key==element.field){
//console.log(key)
/* console.log(element.control.fixedOptions)
console.log(obj[key]) */
obj[key] = mapIdsToLabels(element.control.fixedOptions,obj[key])
}
}
}
});
});
//console.log(transferDetails)
//convertIdsToLabels(data.data.list.)
tableDataList.value = data.data.list;
}
@ -1029,6 +1064,32 @@ const getPageData = () => {
}
};
interface TreeNode {
id: string;
label: string;
disabled: boolean;
children: TreeNode[];
}
function mapIdsToLabels(treeNodes: TreeNode[], ids1: string): string[] {
const ids: string[] = JSON.parse(ids1);
// idlabel
const idToLabelMap: Record<string, string> = {};
//
function traverse(node: TreeNode) {
idToLabelMap[node.id] = node.label; //
node.children.forEach(child => traverse(child)); //
}
//
treeNodes.forEach(root => traverse(root));
//console.log(ids)
// idlabel
return ids.map(id => idToLabelMap[id]);
}
const asfGetPageData = (asfFormId: any, asfToSelectMastersKey: any) => {
let searchData = [
{

2
src/components/DesignForm/public/form/formItem.vue

@ -1066,7 +1066,7 @@ const diGuiJilian = (val: any, options: any[]) => {
/>
<LowcodeTransfer
v-else-if="judgeIsShow(data.name) && data.type === 'lowcodeTransfer' && type != 4"
v-else-if="judgeIsShow(data.name) && data.type === 'lowcodeTransfer' "
:data="data"
/>

64
src/components/DesignForm/tableListPage/index.vue

@ -900,6 +900,7 @@ const searchSend = reactive({
});
let asfDetails = [];
let transferDetails = [];
let asfQueryParams: any[] = [];
/**
@ 作者: 秦东
@ -958,8 +959,13 @@ const getPageData = () => {
return item.fieldClass == "associatedForms";
});
transferDetails = props.data.columns.filter((item: any) => {
return item.fieldClass == "lowcodeTransfer";
});
//console.log(asfDetails)
if (asfDetails.length > 0 && data.data.list != null) {
//console.log(data.data.list)
console.log(data.data.list)
//,asf
asfQueryParams = [];
for (let j = 0; j < asfDetails.length; j++) {
@ -1001,12 +1007,43 @@ const getPageData = () => {
}
}
}
tableDataList.value = dataList.data.list;
});
} else {
tableDataList.value = data.data.list;
}
} else {
//console.log(data.data.list)
transferDetails.forEach(element => {
//console.log(element)
data.data.list.forEach((obj: any) => {
//console.log(obj)
for (const key in obj) {
//
if (Object.prototype.hasOwnProperty.call(obj, key)) {
const value = obj[key];
// /使JSON
const formattedValue =
(Array.isArray(value) || (typeof value === 'object' && value !== null))
? JSON.stringify(value, null, 2)
: value;
//console.log(`${key}: ${formattedValue}`);
if(key==element.field){
//console.log(key)
/* console.log(element.control.fixedOptions)
console.log(obj[key]) */
obj[key] = mapIdsToLabels(element.control.fixedOptions,obj[key])
}
}
}
});
});
//console.log(transferDetails)
//convertIdsToLabels(data.data.list.)
tableDataList.value = data.data.list;
}
//liwenxuan end
@ -1026,6 +1063,31 @@ const getPageData = () => {
}
};
interface TreeNode {
id: string;
label: string;
disabled: boolean;
children: TreeNode[];
}
function mapIdsToLabels(treeNodes: TreeNode[], ids1: string): string[] {
const ids: string[] = JSON.parse(ids1);
// idlabel
const idToLabelMap: Record<string, string> = {};
//
function traverse(node: TreeNode) {
idToLabelMap[node.id] = node.label; //
node.children.forEach(child => traverse(child)); //
}
//
treeNodes.forEach(root => traverse(root));
//console.log(ids)
// idlabel
return ids.map(id => idToLabelMap[id]);
}
const asfGetPageData = (asfFormId: any, asfToSelectMastersKey: any) => {
let searchData = [
{

129
src/widget/lowcodetransfer/lowcodeTransfer.vue

@ -17,7 +17,7 @@
</div>
<div class="leftScroll">
<ElScrollbar height="100%">
<ElTree ref="treeRef" node-key="id" empty-text="暂无数据" :data="userList" :props="treeProps"
<ElTree ref="treeRef" node-key="id" empty-text="暂无数据" :data="userList1" :props="treeProps"
show-checkbox highlight-current :default-expand-all="isExpandAll"
:filter-node-method="filterNode" @check="handleCheckList" @check-change="getCheckedList" />
</ElScrollbar>
@ -53,6 +53,7 @@
import { ref, watch, onMounted } from 'vue'
import request from '@/utils/request';
import { forEach } from 'jszip';
const props = defineProps({
// eslint-disable-next-line vue/require-default-prop
@ -97,19 +98,22 @@ const treeProps = {
}
let dataFinished = ref(false)
const treeRef = ref()
const isExpandAll = ref(false) //
const isExpandAll = ref(transferConfig.value.transferDataSource != "数据源") //
const keyword = ref('') //
const checkList = ref([]) // list
const userList = computed({
get(){
if (transferConfig.value.transferDataSource === "数据源") {
return [{
id: '全选',
label: '全选',
children: [...resData.value]
}]
}else{
return [{
id: '全选',
label: '全选',
@ -122,6 +126,9 @@ const userList = computed({
}
})
let userList1 = ref([]);
//
let checkedIdList = ref([]);
let count = 0
function waitAndReGet() {
@ -210,7 +217,11 @@ if (transferConfig.value.transferDataSource === "数据源") {
label: '全选',
children: [...resData.value]
}]
treeRef.value.setCheckedKeys(checkedIdList.value, true)
userList1.value = userList.value
if( treeRef.value){
treeRef.value.setCheckedKeys(checkedIdList.value, true)
}
setTimeout(() => {
checkedIdList.value.forEach(element => {
const _node = treeRef?.value?.getNode(element)
@ -324,13 +335,34 @@ const handleCheckList = (val) => {
if (!_node) return
const _checkList = checkList.value
//console.log(checkedIdList.value)
if (_node.checked||_node.childNodes.length > 0) {
//console.log(1)
if (_node.checked && _node.childNodes.length === 0) {
_checkList.push(_node)
let count = 0
checkedIdList.value.forEach(element1 => {
if(element1==valId){
count++
}
});
if(count==1){
_checkList.push(_node)
}
}
// new Set()
checkList.value = Array.from(new Set(_checkList))
//console.log(_checkList)
/* checkList.value.forEach(element => {
console.log(element.data.id)
}); */
//使 Map id
checkList.value = Array.from(new Map(
_checkList.map(item => [item.data.id, item])
).values());
// ,,
if (_node.childNodes.length > 0) {
_node.childNodes.map(item => handleCheckList(item.data))
@ -410,14 +442,76 @@ const expandAll = () => {
}
}
let watchCount = 0
// tree
watch(keyword, (newVal) => {
console.log(keyword)
console.log(newVal)
treeRef.value.filter(newVal)
console.log(fuzzyTreeSearch(userList.value,newVal))
userList1.value = fuzzyTreeSearch(userList.value,newVal)
console.log(userList1.value)
//treeRef.value.data = fuzzyTreeSearch(treeRefValueData,newVal)
watchCount++
isShowMore()
})
function isShowMore() {
isExpandAll.value = true
let nodes = treeRef.value.store._getAllNodes();
nodes.forEach(item => {
item.expanded = true;
});
}
function fuzzyTreeSearch(treeData, keyword) {
if (!keyword?.trim()) return deepClone(treeData); //
const processNode = (node) => {
const newNode = deepClone(node); //
const isSelfMatch = newNode.label.toLowerCase().includes(keyword.toLowerCase());
//
let hasValidChild = false;
if (newNode.children?.length) {
newNode.children = newNode.children
.map(child => processNode(child))
.filter(Boolean); //
hasValidChild = newNode.children.length > 0;
}
//
if (isSelfMatch || hasValidChild) {
// 使
if (isSelfMatch && newNode.children?.length === 0) {
newNode.children = deepClone(node.children); //
}
return newNode;
}
return null;
};
return treeData.map(root => processNode(root)).filter(Boolean);
}
function deepClone(obj) {
if (obj === null || typeof obj !== 'object') return obj;
const clone = Array.isArray(obj) ? [] : {};
for (const key in obj) {
clone[key] = deepClone(obj[key]);
}
return clone;
}
//
if (transferConfig.value.transferDataSource === "固定选项") {
setTimeout(() => {
@ -428,9 +522,12 @@ if (transferConfig.value.transferDataSource === "固定选项") {
label: '全选',
children: props.data?.control.fixedOptions
}]
userList1.value = userList.value
//console.log(treeRef)
/* console.log(checkedIdList.value) */
treeRef.value.setCheckedKeys(checkedIdList.value, true)
if( treeRef.value){
treeRef.value.setCheckedKeys(checkedIdList.value, true)
}
setTimeout(() => {
checkedIdList.value.forEach(element => {
const _node = treeRef?.value?.getNode(element)
@ -525,7 +622,10 @@ watch(transferConfig, (newValue, oldValue) => {
label: '全选',
children: [...resData.value]
}]
treeRef.value.setCheckedKeys(checkedIdList.value, true)
userList1.value = userList.value
if( treeRef.value){
treeRef.value.setCheckedKeys(checkedIdList.value, true)
}
setTimeout(() => {
checkedIdList.value.forEach(element => {
const _node = treeRef?.value?.getNode(element)
@ -573,9 +673,12 @@ watch(selectedValueCompu, (newValue, oldValue) => {
label: '全选',
children: props.data?.control.fixedOptions
}]
userList1.value = userList.value
//console.log(treeRef)
/* console.log(checkedIdList.value) */
treeRef.value.setCheckedKeys(checkedIdList.value, true)
if( treeRef.value){
treeRef.value.setCheckedKeys(checkedIdList.value, true)
}
setTimeout(() => {
checkedIdList.value.forEach(element => {
const _node = treeRef?.value?.getNode(element)

Loading…
Cancel
Save