1161 lines
56 KiB
JSON
1161 lines
56 KiB
JSON
{
|
||
"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 |