diff --git a/.collaboration b/.collaboration
index f03c4d96..8c6598ac 100644
--- a/.collaboration
+++ b/.collaboration
@@ -2250,50 +2250,7 @@
},
{
"ModuleName": "Plugin",
- "State": 1,
- "LockedBy": {
- "UserName": "cuckooent",
- "Email": "phoben@qq.com"
- },
- "LockDateTime": "2024-09-19T22:07:07.7926719+08:00",
- "ModuleType": 40,
- "ToRemoveFiles": [
- "Plugin\\DingTalkPlugin.zip",
- "Plugin\\Echarts图表-10_0_3_0.zip",
- "Plugin\\Editormd-6_0_102_0.zip",
- "Plugin\\Forguncy.CustomMenu.zip",
- "Plugin\\JSON 序列化和反序列化-10_0_2_0.zip",
- "Plugin\\JSON数据源-10_0_2_0.zip",
- "Plugin\\Lottie动画插图-10_0_2_0(1).zip",
- "Plugin\\Notiflix-9_0_103_0.zip",
- "Plugin\\OPENAI套件-10_0_3_0(1).zip",
- "Plugin\\PC组件包-格友工作室定制版-10_0_2_0.zip",
- "Plugin\\ReadLogs.zip",
- "Plugin\\SqlServerWrapper.zip",
- "Plugin\\Tiny富文本编辑器-10_0_2_0.zip",
- "Plugin\\UI操作工具箱-9_0_103_0.zip",
- "Plugin\\Unlayer-9_0_103_0(1).zip",
- "Plugin\\xTools快速开发工具包-9_0_4_0(1).zip",
- "Plugin\\内容编辑器-9_0_103_0.zip",
- "Plugin\\发送HTTP请求命令-10_0_2_0.zip",
- "Plugin\\取消当前行-9_0_103_0.zip",
- "Plugin\\增强关闭页面-9_0_6.zip",
- "Plugin\\复制到剪贴板-7_0_3_0.zip",
- "Plugin\\客户端缓存操作工具库-8_0_0_0(1).zip",
- "Plugin\\富文本编辑器-10_0_2_0.zip",
- "Plugin\\对象与集合操作工具-8_0_0_0(1).zip",
- "Plugin\\应用服务器操作工具集合-8_0_3_0.zip",
- "Plugin\\异步运行命令-9_0_103_0(1).zip",
- "Plugin\\支持预览的附件上传-10_0_2_0.zip",
- "Plugin\\服务端缓存操作工具库-8_0_3_0.zip",
- "Plugin\\模板引擎操作库-9_0_103_0.zip",
- "Plugin\\用户管理命令 V2-10_0_5_0.zip",
- "Plugin\\网络操作库-9_0_102_0.zip",
- "Plugin\\设置当前行命令-10_0_2_0.zip",
- "Plugin\\设置焦点命令-10_0_2_0.zip",
- "Plugin\\豪~豪插件合集-7_0_102_0.zip",
- "Plugin\\超哥富文本增强工具包-9_0_103_0(1).zip"
- ]
+ "ModuleType": 40
},
{
"ModuleName": "PublishSetting",
@@ -2333,17 +2290,7 @@
},
{
"ModuleName": "PCPage/工作台首页",
- "State": 1,
- "LockedBy": {
- "UserName": "cuckooent",
- "Email": "phoben@qq.com"
- },
- "LockDateTime": "2024-09-19T22:06:53.0868148+08:00",
- "ModuleType": 1,
- "ToRemoveFiles": [
- "Pages\\工作台\\工作台首页.json",
- "Pages\\工作台\\工作台首页.rd"
- ]
+ "ModuleType": 1
},
{
"ModuleName": "PCPage/项目负荷 (2)",
diff --git a/Pages/工作台/工作台首页.json b/Pages/工作台/工作台首页.json
index 8638ab22..890f0b32 100644
--- a/Pages/工作台/工作台首页.json
+++ b/Pages/工作台/工作台首页.json
@@ -440,7 +440,7 @@
],
"JSONDataSources": [],
"ImageDataSource": [],
- "Config": "{\"option\":\"// 获取数据源并拆分数据 \\nvar sourceData = Context[\\\"工时统计\\\"];\\nvar splitData = ForguncyEchartsHelper.splitDataSource(sourceData);\\n\\n// 将数据保留到1位小数 \\nfor (var key in splitData) {\\n if (key !== \\\"执行人\\\") {\\n splitData[key] = splitData[key].map(function (value) {\\n return parseFloat(value.toFixed(1));\\n });\\n }\\n}\\n\\n// 将数据按照「总上报工时」降序序 \\nvar indices = splitData[\\\"总上报工时\\\"]\\n .map(function (value, index) { return index; })\\n .sort(function (a, b) { return splitData[\\\"总上报工时\\\"][b] - splitData[\\\"总上报工时\\\"][a]; });\\n\\n// 根据排序后的索引重组数据 \\nvar xData = indices.map(function (index) { return splitData[\\\"执行人\\\"][index]; });\\nvar totalReported = indices.map(function (index) { return splitData[\\\"总上报工时\\\"][index]; });\\nvar totalApproved = indices.map(function (index) { return splitData[\\\"总核定工时\\\"][index]; });\\nvar difference = totalReported.map(function (value, index) {\\n return parseFloat((value - totalApproved[index]).toFixed(1));\\n});\\n\\n// 配置 Echarts 的 option \\noption = {\\n backgroundColor: \\\"rgba(0, 0, 0, 0)\\\",\\n title: {\\n text: \\\"工时排行榜\\\",\\n left: \\\"center\\\",\\n top: 24,\\n textStyle: {\\n fontSize: 16,\\n fontWeight: \\\"bold\\\",\\n },\\n },\\n grid: {\\n top: 72,\\n left: \\\"24px\\\",\\n right: \\\"24px\\\",\\n bottom: \\\"24px\\\",\\n containLabel: true,\\n },\\n tooltip: {\\n trigger: 'axis',\\n axisPointer: { type: 'shadow' },\\n formatter: function (params) {\\n return params[0].name + '
' + params[0].seriesName + ':' + params[0].value + '小时' + '
' + params[1].seriesName + ':' + params[1].value;\\n }\\n },\\n legend: {\\n show: false\\n },\\n xAxis: {\\n type: 'category',\\n data: xData,\\n },\\n yAxis: {\\n type: 'value',\\n axisLine: {\\n lineStyle: {\\n color: \\\"#f5f6f6\\\",\\n },\\n }\\n },\\n series: [\\n {\\n name: '总核定工时',\\n type: 'bar',\\n stack: '总量',\\n data: totalApproved,\\n itemStyle: {\\n color: '#63b5f6',\\n borderRadius:\\\"8px\\\"\\n },\\n label: {\\n show: true,\\n position: 'inside',\\n formatter: '{c}小时',\\n color: '#fff',\\n fontSize: 16\\n }\\n },\\n {\\n name: '未核定工时',\\n type: 'bar',\\n stack: '总量',\\n data: difference,\\n itemStyle: {\\n color: '#2196f3',\\n borderRadius:\\\"8px\\\"\\n },\\n label: {\\n show: true,\\n position: 'inside',\\n formatter: function (params) {\\n if (params.value > 0) {\\n return params.value + '小时';\\n } else {\\n return '';\\n }\\n },\\n color: '#fff',\\n fontSize: 16\\n }\\n }\\n ]\\n}; \",\"graphTheme\":null,\"displayMode\":\"canvas\",\"jsCode\":\"\\n async ({Context,JSONContext,ImageContext,echarts,myChart,dat,Forguncy,d3,setInterval,setTimeout,ForguncyEchartsHelper,PublicResource})=>{\\n var datGUI=undefined;\\n var option={};\\n // 获取数据源并拆分数据 \\nvar sourceData = Context[\\\"工时统计\\\"];\\nvar splitData = ForguncyEchartsHelper.splitDataSource(sourceData);\\n// 将数据保留到1位小数 \\nfor (var key in splitData) {\\n if (key !== \\\"执行人\\\") {\\n splitData[key] = splitData[key].map(function (value) {\\n return parseFloat(value.toFixed(1));\\n });\\n }\\n}\\n// 将数据按照「总上报工时」降序序 \\nvar indices = splitData[\\\"总上报工时\\\"]\\n .map(function (value, index) { return index; })\\n .sort(function (a, b) { return splitData[\\\"总上报工时\\\"][b] - splitData[\\\"总上报工时\\\"][a]; });\\n// 根据排序后的索引重组数据 \\nvar xData = indices.map(function (index) { return splitData[\\\"执行人\\\"][index]; });\\nvar totalReported = indices.map(function (index) { return splitData[\\\"总上报工时\\\"][index]; });\\nvar totalApproved = indices.map(function (index) { return splitData[\\\"总核定工时\\\"][index]; });\\nvar difference = totalReported.map(function (value, index) {\\n return parseFloat((value - totalApproved[index]).toFixed(1));\\n});\\n// 配置 Echarts 的 option \\noption = {\\n backgroundColor: \\\"rgba(0, 0, 0, 0)\\\",\\n title: {\\n text: \\\"工时排行榜\\\",\\n left: \\\"center\\\",\\n top: 24,\\n textStyle: {\\n fontSize: 16,\\n fontWeight: \\\"bold\\\",\\n },\\n },\\n grid: {\\n top: 72,\\n left: \\\"24px\\\",\\n right: \\\"24px\\\",\\n bottom: \\\"24px\\\",\\n containLabel: true,\\n },\\n tooltip: {\\n trigger: 'axis',\\n axisPointer: { type: 'shadow' },\\n formatter: function (params) {\\n return params[0].name + '
' + params[0].seriesName + ':' + params[0].value + '小时' + '
' + params[1].seriesName + ':' + params[1].value;\\n }\\n },\\n legend: {\\n show: false\\n },\\n xAxis: {\\n type: 'category',\\n data: xData,\\n },\\n yAxis: {\\n type: 'value',\\n axisLine: {\\n lineStyle: {\\n color: \\\"#f5f6f6\\\",\\n },\\n }\\n },\\n series: [\\n {\\n name: '总核定工时',\\n type: 'bar',\\n stack: '总量',\\n data: totalApproved,\\n itemStyle: {\\n color: '#63b5f6',\\n borderRadius: \\\"8px\\\"\\n },\\n label: {\\n show: true,\\n position: 'inside',\\n formatter: '{c}小时',\\n color: '#fff',\\n fontSize: 16\\n }\\n },\\n {\\n name: '未核定工时',\\n type: 'bar',\\n stack: '总量',\\n data: difference,\\n itemStyle: {\\n color: '#2196f3',\\n borderRadius: \\\"8px\\\"\\n },\\n label: {\\n show: true,\\n position: 'inside',\\n formatter: function (params) {\\n if (params.value > 0) {\\n return params.value + '小时';\\n }\\n else {\\n return '';\\n }\\n },\\n color: '#fff',\\n fontSize: 16\\n }\\n }\\n ]\\n};\\n\\n return {\\n option,\\n datGUI,\\n };\\n }\\n \"}"
+ "Config": "{\"option\":\"// 获取数据源并拆分数据 \\nvar sourceData = Context[\\\"工时统计\\\"];\\nconsole.log(sourceData);\\nvar splitData = ForguncyEchartsHelper.splitDataSource(sourceData);\\n\\n// 将数据保留到1位小数 \\nfor (var key in splitData) {\\n if (key !== \\\"执行人\\\") {\\n splitData[key] = splitData[key].map(function (value) {\\n return parseFloat(value.toFixed(1));\\n });\\n }\\n}\\n\\n// 将数据按照「总上报工时」降序序 \\nvar indices = splitData[\\\"总上报工时\\\"]\\n .map(function (value, index) { return index; })\\n .sort(function (a, b) { return splitData[\\\"总上报工时\\\"][b] - splitData[\\\"总上报工时\\\"][a]; });\\n\\n// 根据排序后的索引重组数据 \\nvar xData = indices.map(function (index) { return splitData[\\\"执行人\\\"][index]; });\\nvar totalReported = indices.map(function (index) { return splitData[\\\"总上报工时\\\"][index]; });\\nvar totalApproved = indices.map(function (index) { return splitData[\\\"总核定工时\\\"][index]; });\\nvar difference = totalReported.map(function (value, index) {\\n return parseFloat((value - totalApproved[index]).toFixed(1));\\n});\\n\\n// 配置 Echarts 的 option \\noption = {\\n backgroundColor: \\\"rgba(0, 0, 0, 0)\\\",\\n title: {\\n text: \\\"工时排行榜\\\",\\n left: \\\"center\\\",\\n top: 24,\\n textStyle: {\\n fontSize: 16,\\n fontWeight: \\\"bold\\\",\\n },\\n },\\n grid: {\\n top: 72,\\n left: \\\"24px\\\",\\n right: \\\"24px\\\",\\n bottom: \\\"24px\\\",\\n containLabel: true,\\n },\\n tooltip: {\\n trigger: 'axis',\\n axisPointer: { type: 'shadow' },\\n formatter: function (params) {\\n return params[0].name + '
' + params[0].seriesName + ':' + params[0].value + '小时' + '
' +\\n params[1].seriesName + ':' + params[1].value;\\n }\\n },\\n legend: {\\n show: false\\n },\\n xAxis: {\\n type: 'category',\\n data: xData,\\n },\\n yAxis: {\\n type: 'value',\\n axisLine: {\\n lineStyle: {\\n color: \\\"#f5f6f6\\\",\\n },\\n }\\n },\\n series: [\\n {\\n name: '已核定工时',\\n type: 'bar',\\n stack: '总量',\\n data: totalApproved,\\n itemStyle: {\\n color: '#63b5f6',\\n borderRadius:\\\"8px\\\"\\n },\\n label: {\\n show: true,\\n position: 'inside',\\n formatter: '{c}小时',\\n color: '#fff',\\n fontSize: 16\\n }\\n },\\n {\\n name: '未核定工时',\\n type: 'bar',\\n stack: '总量',\\n data: difference,\\n itemStyle: {\\n color: '#2196f3',\\n borderRadius:\\\"8px\\\"\\n },\\n label: {\\n show: true,\\n position: 'inside',\\n formatter: function (params) {\\n if (params.value > 0) {\\n return params.value + '小时';\\n } else {\\n return '';\\n }\\n },\\n color: '#fff',\\n fontSize: 16\\n }\\n }\\n ]\\n}; \",\"graphTheme\":null,\"displayMode\":\"canvas\",\"jsCode\":\"\\n async ({Context,JSONContext,ImageContext,echarts,myChart,dat,Forguncy,d3,setInterval,setTimeout,ForguncyEchartsHelper,PublicResource})=>{\\n var datGUI=undefined;\\n var option={};\\n // 获取数据源并拆分数据 \\nvar sourceData = Context[\\\"工时统计\\\"];\\nconsole.log(sourceData);\\nvar splitData = ForguncyEchartsHelper.splitDataSource(sourceData);\\n// 将数据保留到1位小数 \\nfor (var key in splitData) {\\n if (key !== \\\"执行人\\\") {\\n splitData[key] = splitData[key].map(function (value) {\\n return parseFloat(value.toFixed(1));\\n });\\n }\\n}\\n// 将数据按照「总上报工时」降序序 \\nvar indices = splitData[\\\"总上报工时\\\"]\\n .map(function (value, index) { return index; })\\n .sort(function (a, b) { return splitData[\\\"总上报工时\\\"][b] - splitData[\\\"总上报工时\\\"][a]; });\\n// 根据排序后的索引重组数据 \\nvar xData = indices.map(function (index) { return splitData[\\\"执行人\\\"][index]; });\\nvar totalReported = indices.map(function (index) { return splitData[\\\"总上报工时\\\"][index]; });\\nvar totalApproved = indices.map(function (index) { return splitData[\\\"总核定工时\\\"][index]; });\\nvar difference = totalReported.map(function (value, index) {\\n return parseFloat((value - totalApproved[index]).toFixed(1));\\n});\\n// 配置 Echarts 的 option \\noption = {\\n backgroundColor: \\\"rgba(0, 0, 0, 0)\\\",\\n title: {\\n text: \\\"工时排行榜\\\",\\n left: \\\"center\\\",\\n top: 24,\\n textStyle: {\\n fontSize: 16,\\n fontWeight: \\\"bold\\\",\\n },\\n },\\n grid: {\\n top: 72,\\n left: \\\"24px\\\",\\n right: \\\"24px\\\",\\n bottom: \\\"24px\\\",\\n containLabel: true,\\n },\\n tooltip: {\\n trigger: 'axis',\\n axisPointer: { type: 'shadow' },\\n formatter: function (params) {\\n return params[0].name + '
' + params[0].seriesName + ':' + params[0].value + '小时' + '
' +\\n params[1].seriesName + ':' + params[1].value;\\n }\\n },\\n legend: {\\n show: false\\n },\\n xAxis: {\\n type: 'category',\\n data: xData,\\n },\\n yAxis: {\\n type: 'value',\\n axisLine: {\\n lineStyle: {\\n color: \\\"#f5f6f6\\\",\\n },\\n }\\n },\\n series: [\\n {\\n name: '已核定工时',\\n type: 'bar',\\n stack: '总量',\\n data: totalApproved,\\n itemStyle: {\\n color: '#63b5f6',\\n borderRadius: \\\"8px\\\"\\n },\\n label: {\\n show: true,\\n position: 'inside',\\n formatter: '{c}小时',\\n color: '#fff',\\n fontSize: 16\\n }\\n },\\n {\\n name: '未核定工时',\\n type: 'bar',\\n stack: '总量',\\n data: difference,\\n itemStyle: {\\n color: '#2196f3',\\n borderRadius: \\\"8px\\\"\\n },\\n label: {\\n show: true,\\n position: 'inside',\\n formatter: function (params) {\\n if (params.value > 0) {\\n return params.value + '小时';\\n }\\n else {\\n return '';\\n }\\n },\\n color: '#fff',\\n fontSize: 16\\n }\\n }\\n ]\\n};\\n\\n return {\\n option,\\n datGUI,\\n };\\n }\\n \"}"
}
}
},
@@ -578,4 +578,4 @@
"Size": "1152,254"
}
]
-}//jJtbpG5bi3OhfmXS4IuMz/f6kCI1nPw8t73urZvhGRL5Id2pNSvVG5sy11pD0I+m+VP1IlGrGzY723aLHZPL29PaLODtXkdA2+kCX5yPNnrUfdqlXMDzIvra5Qzy9/SHoNEwD6VJk7D377aX6xmIHeG+nOBBvcMkd3JclviEZAilHLLyIARYOIWPPILVHnX1UmxWVYwrplZQKsz+3OhFGnEb16N95/Bx466jpdFY7IV0fdSw8gaJgEPDZjtpb+m4dp69Djdp+KGOw/2JivuNTKET49ALbsWW+f53jBIKHSlhxhi8dEvf/DT13lZXfjHZVI47bDz5Z8MPPG3f3V+cKGe9XAe8V2oaJRMV0al4anN9jrTkH9GxbLZ4kxLD9OMHvWHgpPyThshxn+IPNE/8ud4Csqj+48FEY6udSK2LmseaB/7fB7gchUBNa7NLy8pmkz1urunIpsB4PPVPGkzHcECdWMjkjHpA8pFV7uyRU58ZZ2/sNk/kYLaiONDmJRpeVn4743RT5vpnNeYOW60GsYLpR9ZYK0/QI52xMhzJ1BjSsylWG/GpzL0ujbWedFPAmWi5V9G/lZZQcc8ADcHt8Ic1/c5zK/PXzreEPeZsHbI6/KpxAwfoeLQ0byhO7BZOKb+ztOxT2jgobWY+aDHRKPb4B4OzaDf0M+nq4fpNavLgON3zC42ePtmpsUc4yM40g3Wya6J6fdmoQKIOY9SwVJBnJAIFG4HRH6J12mMHcTDpYxjI5HVooGgM4oHzn3aHKvJEnulUL6ccA9UGcr3nWnsjoeruZtC+IWcPCYuAWhxsHZYm9GPiU1qgrjXdTWSXxSwlG56cMgvcI6YKF7YKcXtbVdzPTjRdjQugVhMUwGdOyU++5/2zlCmGWkKmBrRpMjZMqP+UmXabZGE+LGshBQ==|920
\ No newline at end of file
+}//BtfImtg5onZ4MZasX9AwVSiQqyeVGjrbAhQe5i2DWVMCep/k2RZxtFvOdDFUr5uxFuZtOwZYEYa/ZBmiNbG5g2JGuDDo42KNA/W8odb+L/A5Af75x6gkA6qFRo40DqjK+LNjUe+w6jm9/vwo23kd6XLAHApWJQ7waOpZPfWxflEIMIqjQs0fW/bvm7HsQq36OUNSvVeb/eiwoHWY72pP9x5pLXwksIfMGn4TwLnrq0PUOXLnEojTVIyFXgohsv3+hm3p8+hg8oqhDzCZ5IXlZO5VhZzRDq/lMDCSn0/h9T7x2ZK2WyK/6fk20yjutXWBLeJIS9Llm8a4SY2drT3hi1W1SAQCZxOizUlwxi8jx6m4AxaImnEJLon1sT9HDLUI5Tz448qgqIp/VGmmfA5KlTCoqjah0VlujedRkIOxnh01tn79SMoeT31J3JHYjpHdKOciY7/pcNoHDVarfyz7o6Qdr4x5sWp7oOkNgJh3HMiy14SAfdD9I4LvzGBVXYuUq2uTPSITUsJgvIby8XCyJVQeIqxdwVq13APOJEwtFPmjpfeSlsIWMxQCrI0fT+X5WFhCBVGZG4nlQbrksP1PfOXJ6kLmS4Hzim2cGJtvrYInSe6/L0bhxSgsS+vvofjJAqU8zgq4ISXolzPB5bQnpuQVWIG1Ihsox4UPOCouL1LODczBp+fI70coE+xtcjkto5YVEzvuJKLk7xqT5+wdS0INVrNMc/qA/unTijXhQ1PLA4cGY85rN/YMT5I4oS9Wf11ieLHMdoGo1z42NTzHC0qUUIfeutb6C+fq/HfAN8WL4LB/IlTRc4HeoN/hJrN2qYaEUkkAYuXiJCMEegdhB05tYis0MLjpEPoIZiKpG82ccGXnI6XWVHvLwEnoc/oLTGpjAoHcQAKUe2gXNWlrjQ==|920
\ No newline at end of file
diff --git a/Plugin/内容编辑器-9_0_103_0.zip b/Plugin/内容编辑器-9_0_103_0.zip
deleted file mode 100644
index 439281c8..00000000
Binary files a/Plugin/内容编辑器-9_0_103_0.zip and /dev/null differ