Files
clue/Pages/项目/项目首页/项目首页-容器页面/项目概况.json

1161 lines
56 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"Rows": {
"RowColumnAttachedInfos": {
"0": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 24.0
}
},
"1": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 183.0
}
},
"2": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 24.0
}
},
"3": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 40.0
}
},
"4": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 175.0
}
},
"5": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 24.0
}
},
"6": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 40.0
}
},
"7": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 198.0
}
},
"8": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 10.0
}
},
"9": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 40.0
}
},
"10": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 284.0
}
},
"11": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 24.0
}
},
"12": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 40.0
}
},
"13": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 379.0,
"Mode": 1
}
},
"14": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 24.0
}
},
"15": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 40.0
}
},
"16": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 615.0
}
},
"17": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"18": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 45.0
}
}
},
"InLogicalVisibleIndexes": [
18
],
"Count": 19,
"DefaultSize": 24.0
},
"Cols": {
"RowColumnAttachedInfos": {
"0": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"1": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"2": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"3": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"4": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"5": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"6": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"7": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"8": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"9": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"10": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"11": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"12": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"13": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"14": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"15": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"16": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0,
"Mode": 2,
"MinLength": {
"Unit": 1
},
"MaxLength": {
"Value": 1.0
}
}
},
"17": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"18": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"19": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"20": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"21": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"22": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"23": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"24": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"25": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"26": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"27": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"28": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"29": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"31": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 15.0
}
},
"32": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 24.0
}
},
"33": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 24.0
}
},
"40": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"41": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"42": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"43": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"44": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
},
"45": {
"GridRowColumnDefinition": {
"DesignLengthInPixel": 32.0
}
}
},
"Count": 46,
"DefaultSize": 32.0
},
"Values": {
"1,1": "项目概况-关键数据",
"3,1": "三经理",
"4,1": "项目三经理成员",
"6,1": "项目成员",
"7,1": "项目成员统计",
"9,1": "工时上报趋势图",
"12,1": "项目进展",
"13,1": "项目甘特图",
"15,1": "反馈桑基图",
"16,1": "反馈统计(饼图+表格)"
},
"AttachInfos": {
"1,1": {
"CellType": {
"$type": "Forguncy.ContentContainerCellType, ServerDesignerCommon",
"PageName": "项目概况-关键数据",
"OverflowMode": 1
}
},
"1,34": {
"CellType": {
"$type": "Forguncy.RepeaterCellType, ServerDesignerCommon",
"TemplatePageName": "eaf92441634a4701b4a255ccc7601ac",
"DataSourceType": 1,
"DataSource": {
"$type": "ServerDesignerCommon.Model.BindingDataSourceModel, ServerDesignerCommon",
"TableName": "项目动态",
"BindingInfos": [
{
"GUID": "803d24d8-bdc4-4d07-bf81-21dbfdd78749",
"BindingInfo": {
"TableName": "项目动态",
"ColumnName": "ID",
"GUID": "c017c1d1-cc25-4320-a271-2cc504eacc0a"
},
"ColumnName": "ID"
},
{
"GUID": "a5006923-c08a-41a2-9513-f5da0af6af36",
"BindingInfo": {
"TableName": "项目动态",
"ColumnName": "项目动态",
"GUID": "f1cec5fa-9c97-4506-840a-0db9faa8a60f"
},
"ColumnName": "项目动态"
},
{
"GUID": "cbeee7cc-9912-4748-a9f1-924e538d03db",
"BindingInfo": {
"TableName": "项目动态",
"ColumnName": "执行人",
"GUID": "091faf5e-f016-450b-b0d6-1a0ae722791b",
"AttachType": {
"$type": "ForguncyDataAccess.UserColumnAttachObj, ForguncyDataAccess",
"UserColumnAttachType": 1
}
},
"ColumnName": "执行人_全名"
},
{
"GUID": "ef33cc8c-e576-4f9f-89f7-b5dfc1102081",
"BindingInfo": {
"TableName": "项目动态",
"ColumnName": "类型",
"GUID": "447bd734-9eab-43b2-a14d-ce63a7cc4ac2",
"RelationBinding": {
"RelatedTable": "项目动态类型",
"RelatedColumn": "类型码",
"DisplayColumn": "类型"
}
},
"ColumnName": "类型"
},
{
"GUID": "9cf61bb7-01d3-4086-9699-698d254d1af8",
"BindingInfo": {
"TableName": "项目动态",
"ColumnName": "FGC_CreateDate",
"GUID": "689efe36-d2c8-45d4-ae5f-108955d5bfae"
},
"ColumnName": "创建日期"
}
],
"SqlCondition": {
"$type": "ForguncyDataAccess.GeneralCESqlCondition, ForguncyDataAccess",
"ColumnBindingInfo": {
"TableName": "项目动态",
"ColumnName": "项目ID",
"GUID": "298caa23-c2af-4efe-ae25-1eb9e41d8e54"
},
"Value": {
"$type": "Forguncy.Model.FormulaReferObject, ServerDesignerCommon",
"SerializeProperty": "=项目概况!项目ID"
}
},
"OrderBySqlCondition": {
"OrderByColumns": [
{
"ColumnBindingInfo": {
"TableName": "项目动态",
"ColumnName": "FGC_CreateDate",
"GUID": "b42eb808-7a9b-4ada-9661-937ed2b42736"
},
"Order": 1
}
]
},
"IsListviewDataSource": true,
"CustomColumns": [
"ID",
"项目动态",
"执行人_全名",
"类型",
"创建日期"
]
},
"DataSourceListviewName": "图文列表表格2",
"TopCount": 30,
"IsLoadOnDemand": true,
"LoadOnDemandCount": 30
}
},
"4,1": {
"CellType": {
"$type": "Forguncy.ContentContainerCellType, ServerDesignerCommon",
"PageName": "项目三经理成员",
"OverflowMode": 1
}
},
"7,1": {
"CellType": {
"$type": "Forguncy.ContentContainerCellType, ServerDesignerCommon",
"PageName": "项目成员统计"
}
},
"10,1": {
"CellType": {
"$type": "EchartsCustomCellType.EchartsCustomCellTypeCellType, EchartsCustomCellType",
"EChartTitle": "Echarts图表",
"DataSourceBinding": "DataSources",
"DataSources": [
{
"Name": "report",
"BindingTableOptions": {
"$type": "ServerDesignerCommon.Model.BindingDataSourceModel, ServerDesignerCommon",
"TableName": "任务工时表",
"BindingInfos": [
{
"GUID": "df33b2b4-44bc-4e19-b4a7-70b606e9a7e2",
"BindingInfo": {
"TableName": "任务工时表",
"ColumnName": "日期文本",
"GUID": "bad1b002-b63d-48d4-9765-67eef5895c4a"
},
"ColumnName": "日期"
},
{
"GUID": "895cd2ec-16b8-4f51-b109-144638c37bdc",
"BindingInfo": {
"TableName": "任务工时表",
"ColumnName": "总工时",
"GUID": "7e7af8c0-b690-4b23-a73f-658bcacc829a"
},
"ColumnName": "工时"
}
],
"SqlCondition": {
"$type": "ForguncyDataAccess.RelationSqlCondition, ForguncyDataAccess",
"SubConditions": [
{
"$type": "ForguncyDataAccess.GeneralCESqlCondition, ForguncyDataAccess",
"ColumnBindingInfo": {
"TableName": "任务工时表",
"ColumnName": "项目ID",
"GUID": "e36feea1-22a2-40b3-84d1-8f0ca6938e5c"
},
"Value": {
"$type": "Forguncy.Model.FormulaReferObject, ServerDesignerCommon",
"SerializeProperty": "=项目概况!项目ID"
}
},
{
"$type": "ForguncyDataAccess.GeneralCESqlCondition, ForguncyDataAccess",
"ColumnBindingInfo": {
"TableName": "任务工时表",
"ColumnName": "工时类型",
"GUID": "9580bd5c-5a43-4071-94c3-1236badfbeba"
},
"Value": "实际"
}
]
},
"NullFormulaValueQueryPolicy": 2,
"OrderBySqlCondition": {
"OrderByColumns": [
{
"ColumnBindingInfo": {
"TableName": "任务工时表",
"ColumnName": "日期文本",
"GUID": "14fae325-2c39-4017-b8e4-24ffa878cae8"
},
"Order": 0
}
]
},
"CustomColumns": []
}
}
],
"JSONDataSources": [],
"ImageDataSource": [],
"Config": "{\"option\":\"\\nconst {\\n \\\"日期\\\": xAxisData,\\n \\\"工时\\\": yAxisData\\n} = ForguncyEchartsHelper.splitDataSource(Context.report);\\nconsole.log(xAxisData);\\nconsole.log(yAxisData);\\n\\n\\noption = {\\n title:{\\n text:'工时上报趋势图',\\n show:false,\\n left: 'center'\\n },\\n color: ['#00bcd4', '#00DDFF', '#37A2FF', '#FF0087', '#FFBF00'],\\n tooltip: {\\n trigger: 'axis',\\n axisPointer: {\\n type: 'cross',\\n label: {\\n backgroundColor: '#6a7985'\\n }\\n }\\n },\\n grid:{\\n left:25,\\n right:25,\\n top:55,\\n bottom:30\\n },\\n xAxis: {\\n type: 'category',\\n data: xAxisData,\\n splitLine:{\\n show:false\\n }\\n },\\n yAxis: {\\n type: 'value',\\n splitLine:{\\n show:true,\\n lineStyle:{\\n width:0.5,\\n color:'#e6e6e6'\\n }\\n }\\n },\\n series: [\\n {\\n data: yAxisData,\\n type: 'line',\\n smooth: true,\\n lineStyle: {\\n width: 3\\n },\\n areaStyle: {\\n opacity: 0.8,\\n color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\\n {\\n offset: 0,\\n color: 'rgba(0,188,212,0.8)'\\n },\\n {\\n offset: 1,\\n color: 'rgba(0,188,212,0)'\\n }\\n ])\\n },\\n }\\n ]\\n};\",\"graphTheme\":null,\"displayMode\":\"canvas\",\"jsCode\":\"\\n async ({Context,JSONContext,ImageContext,echarts,myChart,dat,Forguncy,d3,setInterval,setTimeout,ForguncyEchartsHelper,ApplicationResource})=>{\\n var datGUI=undefined;\\n var option={};\\n const { \\\"日期\\\": xAxisData, \\\"工时\\\": yAxisData } = ForguncyEchartsHelper.splitDataSource(Context.report);\\nconsole.log(xAxisData);\\nconsole.log(yAxisData);\\noption = {\\n title: {\\n text: '工时上报趋势图',\\n show: false,\\n left: 'center'\\n },\\n color: ['#00bcd4', '#00DDFF', '#37A2FF', '#FF0087', '#FFBF00'],\\n tooltip: {\\n trigger: 'axis',\\n axisPointer: {\\n type: 'cross',\\n label: {\\n backgroundColor: '#6a7985'\\n }\\n }\\n },\\n grid: {\\n left: 25,\\n right: 25,\\n top: 55,\\n bottom: 30\\n },\\n xAxis: {\\n type: 'category',\\n data: xAxisData,\\n splitLine: {\\n show: false\\n }\\n },\\n yAxis: {\\n type: 'value',\\n splitLine: {\\n show: true,\\n lineStyle: {\\n width: 0.5,\\n color: '#e6e6e6'\\n }\\n }\\n },\\n series: [\\n {\\n data: yAxisData,\\n type: 'line',\\n smooth: true,\\n lineStyle: {\\n width: 3\\n },\\n areaStyle: {\\n opacity: 0.8,\\n color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\\n {\\n offset: 0,\\n color: 'rgba(0,188,212,0.8)'\\n },\\n {\\n offset: 1,\\n color: 'rgba(0,188,212,0)'\\n }\\n ])\\n },\\n }\\n ]\\n};\\n\\n return {\\n option,\\n datGUI,\\n };\\n }\\n \"}"
}
},
"12,30": {
"CellType": {
"$type": "Forguncy.ImageCellType, ServerDesignerCommon",
"CommandList": [
{
"$type": "Forguncy.Model.ShowPopupCommand, ServerDesignerCommon",
"PageName": "新增进展",
"PassValues": [
{
"Source": {
"$type": "Forguncy.Model.FormulaReferObject, ServerDesignerCommon",
"SerializeProperty": "=项目概况!项目ID"
},
"TargetCell": {
"SerializeProperty": "=新增进展!项目ID"
}
}
],
"LoadBindingDataOption": 2,
"BreakpointIdentity": "d8c59aa3-99f9-43b7-9ed1-a6467df4e26a"
}
],
"ToolTip": "添加进展",
"Size": 18,
"ImagePath": "增加.svg",
"UseCellForeColor": true
}
},
"13,1": {
"CellType": {
"$type": "Forguncy.RepeaterCellType, ServerDesignerCommon",
"TemplatePageName": "f9ec059d9c5d440eabbb7db442b15c9",
"DataSourceType": 1,
"DataSource": {
"$type": "ServerDesignerCommon.Model.BindingDataSourceModel, ServerDesignerCommon",
"TableName": "项目进展",
"BindingInfos": [
{
"GUID": "750994ef-dfe3-440e-ac22-18b8afd004e7",
"BindingInfo": {
"TableName": "项目进展",
"ColumnName": "ID",
"GUID": "3b337aac-9034-4abb-a639-076fb6889a3d"
},
"ColumnName": "ID"
},
{
"GUID": "2404a2a9-b3a0-41d6-940d-43c40b6bf7eb",
"BindingInfo": {
"TableName": "项目进展",
"ColumnName": "进展类型",
"GUID": "f4ec46ce-e7f2-4bd2-9c53-247fad9f3c4d"
},
"ColumnName": "进展类型"
},
{
"GUID": "85978812-5d3d-4d1e-becc-7c6bcb565669",
"BindingInfo": {
"TableName": "项目进展",
"ColumnName": "进展内容",
"GUID": "0b23e108-0c6c-4aa3-abaf-3859eadbc5fd"
},
"ColumnName": "进展内容"
},
{
"GUID": "967fa0dc-067d-4830-878f-92e9febdfaf5",
"BindingInfo": {
"TableName": "项目进展",
"ColumnName": "FGC_Creator",
"GUID": "6e2e341d-ed89-4c3a-89e9-370b1871dc8c",
"AttachType": {
"$type": "ForguncyDataAccess.UserColumnAttachObj, ForguncyDataAccess",
"UserColumnAttachType": 1
}
},
"ColumnName": "创建者_全名"
},
{
"GUID": "a1b31387-d996-419f-83b6-50b764970b85",
"BindingInfo": {
"TableName": "项目进展",
"ColumnName": "FGC_CreateDate",
"GUID": "af7014c3-c76f-4959-b20a-5d19427c471a"
},
"ColumnName": "创建日期"
}
],
"OrderBySqlCondition": {
"OrderByColumns": [
{
"ColumnBindingInfo": {
"TableName": "项目进展",
"ColumnName": "FGC_CreateDate",
"GUID": "9fe85b73-cd11-4353-ac33-18ac6189a301"
},
"Order": 1
}
]
},
"IsListviewDataSource": true,
"CustomColumns": []
},
"DataSourceListviewName": "图文列表表格1",
"OverflowMode": 2,
"NoItemSetting": {
"ImageForNoItem": {
"Name": "无数据插画.png"
},
"NoItemImageSize": 100.0,
"TextForNoItem": "暂无数据",
"Orientation": 1
},
"TemplateKey": "竖排横线分割"
}
},
"15,30": {
"CellType": {
"$type": "Forguncy.ImageCellType, ServerDesignerCommon",
"CommandList": [
{
"$type": "Forguncy.Model.ShowPopupCommand, ServerDesignerCommon",
"PageName": "新增进展",
"PassValues": [
{
"Source": {
"$type": "Forguncy.Model.FormulaReferObject, ServerDesignerCommon",
"SerializeProperty": "=项目概况!项目ID"
},
"TargetCell": {
"SerializeProperty": "=新增进展!项目ID"
}
}
],
"LoadBindingDataOption": 2,
"BreakpointIdentity": "8fc5eb08-21e5-452b-954b-aeb4b50de8b9"
}
],
"ToolTip": "添加进展",
"Size": 18,
"ImagePath": "增加.svg",
"UseCellForeColor": true
}
},
"16,1": {
"CellType": {
"$type": "EchartsCustomCellType.EchartsCustomCellTypeCellType, EchartsCustomCellType",
"EChartTitle": "Echarts图表",
"DataSourceBinding": "DataSources",
"DataSources": [
{
"Name": "recommands",
"BindingTableOptions": {
"$type": "ServerDesignerCommon.Model.BindingDataSourceModel, ServerDesignerCommon",
"TableName": "项目反馈数量统计视图",
"BindingInfos": [
{
"GUID": "d15e9015-e7dd-43c5-8527-23c05ea3599e",
"BindingInfo": {
"TableName": "项目反馈数量统计视图",
"ColumnName": "类型",
"GUID": "9e92f3f0-90fa-46a1-8cce-7ce5b44c068f"
},
"ColumnName": "类型"
},
{
"GUID": "91c7c1db-40ed-457b-9f7e-c2b410873c02",
"BindingInfo": {
"TableName": "项目反馈数量统计视图",
"ColumnName": "项目ID",
"GUID": "45e8f319-dad7-4f2b-ac25-53fb8a2cb99e"
},
"ColumnName": "项目ID"
},
{
"GUID": "1da4d2ca-b7f5-4067-870c-50e8958c9c01",
"BindingInfo": {
"TableName": "项目反馈数量统计视图",
"ColumnName": "任务ID",
"GUID": "fdac6ba6-e405-4db9-8432-75aaaf3dec3d"
},
"ColumnName": "任务ID"
},
{
"GUID": "7c1248ae-7392-43a9-b0b9-f8f2b7d1e20e",
"BindingInfo": {
"TableName": "项目反馈数量统计视图",
"ColumnName": "项目",
"GUID": "a2e35e97-627c-4627-963f-a8f53e7bc1f7"
},
"ColumnName": "项目"
},
{
"GUID": "6d164818-8269-436d-a12f-097fe6f626f1",
"BindingInfo": {
"TableName": "项目反馈数量统计视图",
"ColumnName": "任务",
"GUID": "90d1e566-44d4-472b-a318-517c9eb3ad75"
},
"ColumnName": "任务"
},
{
"GUID": "91c6f208-7336-46f3-80d8-9582cde6f9b1",
"BindingInfo": {
"TableName": "项目反馈数量统计视图",
"ColumnName": "数量",
"GUID": "b3efeef2-d6a1-4f9b-b1c2-9ec8e4cd2a1d"
},
"ColumnName": "数量"
}
],
"SqlCondition": {
"$type": "ForguncyDataAccess.GeneralCESqlCondition, ForguncyDataAccess",
"ColumnBindingInfo": {
"TableName": "项目反馈数量统计视图",
"ColumnName": "项目ID",
"GUID": "a4ad22fd-5c0f-430f-99fb-4b2b8a07d4e7"
},
"Value": {
"$type": "Forguncy.Model.FormulaReferObject, ServerDesignerCommon",
"SerializeProperty": "=项目首页!项目ID"
}
},
"NullFormulaValueQueryPolicy": 1,
"CustomColumns": [
"类型",
"项目ID",
"任务ID",
"项目",
"任务",
"数量"
]
}
}
],
"JSONDataSources": [],
"ImageDataSource": [],
"Config": "{\"option\":\"console.log(JSON.stringify(Context[\\\"recommands\\\"]));\\n\\n// 处理数据,生成节点和链接 \\nconst processData = (data) => {\\n // 生成颜色函数 - 使用HSL颜色空间为每层生成不同的柔和颜色 \\n const generateColors = (count, depth) => {\\n const colors = [];\\n // 黄金角度 约137.5° \\n const goldenAngle = 137.5;\\n\\n // 根据深度调整饱和度和亮度 \\n const getSaturation = (depth) => {\\n switch (depth) {\\n case 0: return '60%'; // 第一层 \\n case 1: return '50%'; // 第二层 \\n case 2: return '40%'; // 第三层 \\n default: return '50%';\\n }\\n };\\n\\n const getLightness = (depth) => {\\n switch (depth) {\\n case 0: return '60%'; // 第一层 \\n case 1: return '60%'; // 第二层 \\n case 2: return '60%'; // 第三层 \\n default: return '60%';\\n }\\n };\\n\\n // 使用黄金角度来生成颜色 \\n const usedHues = new Set();\\n const minHueDistance = 30; // 最小色相差 \\n\\n for (let i = 0; i < count; i++) {\\n // 基础色相值使用黄金角度 \\n let baseHue = (i * goldenAngle) % 360;\\n\\n // 添加小范围随机偏移,但确保与现有颜色保持最小距离 \\n let hue = baseHue;\\n let attempts = 0;\\n const maxAttempts = 10;\\n\\n // 检查新生成的色相是否与已有的色相保持足够距离 \\n while (attempts < maxAttempts) {\\n let isValidHue = true;\\n\\n for (const existingHue of usedHues) {\\n const distance = Math.min(\\n Math.abs(hue - existingHue),\\n 360 - Math.abs(hue - existingHue)\\n );\\n\\n if (distance < minHueDistance) {\\n isValidHue = false;\\n break;\\n }\\n }\\n\\n if (isValidHue) {\\n break;\\n }\\n\\n // 如果当前色相不合适,添加一个小偏移再试 \\n hue = (baseHue + Math.random() * 30 - 15) % 360;\\n if (hue < 0) hue += 360;\\n attempts++;\\n }\\n\\n usedHues.add(hue);\\n colors.push(`hsl(${hue}, ${getSaturation(depth)}, ${getLightness(depth)})`);\\n }\\n\\n return colors;\\n };\\n\\n // 收集所有唯一的节点 \\n const typeSet = new Set(data.map(item => item.类型));\\n const projectSet = new Set();\\n const taskSet = new Set();\\n\\n // 创建项目和任务的映射关系 \\n const projectTypeMap = new Map();\\n const taskTypeMap = new Map();\\n\\n data.forEach(item => {\\n const projectKey = `[${item.项目ID}]${item.项目}`;\\n const taskKey = `[${item.任务ID}]${item.任务}`;\\n\\n projectSet.add(projectKey);\\n taskSet.add(taskKey);\\n\\n if (!projectTypeMap.has(projectKey)) {\\n projectTypeMap.set(projectKey, new Set());\\n }\\n if (!taskTypeMap.has(taskKey)) {\\n taskTypeMap.set(taskKey, new Set());\\n }\\n\\n projectTypeMap.get(projectKey).add(item.类型);\\n taskTypeMap.get(taskKey).add(item.类型);\\n });\\n\\n // 转换为数组 \\n const typeArray = Array.from(typeSet);\\n const projectArray = Array.from(projectSet);\\n const taskArray = Array.from(taskSet);\\n\\n // 为每层生成颜色 \\n const typeColors = {};\\n const projectColors = {};\\n const taskColors = {};\\n\\n const level0Colors = generateColors(typeArray.length, 0);\\n const level1Colors = generateColors(projectArray.length, 1);\\n const level2Colors = generateColors(taskArray.length, 2);\\n\\n typeArray.forEach((type, index) => {\\n typeColors[type] = level0Colors[index];\\n });\\n\\n projectArray.forEach((project, index) => {\\n projectColors[project] = level1Colors[index];\\n });\\n\\n taskArray.forEach((task, index) => {\\n taskColors[task] = level2Colors[index];\\n });\\n\\n // 计算节点值 \\n const nodeValues = {};\\n data.forEach(item => {\\n const projectKey = `[${item.项目ID}]${item.项目}`;\\n const taskKey = `[${item.任务ID}]${item.任务}`;\\n\\n nodeValues[item.类型] = (nodeValues[item.类型] || 0) + item.数量;\\n nodeValues[projectKey] = (nodeValues[projectKey] || 0) + item.数量;\\n nodeValues[taskKey] = (nodeValues[taskKey] || 0) + item.数量;\\n });\\n\\n // 生成节点 \\n const nodes = [\\n // 类型节点 \\n ...typeArray.map((type, index) => ({\\n name: type,\\n value: nodeValues[type],\\n itemStyle: {\\n color: typeColors[type],\\n borderColor: typeColors[type]\\n },\\n category: '类型',\\n depth: 0\\n })),\\n\\n // 项目节点 \\n ...projectArray.map(project => ({\\n name: project,\\n value: nodeValues[project],\\n itemStyle: {\\n color: projectColors[project]\\n },\\n category: '项目',\\n depth: 1\\n })),\\n\\n // 任务节点 \\n ...taskArray.map(task => ({\\n name: task,\\n value: nodeValues[task],\\n itemStyle: {\\n color: taskColors[task]\\n },\\n category: '任务',\\n depth: 2\\n }))\\n ];\\n\\n // 生成连接 \\n const links = [];\\n\\n // 处理类型到项目的连接 \\n data.forEach(item => {\\n const projectKey = `[${item.项目ID}]${item.项目}`;\\n const source = item.类型;\\n const target = projectKey;\\n\\n const existingLink = links.find(link =>\\n link.source === source && link.target === target\\n );\\n\\n if (existingLink) {\\n existingLink.value += item.数量;\\n } else {\\n links.push({\\n source: source,\\n target: target,\\n value: item.数量,\\n sourceType: item.类型,\\n lineStyle: {\\n color: typeColors[item.类型],\\n opacity: 0.2\\n }\\n });\\n }\\n });\\n\\n // 处理项目到任务的连接 \\n data.forEach(item => {\\n const projectKey = `[${item.项目ID}]${item.项目}`;\\n const taskKey = `[${item.任务ID}]${item.任务}`;\\n\\n const existingLink = links.find(link =>\\n link.source === projectKey && link.target === taskKey\\n );\\n\\n if (existingLink) {\\n existingLink.value += item.数量;\\n } else {\\n links.push({\\n source: projectKey,\\n target: taskKey,\\n value: item.数量,\\n sourceType: item.类型,\\n lineStyle: {\\n color: typeColors[item.类型],\\n opacity: 0.2\\n }\\n });\\n }\\n });\\n\\n return { nodes, links };\\n};\\n\\n// 修改提示文字获取函数 \\nconst gettooltip = (params) => {\\n if (params.dataType === 'node') {\\n return `${params.name}<br/>数量: ${params.value}`;\\n }\\n\\n // 获取源节点和目标节点的深度 \\n const sourceNode = params.data.source;\\n const targetNode = params.data.target;\\n const isProjectToTask = sourceNode.includes(']') && targetNode.includes(']');\\n\\n if (isProjectToTask) {\\n // 项目到任务的连接 \\n return ` \\n <b>${params.data.sourceType}</b><br/> \\n 项目:${params.data.source}<br/> \\n 任务:${params.data.target}<br/>数量: ${params.value}`;\\n } else {\\n return ` \\n <b>${params.data.sourceType}</b><br/> \\n 项目:${params.data.target}<br/> \\n 数量: ${params.value}`;\\n }\\n};\\n\\n// 处理数据 \\nconst { nodes, links } = processData(Context[\\\"recommands\\\"]);\\n\\n// Echarts配置 \\noption = {\\n backgroundColor: \\\"rgba(0, 0, 0, 0)\\\",\\n title: {\\n text: \\\"项目反馈桑基图\\\",\\n show:false;\\n subtext: \\\"展示各个项目任务的不同反馈分类占比\\\",\\n left: \\\"center\\\",\\n top: 24,\\n textStyle: {\\n fontSize: 16,\\n fontWeight: \\\"bold\\\",\\n },\\n },\\n tooltip: {\\n trigger: 'item',\\n triggerOn: 'mousemove',\\n formatter: gettooltip\\n },\\n series: [{\\n type: \\\"sankey\\\",\\n animation: true,\\n animationDuration: 300,\\n animationEasingUpdate: 'quinticInOut',\\n left: '5%',\\n top: '12%',\\n right: '20%',\\n bottom: '12%',\\n nodeAlign: 'justify',\\n orient: 'horizontal',\\n emphasis: {\\n focus: 'adjacency'\\n },\\n data: nodes,\\n links: links,\\n nodeGap: 12,\\n nodeWidth: 24,\\n draggable: true,\\n levels: [{\\n depth: 0,\\n itemStyle: {\\n borderWidth: 2\\n },\\n lineStyle: {\\n curveness: 0.5,\\n opacity: 0.8\\n }\\n }, {\\n depth: 1,\\n itemStyle: {\\n borderWidth: 1\\n },\\n lineStyle: {\\n curveness: 0.5,\\n opacity: 0.8\\n }\\n }, {\\n depth: 2,\\n itemStyle: {\\n borderWidth: 1\\n },\\n lineStyle: {\\n curveness: 0.5,\\n opacity: 0.8\\n }\\n }],\\n label: {\\n position: 'right',\\n fontSize: 10,\\n lineHeight: 14,\\n color: '#000000',\\n distance: 10,\\n formatter: function (params) {\\n var name = params.name;\\n if (name.length > 15) {\\n name = name.substring(0, 15) + '...';\\n }\\n return `${name}(${params.value})`;\\n },\\n show: true,\\n align: 'left',\\n verticalAlign: 'middle'\\n }\\n }]\\n};\",\"graphTheme\":null,\"displayMode\":\"canvas\",\"jsCode\":\"\\n async ({Context,JSONContext,ImageContext,echarts,myChart,dat,Forguncy,d3,setInterval,setTimeout,ForguncyEchartsHelper,ApplicationResource})=>{\\n var datGUI=undefined;\\n var option={};\\n console.log(JSON.stringify(Context[\\\"recommands\\\"]));\\n// 处理数据,生成节点和链接 \\nconst processData = (data) => {\\n // 生成颜色函数 - 使用HSL颜色空间为每层生成不同的柔和颜色 \\n const generateColors = (count, depth) => {\\n const colors = [];\\n // 黄金角度 约137.5° \\n const goldenAngle = 137.5;\\n // 根据深度调整饱和度和亮度 \\n const getSaturation = (depth) => {\\n switch (depth) {\\n case 0: return '60%'; // 第一层 \\n case 1: return '50%'; // 第二层 \\n case 2: return '40%'; // 第三层 \\n default: return '50%';\\n }\\n };\\n const getLightness = (depth) => {\\n switch (depth) {\\n case 0: return '60%'; // 第一层 \\n case 1: return '60%'; // 第二层 \\n case 2: return '60%'; // 第三层 \\n default: return '60%';\\n }\\n };\\n // 使用黄金角度来生成颜色 \\n const usedHues = new Set();\\n const minHueDistance = 30; // 最小色相差 \\n for (let i = 0; i < count; i++) {\\n // 基础色相值使用黄金角度 \\n let baseHue = (i * goldenAngle) % 360;\\n // 添加小范围随机偏移,但确保与现有颜色保持最小距离 \\n let hue = baseHue;\\n let attempts = 0;\\n const maxAttempts = 10;\\n // 检查新生成的色相是否与已有的色相保持足够距离 \\n while (attempts < maxAttempts) {\\n let isValidHue = true;\\n for (const existingHue of usedHues) {\\n const distance = Math.min(Math.abs(hue - existingHue), 360 - Math.abs(hue - existingHue));\\n if (distance < minHueDistance) {\\n isValidHue = false;\\n break;\\n }\\n }\\n if (isValidHue) {\\n break;\\n }\\n // 如果当前色相不合适,添加一个小偏移再试 \\n hue = (baseHue + Math.random() * 30 - 15) % 360;\\n if (hue < 0)\\n hue += 360;\\n attempts++;\\n }\\n usedHues.add(hue);\\n colors.push(`hsl(${hue}, ${getSaturation(depth)}, ${getLightness(depth)})`);\\n }\\n return colors;\\n };\\n // 收集所有唯一的节点 \\n const typeSet = new Set(data.map(item => item.类型));\\n const projectSet = new Set();\\n const taskSet = new Set();\\n // 创建项目和任务的映射关系 \\n const projectTypeMap = new Map();\\n const taskTypeMap = new Map();\\n data.forEach(item => {\\n const projectKey = `[${item.项目ID}]${item.项目}`;\\n const taskKey = `[${item.任务ID}]${item.任务}`;\\n projectSet.add(projectKey);\\n taskSet.add(taskKey);\\n if (!projectTypeMap.has(projectKey)) {\\n projectTypeMap.set(projectKey, new Set());\\n }\\n if (!taskTypeMap.has(taskKey)) {\\n taskTypeMap.set(taskKey, new Set());\\n }\\n projectTypeMap.get(projectKey).add(item.类型);\\n taskTypeMap.get(taskKey).add(item.类型);\\n });\\n // 转换为数组 \\n const typeArray = Array.from(typeSet);\\n const projectArray = Array.from(projectSet);\\n const taskArray = Array.from(taskSet);\\n // 为每层生成颜色 \\n const typeColors = {};\\n const projectColors = {};\\n const taskColors = {};\\n const level0Colors = generateColors(typeArray.length, 0);\\n const level1Colors = generateColors(projectArray.length, 1);\\n const level2Colors = generateColors(taskArray.length, 2);\\n typeArray.forEach((type, index) => {\\n typeColors[type] = level0Colors[index];\\n });\\n projectArray.forEach((project, index) => {\\n projectColors[project] = level1Colors[index];\\n });\\n taskArray.forEach((task, index) => {\\n taskColors[task] = level2Colors[index];\\n });\\n // 计算节点值 \\n const nodeValues = {};\\n data.forEach(item => {\\n const projectKey = `[${item.项目ID}]${item.项目}`;\\n const taskKey = `[${item.任务ID}]${item.任务}`;\\n nodeValues[item.类型] = (nodeValues[item.类型] || 0) + item.数量;\\n nodeValues[projectKey] = (nodeValues[projectKey] || 0) + item.数量;\\n nodeValues[taskKey] = (nodeValues[taskKey] || 0) + item.数量;\\n });\\n // 生成节点 \\n const nodes = [\\n // 类型节点 \\n ...typeArray.map((type, index) => ({\\n name: type,\\n value: nodeValues[type],\\n itemStyle: {\\n color: typeColors[type],\\n borderColor: typeColors[type]\\n },\\n category: '类型',\\n depth: 0\\n })),\\n // 项目节点 \\n ...projectArray.map(project => ({\\n name: project,\\n value: nodeValues[project],\\n itemStyle: {\\n color: projectColors[project]\\n },\\n category: '项目',\\n depth: 1\\n })),\\n // 任务节点 \\n ...taskArray.map(task => ({\\n name: task,\\n value: nodeValues[task],\\n itemStyle: {\\n color: taskColors[task]\\n },\\n category: '任务',\\n depth: 2\\n }))\\n ];\\n // 生成连接 \\n const links = [];\\n // 处理类型到项目的连接 \\n data.forEach(item => {\\n const projectKey = `[${item.项目ID}]${item.项目}`;\\n const source = item.类型;\\n const target = projectKey;\\n const existingLink = links.find(link => link.source === source && link.target === target);\\n if (existingLink) {\\n existingLink.value += item.数量;\\n }\\n else {\\n links.push({\\n source: source,\\n target: target,\\n value: item.数量,\\n sourceType: item.类型,\\n lineStyle: {\\n color: typeColors[item.类型],\\n opacity: 0.2\\n }\\n });\\n }\\n });\\n // 处理项目到任务的连接 \\n data.forEach(item => {\\n const projectKey = `[${item.项目ID}]${item.项目}`;\\n const taskKey = `[${item.任务ID}]${item.任务}`;\\n const existingLink = links.find(link => link.source === projectKey && link.target === taskKey);\\n if (existingLink) {\\n existingLink.value += item.数量;\\n }\\n else {\\n links.push({\\n source: projectKey,\\n target: taskKey,\\n value: item.数量,\\n sourceType: item.类型,\\n lineStyle: {\\n color: typeColors[item.类型],\\n opacity: 0.2\\n }\\n });\\n }\\n });\\n return { nodes, links };\\n};\\n// 修改提示文字获取函数 \\nconst gettooltip = (params) => {\\n if (params.dataType === 'node') {\\n return `${params.name}<br/>数量: ${params.value}`;\\n }\\n // 获取源节点和目标节点的深度 \\n const sourceNode = params.data.source;\\n const targetNode = params.data.target;\\n const isProjectToTask = sourceNode.includes(']') && targetNode.includes(']');\\n if (isProjectToTask) {\\n // 项目到任务的连接 \\n return ` \\n <b>${params.data.sourceType}</b><br/> \\n 项目:${params.data.source}<br/> \\n 任务:${params.data.target}<br/>数量: ${params.value}`;\\n }\\n else {\\n return ` \\n <b>${params.data.sourceType}</b><br/> \\n 项目:${params.data.target}<br/> \\n 数量: ${params.value}`;\\n }\\n};\\n// 处理数据 \\nconst { nodes, links } = processData(Context[\\\"recommands\\\"]);\\n// Echarts配置 \\noption = {\\n backgroundColor: \\\"rgba(0, 0, 0, 0)\\\",\\n title: {\\n text: \\\"项目反馈桑基图\\\",\\n show: false,\\n subtext: \\\"展示各个项目任务的不同反馈分类占比\\\",\\n left: \\\"center\\\",\\n top: 24,\\n textStyle: {\\n fontSize: 16,\\n fontWeight: \\\"bold\\\",\\n },\\n },\\n tooltip: {\\n trigger: 'item',\\n triggerOn: 'mousemove',\\n formatter: gettooltip\\n },\\n series: [{\\n type: \\\"sankey\\\",\\n animation: true,\\n animationDuration: 300,\\n animationEasingUpdate: 'quinticInOut',\\n left: '5%',\\n top: '12%',\\n right: '20%',\\n bottom: '12%',\\n nodeAlign: 'justify',\\n orient: 'horizontal',\\n emphasis: {\\n focus: 'adjacency'\\n },\\n data: nodes,\\n links: links,\\n nodeGap: 12,\\n nodeWidth: 24,\\n draggable: true,\\n levels: [{\\n depth: 0,\\n itemStyle: {\\n borderWidth: 2\\n },\\n lineStyle: {\\n curveness: 0.5,\\n opacity: 0.8\\n }\\n }, {\\n depth: 1,\\n itemStyle: {\\n borderWidth: 1\\n },\\n lineStyle: {\\n curveness: 0.5,\\n opacity: 0.8\\n }\\n }, {\\n depth: 2,\\n itemStyle: {\\n borderWidth: 1\\n },\\n lineStyle: {\\n curveness: 0.5,\\n opacity: 0.8\\n }\\n }],\\n label: {\\n position: 'right',\\n fontSize: 10,\\n lineHeight: 14,\\n color: '#000000',\\n distance: 10,\\n formatter: function (params) {\\n var name = params.name;\\n if (name.length > 15) {\\n name = name.substring(0, 15) + '...';\\n }\\n return `${name}(${params.value})`;\\n },\\n show: true,\\n align: 'left',\\n verticalAlign: 'middle'\\n }\\n }]\\n};\\n\\n return {\\n option,\\n datGUI,\\n };\\n }\\n \"}"
}
}
},
"StyleDatas": {
"Styles": [
{
"BorderLeft": 0
},
{
"FontSize": 13.333333333333332,
"HorizontalAlignment": 1
},
{
"FontSize": 14.666666666666666,
"Foreground": 2,
"TextIndent": 10,
"HorizontalAlignment": 3
},
{
"FontFamily": 4,
"FontSize": 14.666666666666666,
"Foreground": 2,
"TextIndent": 10,
"HorizontalAlignment": 3
},
{
"FontFamily": 4,
"HorizontalAlignment": 1
},
{
"FontFamily": 4
},
{
"FontFamily": 4,
"BorderLeft": 0
},
{
"FontFamily": 4,
"Foreground": 5
},
{
"FontFamily": 4,
"FontSize": 13.333333333333332,
"Foreground": 6,
"HorizontalAlignment": 1
},
{
"FontFamily": 4,
"FontSize": 14.666666666666666,
"Foreground": 2,
"Formatter": 7,
"TextIndent": 10,
"HorizontalAlignment": 3
},
{
"FontFamily": 4,
"FontSize": 37.33333333333333,
"Foreground": 0,
"HorizontalAlignment": 1
}
],
"Types": {
"Strs": [
"Background 1 -15",
"Center",
"Background 1 0",
"Left",
"Body",
"Accent 1 0",
"Text 1 50",
"General"
],
"Borders": [
{
"Color": 0
}
]
},
"CellStyles": {
"0,33": 0,
"1,33": 0,
"1,34": 1,
"2,33": 0,
"3,1": 2,
"3,33": 0,
"4,33": 0,
"5,33": 0,
"6,1": 3,
"6,33": 0,
"7,1": 4,
"7,33": 0,
"8,1": 4,
"8,2": 4,
"8,3": 4,
"8,4": 4,
"8,5": 4,
"8,6": 4,
"8,7": 4,
"8,8": 4,
"8,9": 4,
"8,10": 4,
"8,11": 4,
"8,12": 4,
"8,13": 4,
"8,14": 4,
"8,15": 4,
"8,16": 4,
"8,17": 4,
"8,18": 4,
"8,19": 4,
"8,20": 4,
"8,21": 4,
"8,22": 4,
"8,23": 4,
"8,24": 4,
"8,25": 4,
"8,26": 4,
"8,27": 4,
"8,28": 4,
"8,29": 4,
"8,30": 4,
"8,31": 4,
"8,32": 5,
"8,33": 6,
"9,1": 3,
"9,2": 5,
"9,3": 5,
"9,4": 5,
"9,5": 5,
"9,6": 5,
"9,7": 5,
"9,8": 5,
"9,9": 5,
"9,10": 5,
"9,11": 5,
"9,12": 5,
"9,13": 5,
"9,14": 5,
"9,15": 5,
"9,16": 5,
"9,17": 5,
"9,18": 5,
"9,19": 5,
"9,20": 5,
"9,21": 5,
"9,22": 5,
"9,23": 5,
"9,24": 5,
"9,25": 5,
"9,26": 5,
"9,27": 5,
"9,28": 5,
"9,29": 5,
"9,30": 5,
"9,31": 5,
"9,32": 5,
"9,33": 6,
"10,1": 5,
"10,32": 5,
"10,33": 6,
"11,32": 5,
"11,33": 6,
"12,1": 3,
"12,30": 7,
"12,32": 5,
"12,33": 6,
"13,1": 8,
"13,32": 5,
"13,33": 6,
"14,1": 8,
"14,2": 8,
"14,3": 8,
"14,4": 8,
"14,5": 8,
"14,6": 8,
"14,7": 8,
"14,8": 8,
"14,9": 8,
"14,10": 8,
"14,11": 8,
"14,12": 8,
"14,13": 8,
"14,14": 8,
"14,15": 8,
"14,16": 8,
"14,17": 8,
"14,18": 8,
"14,19": 8,
"14,20": 8,
"14,21": 8,
"14,22": 8,
"14,23": 8,
"14,24": 8,
"14,25": 8,
"14,26": 8,
"14,27": 8,
"14,28": 8,
"14,29": 8,
"14,30": 8,
"14,31": 8,
"14,32": 5,
"14,33": 6,
"15,0": 5,
"15,1": 9,
"15,2": 5,
"15,3": 5,
"15,4": 5,
"15,5": 5,
"15,6": 5,
"15,7": 5,
"15,8": 5,
"15,9": 5,
"15,10": 5,
"15,11": 5,
"15,12": 5,
"15,13": 5,
"15,14": 5,
"15,15": 5,
"15,16": 5,
"15,17": 5,
"15,18": 5,
"15,19": 5,
"15,20": 5,
"15,21": 5,
"15,22": 5,
"15,23": 5,
"15,24": 5,
"15,25": 5,
"15,26": 5,
"15,27": 5,
"15,28": 5,
"15,29": 5,
"15,30": 7,
"15,32": 5,
"15,33": 6,
"15,45": 5,
"16,1": 10,
"16,32": 5,
"16,33": 6
},
"SheetStyle": {
"FontFamily": 4
}
},
"Spans": [
"7,1,1,31",
"1,1,1,31",
"4,1,1,31",
"10,1,1,31",
"13,1,1,31",
"16,1,1,31",
"1,34,16,11"
],
"PageInfo": {
"$type": "Forguncy.Model.Pages.NormalPage, ServerDesignerCommon",
"PageLoadedCommandList": [
{
"$type": "Notiflix_Forguncy.Block_Command, Notiflix_Forguncy",
"FunctionName": "remove",
"Cell": {
"$type": "Forguncy.Model.FormulaReferObject, ServerDesignerCommon",
"SerializeProperty": "=项目标题!项目子页面"
},
"Title": "加载中",
"BreakpointIdentity": "4d97ee6d-985d-49b8-9a41-5655b7c6aede"
}
],
"PermissionData": {
"$type": "Forguncy.RbacPermission.Core.Impl.Page.PagePermissionData, Forguncy.RbacPermission.Core",
"permissionResource": {
"$type": "Forguncy.RbacPermission.Core.Impl.Page.PagePermissionResource, Forguncy.RbacPermission.Core"
},
"permissionBindings": [
{
"$type": "Forguncy.RbacPermission.Core.Impl.Page.PagePermissionBinding, Forguncy.RbacPermission.Core",
"roleNames": [
"FGC_LoginUser"
]
}
]
},
"RowBreakLines": [],
"RepeatRangeSettings": []
},
"PrintInfo": {
"PaperSize": {},
"Margin": {}
},
"BackgroundPictures": [
{
"Name": "BackgroundPicture0",
"DisplayName": "背景图6",
"StyleInfo": {
"CornerRadius": 10.0,
"Fill": "Background 1 0"
},
"IsAutomaticFill": false,
"Location": "0,895",
"Size": "1439,1346"
},
{
"Name": "088a5640-85dd-4199-b030-c26f2e322fe2.png",
"DisplayName": "背景图1",
"StyleInfo": {
"CornerRadius": 4.0,
"Fill": "Accent 1 0",
"StrokeDashType": 8,
"Stroke": "black",
"StrokeThickness": 0.0
},
"IsAutomaticStroke": false,
"IsAutomaticFill": false,
"Location": "32,231",
"Size": "975,40"
},
{
"Name": "cbbfd199-6524-4ff6-9af9-4fc0d365aafc.png",
"DisplayName": "背景图2",
"StyleInfo": {
"CornerRadius": 4.0,
"Fill": "Accent 1 0",
"StrokeDashType": 8,
"Stroke": "black",
"StrokeThickness": 0.0
},
"IsAutomaticStroke": false,
"IsAutomaticFill": false,
"Location": "32,470",
"Size": "975,40"
},
{
"Name": "9b8a58b8-6510-44e8-b3a0-99b0fe46cc37.png",
"DisplayName": "背景图3",
"StyleInfo": {
"CornerRadius": 4.0,
"Fill": "Accent 1 0",
"StrokeDashType": 8,
"Stroke": "black",
"StrokeThickness": 0.0
},
"IsAutomaticStroke": false,
"IsAutomaticFill": false,
"Location": "32,1066",
"Size": "975,40"
},
{
"Name": "BackgroundPicture4",
"DisplayName": "背景图4",
"StyleInfo": {
"CornerRadius": 4.0,
"Fill": "Accent 1 0",
"StrokeDashType": 8,
"Stroke": "black",
"StrokeThickness": 0.0
},
"IsAutomaticStroke": false,
"IsAutomaticFill": false,
"Location": "32,718",
"Size": "975,43"
},
{
"Name": "0579a73c-8569-4603-a179-f21cf9bc1877.png",
"DisplayName": "背景图5",
"StyleInfo": {
"CornerRadius": 4.0,
"Fill": "Accent 1 0",
"StrokeDashType": 8,
"Stroke": "black",
"StrokeThickness": 0.0
},
"IsAutomaticStroke": false,
"IsAutomaticFill": false,
"Location": "32,1509",
"Size": "975,40"
}
],
"CustomNames": [
{
"Name": "工时走势",
"Formula": "项目概况!$B$11"
},
{
"Name": "关键数据",
"Formula": "项目概况!$B$2"
},
{
"Name": "项目成员",
"Formula": "项目概况!$B$8"
},
{
"Name": "项目动态",
"Formula": "项目概况!$AI$2"
}
]
}//Ma6KmS7D19e8usxZm/RN+gSmWln8tSdPBZgD2ch7Q0xByNeGGdRAfn05Hln46MukpepMJSg8u22z/uDqwN3IE7Z3hPmJe7ebF4UnhEkBkJ7zdyRnlA9LiQWILkDn17m8upvPn0Fc+RVHDgh1G6n5tgsllCfz3XUgxJ1L6JOg42qX+qNSjYy3H3ttYI3FnLWOuP2S1wKpdVTovDBOC8EWwLyNM93XV7mPBstdb2OY0MVNYX9HcvEb8sUbM9AD81zZq+07hPgKYfnAnGFyeJ9F5hI96pNGzpg+qXQgqRJL4s+Jk71vMb5meCcdpRutbWnApc+EQAhXo1c6dMFcyM05RCU0j3o8eQNm+bfMMMUZXf7yWg0oco0HdOhgqL42blignKGdXIHY2Q2zR87++QXDsCCJQ03enaNHgMd7JKYZXWgzLXGbqO+1/vIpMSiLbaq4mRMizcybx7cNdhAb4DEP0j/rt36pZ+vi3b08EPU3GcG1nFSVQmRfXcJ9hDy0hIXIb1CKgzxJOOObFErfsFLfaHvhSIWFlrqDr/aKeXCT09R1ntHKBTH0oVL6JmM/VdVBAFKERQpEuj867yFhsrNzfZGNm1xE94HZ31UtxVzjwXm0DDqNiAiWKVJgS3AWvB490WcNaOfbNWC5GUaxR7CWNkNG47ct17qQxnWNqwRG6lbyb7sRm1C6tpJloCC8jBbrevL1hEhQig9Jw0XTCI75tyvofn7EpORfKDqB8xGM3RDjtG/m+DmSg6lI1dZNOLCCeGKvYNAHQBmVlYfxDgoeNsnRwwrD1OMmXIiwqpAFLMKcau5csWQYAnivx1+8gUnCQM+LgRrVxdUCFcLtEPu3txxLtezZwK6sbWJaZvOvxmxnP9PYxcl8KLwsLsPqNp37VqhdOJjwGONO39eKy54hJg==|920