Browse Source

BI子表设置字段属性完成

qin_25
herenshan112 2 months ago
parent
commit
2b0d0f9490
  1. 2
      src/views/hr/archives/index.vue
  2. 23
      src/views/sysworkflow/lowcodepage/appPage/appPageForm/echatesUnit/chart/bar.vue
  3. 166
      src/views/sysworkflow/lowcodepage/appPage/appPageForm/echatesUnit/right.vue
  4. 9
      src/views/sysworkflow/lowcodepage/appPage/appPageForm/echatesUnit/winBox/dimMea.vue

2
src/views/hr/archives/index.vue

@ -1017,7 +1017,7 @@ const systemMenuTreeProps = {
width="800"
:before-close="closeUploadTemp"
>
<el-row v-loading="excelLoading" element-loading-text="文档上传中,请稍候...">
<el-row v-loading="excelLoading" element-loading-text="文档上传中请稍候..." >
<el-col :span="24">
<el-form :model="tempForm" label-width="auto" style="max-width: 100%">
<el-form-item label="请选择上传那个公司的人员信息">

23
src/views/sysworkflow/lowcodepage/appPage/appPageForm/echatesUnit/chart/bar.vue

@ -143,8 +143,11 @@ const seriesAnlay = (listVal: any[]) => {
position: "top",
};
});
}
return listVal;
}else{
return []
}
};
/**
@ 作者: 秦东
@ -261,7 +264,7 @@ const drawPictures = () => {
// ],
// });
console.log("画图完毕---->", props);
// myChart.value.resize();
myChart.value.resize();
}else {
myChart.value.setOption({
grid: {
@ -306,14 +309,14 @@ const controlData = computed(() => {
// },
// { deep: true }
// );
// watch(
// () => props.data,
// (val: any) => {
// console.log("---->", val);
// drawPictures();
// },
// { deep: true }
// );
watch(
() => props.data,
(val: any) => {
console.log("画图完毕--改变-->", props.data);
drawPictures();
},
{ deep: true }
);
/**
@ 作者: 秦东
@ 时间: 2025-06-26 09:47:45

166
src/views/sysworkflow/lowcodepage/appPage/appPageForm/echatesUnit/right.vue

@ -85,8 +85,17 @@ watch(
list.push(valItem)
}
})
let tableTitle = "";
if(Array.isArray(props.sunDimAry) && props.sunDimAry.length > 0){
props.sunDimAry.forEach((taItem:any)=>{
if(taItem.tableKey == item){
tableTitle = taItem.tableName
}
})
}
weiduSunList.value.push({
tableKey:item,
tableTitle:tableTitle,
list:list
})
})
@ -127,8 +136,17 @@ watch(
list.push(valItem)
}
})
let tableTitle = "";
if(Array.isArray(props.sunDimAry) && props.sunDimAry.length > 0){
props.sunDimAry.forEach((taItem:any)=>{
if(taItem.tableKey == item){
tableTitle = taItem.tableName
}
})
}
duliangSunList.value.push({
tableKey:item,
tableTitle:tableTitle,
list:list
})
})
@ -277,10 +295,119 @@ const shuxingmh = (val: any) => {
}
return titleVal;
};
//
const initDerStor = () => {
console.log("初始化维度-----xsun----->",controlData.value.xsun)
console.log("初始化维度-----ysun----->",controlData.value.ysun)
console.log("初始化维度-----sunDimAry----->",props.sunDimAry)
duliangSunList.value = []
weiduSunList.value = []
console.log("初始化维度-----sunDimAry--1--->",Array.isArray(props.sunDimAry) , props.sunDimAry.length > 0)
if(Array.isArray(props.sunDimAry) && props.sunDimAry.length > 0){
props.sunDimAry.forEach((taItem:any)=>{
console.log("初始化维度-----xsun--1--->",Array.isArray(controlData.value.xsun) , controlData.value.xsun.length > 0)
//x
if(Array.isArray(controlData.value.xsun) && controlData.value.xsun.length > 0){
let list = []
controlData.value.xsun.forEach((xItem:any)=>{
if(taItem.tableKey == xItem.tableKey){
list.push(xItem)
}
})
weiduSunList.value.push({
tableKey:taItem.tableKey,
tableTitle:taItem.tableName,
list:list
})
}
//y
if(Array.isArray(controlData.value.ysun) && controlData.value.ysun.length > 0){
let list = []
controlData.value.ysun.forEach((yItem:any)=>{
if(taItem.tableKey == yItem.tableKey){
list.push(yItem)
}
})
console.log("初始化维度-----ysun--1--->",list)
duliangSunList.value.push({
tableKey:taItem.tableKey,
tableTitle:taItem.tableName,
list:list
})
}
})
}
console.log("初始化维度-----weiduSunList----->",weiduSunList.value)
console.log("初始化维度-----duliangSunList----->",duliangSunList.value)
}
const activeXName = ref(0)
const activeYName = ref(0)
//
const delDimSun = (tableKey:string,fieldKey:string) => {
if(Array.isArray(controlData.value.xsun) && controlData.value.xsun.length > 0){
let list = []
controlData.value.xsun.forEach((xItem:any,index:number)=>{
if(xItem.tableKey == tableKey && xItem.field == fieldKey ){
list.push(index)
}
})
if(list.length > 0){
list.forEach((item:number) => {
controlData.value.xsun.splice(item, 1);
})
}
if(Array.isArray(controlData.value.xsun)){
if (controlData.value.xsun.length <= 0){
controlData.value.ysun = []
}
}else{
controlData.value.xsun = []
controlData.value.ysun = []
}
}else{
controlData.value.xsun = []
controlData.value.ysun = []
}
}
//
const delDimSunDuliang = (tableKey:string,fieldKey:string) => {
if(Array.isArray(controlData.value.ysun) && controlData.value.ysun.length > 0){
let list = []
controlData.value.ysun.forEach((xItem:any,index:number)=>{
if(xItem.tableKey == tableKey && xItem.field == fieldKey ){
list.push(index)
}
})
if(list.length > 0){
list.forEach((item:number) => {
controlData.value.ysun.splice(item, 1);
})
}
}else{
controlData.value.ysun = []
}
}
onMounted(()=>{
initDerStor()
})
</script>
<template>
<div class="echartsRight">
<el-divider content-position="left">配置属性</el-divider>
<div v-if="controlData.icon">
<div class="arttBoxTitle">
<el-text class="mx-1" size="large">图表名称</el-text>
@ -326,23 +453,28 @@ const shuxingmh = (val: any) => {
<svg-icon icon-class="sc" :size="20" class="setBut" @click="delDim(index)" />
</el-space>
</div>
</div>
<div v-for="(item, index) in controlData.xsun" class="dimListBox">
<div class="dimListTitle">{{ item.title }}</div>
<el-tabs v-if="weiduSunList&&weiduSunList.length>0" v-model="activeXName" type="border-card" class="demo-tabs">
<el-tab-pane v-for="(item,index) in weiduSunList" :label="item.tableTitle" :name="index">
<div v-for="(sitem, sindex) in item.list" class="dimListBox">
<div class="dimListTitle">{{ sitem.title }}</div>
<el-space wrap>
<svg-icon
icon-class="set"
:size="20"
class="setBut"
@click="setDimInfo(item)"
@click="setDimInfo(sitem)"
/>
<svg-icon icon-class="sc" :size="20" class="setBut" @click="delDim(index)" />
<svg-icon icon-class="sc" :size="20" class="setBut" @click="delDimSun(item.tableKey,sitem.field)" />
</el-space>
</div>
</el-tab-pane>
</el-tabs>
</div>
<div class="arttBoxTitle">
<div class="arttBoxTitle" style="margin-top:10px;">
<el-text class="mx-1" size="large">看板指标/度量</el-text>
<el-text class="mx-1 shouxing" type="primary" @click="pickDim(2)">添加</el-text>
</div>
@ -366,6 +498,25 @@ const shuxingmh = (val: any) => {
</el-space>
</div>
</div>
<el-tabs v-if="duliangSunList&&duliangSunList.length>0" v-model="activeYName" type="border-card" class="demo-tabs">
<el-tab-pane v-for="(item,index) in duliangSunList" :label="item.tableTitle" :name="index">
<div v-for="(sitem, sindex) in item.list" class="dimListBox">
<div class="dimListTitle">{{ sitem.title }}</div>
<el-space wrap>
<svg-icon
icon-class="set"
:size="20"
class="setBut"
@click="setMeaInfo(sitem)"
/>
<svg-icon icon-class="sc" :size="20" class="setBut" @click="delDimSunDuliang(item.tableKey,sitem.field)" />
</el-space>
</div>
</el-tab-pane>
</el-tabs>
<div class="arttBoxTitle">
<el-text class="mx-1" size="large">过滤器</el-text>
<el-text class="mx-1 shouxing" type="primary" @click="pickDim(3)">添加</el-text>
@ -486,6 +637,9 @@ const shuxingmh = (val: any) => {
.echartsRight {
width: 100%;
padding: 0px 10px;
:deep .el-tabs__content{
padding: 10px 2px 0 2px;
}
}
.arttBoxTitle {
display: flex;

9
src/views/sysworkflow/lowcodepage/appPage/appPageForm/echatesUnit/winBox/dimMea.vue

@ -231,7 +231,7 @@ const meaMakecont = (val: number) => {
// );
// console.log("--------->",checkMeaList.value)
if (Array.isArray(checkMeaList.value) && checkMeaList.value.length > 0) {
let fieldAry = new Array();
let fieldAry = [];
checkMeaList.value.forEach((item: any) => {
let valAry = item.split("|#$#|");
if (Array.isArray(valAry) && valAry.length > 1) {
@ -308,6 +308,8 @@ const meaMakecont = (val: number) => {
}
});
controlData.value.y = fieldAry;
}else{
controlData.value.y = [];
}
//
if(Array.isArray(checkListsunduLiang.value) && checkListsunduLiang.value.length > 0){
@ -333,6 +335,9 @@ const meaMakecont = (val: number) => {
checkListsunduLiang.value = []
console.log("子表度量",controlData.value.ysun)
}else{
controlData.value.ysun = []
checkListsunduLiang.value = []
}
};
/**
@ -590,7 +595,7 @@ const searchList = () => {
@ 功能: 确定选择
*/
const pickDimMeaSet = () => {
// console.log("", props.dimMeaType);
console.log("确定选择", props.dimMeaType);
// console.log(
// "----------checkListsunduLiang-------------->",
// checkListsunduLiang.value

Loading…
Cancel
Save