Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@@ -2,9 +2,11 @@ package com.jeesite.modules.apps.Module.Table;
|
|||||||
|
|
||||||
import com.jeesite.modules.apps.Module.cPage;
|
import com.jeesite.modules.apps.Module.cPage;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Data
|
@Data
|
||||||
public class ErpFlowParams extends cPage implements Serializable {
|
public class ErpFlowParams extends cPage implements Serializable {
|
||||||
private String accountId;
|
private String accountId;
|
||||||
|
|||||||
@@ -2,9 +2,11 @@ package com.jeesite.modules.apps.Module.Table;
|
|||||||
|
|
||||||
import com.jeesite.modules.apps.Module.cPage;
|
import com.jeesite.modules.apps.Module.cPage;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Data
|
@Data
|
||||||
public class MyProjectParams extends cPage implements Serializable {
|
public class MyProjectParams extends cPage implements Serializable {
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import com.jeesite.common.utils.excel.annotation.ExcelField;
|
|||||||
import com.jeesite.common.utils.excel.annotation.ExcelField.Align;
|
import com.jeesite.common.utils.excel.annotation.ExcelField.Align;
|
||||||
import com.jeesite.common.utils.excel.annotation.ExcelFields;
|
import com.jeesite.common.utils.excel.annotation.ExcelFields;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
|
|
||||||
@@ -25,6 +26,7 @@ import java.io.Serial;
|
|||||||
* @author gaoxq
|
* @author gaoxq
|
||||||
* @version 2026-03-27
|
* @version 2026-03-27
|
||||||
*/
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Table(name = "my_municipalities", alias = "a", label = "社区信息", columns = {
|
@Table(name = "my_municipalities", alias = "a", label = "社区信息", columns = {
|
||||||
@Column(name = "municipality_id", attrName = "municipalityId", label = "唯一主键", isPK = true),
|
@Column(name = "municipality_id", attrName = "municipalityId", label = "唯一主键", isPK = true),
|
||||||
@Column(name = "create_time", attrName = "createTime", label = "记录时间", isUpdateForce = true),
|
@Column(name = "create_time", attrName = "createTime", label = "记录时间", isUpdateForce = true),
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import com.jeesite.common.utils.excel.annotation.ExcelField;
|
|||||||
import com.jeesite.common.utils.excel.annotation.ExcelField.Align;
|
import com.jeesite.common.utils.excel.annotation.ExcelField.Align;
|
||||||
import com.jeesite.common.utils.excel.annotation.ExcelFields;
|
import com.jeesite.common.utils.excel.annotation.ExcelFields;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
|
|
||||||
@@ -27,6 +28,7 @@ import java.io.Serial;
|
|||||||
* @author gaoxq
|
* @author gaoxq
|
||||||
* @version 2026-04-04
|
* @version 2026-04-04
|
||||||
*/
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Table(name = "my_project_contract", alias = "a", label = "合同信息", columns = {
|
@Table(name = "my_project_contract", alias = "a", label = "合同信息", columns = {
|
||||||
@Column(name = "create_time", attrName = "createTime", label = "记录时间", isUpdate = false, isUpdateForce = true),
|
@Column(name = "create_time", attrName = "createTime", label = "记录时间", isUpdate = false, isUpdateForce = true),
|
||||||
@Column(name = "contract_id", attrName = "contractId", label = "唯一主键", isPK = true),
|
@Column(name = "contract_id", attrName = "contractId", label = "唯一主键", isPK = true),
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import com.jeesite.common.utils.excel.annotation.ExcelField;
|
|||||||
import com.jeesite.common.utils.excel.annotation.ExcelField.Align;
|
import com.jeesite.common.utils.excel.annotation.ExcelField.Align;
|
||||||
import com.jeesite.common.utils.excel.annotation.ExcelFields;
|
import com.jeesite.common.utils.excel.annotation.ExcelFields;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
|
|
||||||
@@ -28,6 +29,7 @@ import java.io.Serial;
|
|||||||
* @author gaoxq
|
* @author gaoxq
|
||||||
* @version 2026-03-22
|
* @version 2026-03-22
|
||||||
*/
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Table(name = "erp_budgets", alias = "a", label = "预算信息", columns = {
|
@Table(name = "erp_budgets", alias = "a", label = "预算信息", columns = {
|
||||||
@Column(name = "create_time", attrName = "createTime", label = "记录时间", isUpdate = false, isUpdateForce = true),
|
@Column(name = "create_time", attrName = "createTime", label = "记录时间", isUpdate = false, isUpdateForce = true),
|
||||||
@Column(name = "budget_id", attrName = "budgetId", label = "唯一主键", isPK = true),
|
@Column(name = "budget_id", attrName = "budgetId", label = "唯一主键", isPK = true),
|
||||||
|
|||||||
@@ -72,7 +72,7 @@
|
|||||||
field: 'systemUrl',
|
field: 'systemUrl',
|
||||||
component: 'Input',
|
component: 'Input',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
maxlength: 32,
|
maxlength: 225,
|
||||||
},
|
},
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
field: 'systemIcon',
|
field: 'systemIcon',
|
||||||
component: 'Input',
|
component: 'Input',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
maxlength: 24,
|
maxlength: 225,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -46,6 +46,10 @@
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
|
width: calc(100% + 10px);
|
||||||
|
margin-left: -5px !important;
|
||||||
|
margin-right: -5px !important;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
overflow: hidden !important;
|
overflow: hidden !important;
|
||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
const statusDict = ref<DictData[]>([]);
|
const statusDict = ref<DictData[]>([]);
|
||||||
|
|
||||||
const STATUS_COLORS = ['#3B82F6', '#10B981', '#F97316', '#EC4899', '#8B5CF6', '#06B6D4'];
|
const STATUS_COLORS = ['#3B82F6', '#10B981', '#F97316', '#EC4899', '#8B5CF6', '#06B6D4'];
|
||||||
const AMOUNT_LINE_COLOR = '#F59E0B';
|
const AMOUNT_LINE_COLOR = '#FBBF24';
|
||||||
let pieChartInstance: echarts.ECharts | null = null;
|
let pieChartInstance: echarts.ECharts | null = null;
|
||||||
let barChartInstance: echarts.ECharts | null = null;
|
let barChartInstance: echarts.ECharts | null = null;
|
||||||
let resizeObserver: ResizeObserver | null = null;
|
let resizeObserver: ResizeObserver | null = null;
|
||||||
@@ -117,8 +117,8 @@
|
|||||||
const monthAmountMap = new Map<string, number>();
|
const monthAmountMap = new Map<string, number>();
|
||||||
|
|
||||||
sourceData.value.forEach((item) => {
|
sourceData.value.forEach((item) => {
|
||||||
if (!item.signDate) return;
|
if (!item.createTime) return;
|
||||||
const date = new Date(item.signDate);
|
const date = new Date(item.createTime);
|
||||||
if (Number.isNaN(date.getTime())) return;
|
if (Number.isNaN(date.getTime())) return;
|
||||||
const monthLabel = `${date.getMonth() + 1}月`;
|
const monthLabel = `${date.getMonth() + 1}月`;
|
||||||
monthOrderMap.set(monthLabel, date.getMonth() + 1);
|
monthOrderMap.set(monthLabel, date.getMonth() + 1);
|
||||||
@@ -208,7 +208,7 @@
|
|||||||
series.push({
|
series.push({
|
||||||
name: '空态环',
|
name: '空态环',
|
||||||
type: 'pie',
|
type: 'pie',
|
||||||
radius: ['46%', '72%'],
|
radius: ['40%', '64%'],
|
||||||
center: ['50%', '44%'],
|
center: ['50%', '44%'],
|
||||||
silent: true,
|
silent: true,
|
||||||
legendHoverLink: false,
|
legendHoverLink: false,
|
||||||
@@ -234,7 +234,7 @@
|
|||||||
series.push({
|
series.push({
|
||||||
name: '合同状态',
|
name: '合同状态',
|
||||||
type: 'pie',
|
type: 'pie',
|
||||||
radius: total ? ['46%', '72%'] : [0, 0],
|
radius: total ? ['40%', '64%'] : [0, 0],
|
||||||
center: ['50%', '44%'],
|
center: ['50%', '44%'],
|
||||||
avoidLabelOverlap: true,
|
avoidLabelOverlap: true,
|
||||||
minAngle: total ? 4 : 0,
|
minAngle: total ? 4 : 0,
|
||||||
@@ -245,9 +245,9 @@
|
|||||||
},
|
},
|
||||||
label: {
|
label: {
|
||||||
show: total,
|
show: total,
|
||||||
formatter: ({ name, value, percent }) => (total ? `${name}\n${value}项 / ${percent}%` : ''),
|
formatter: ({ name, percent }) => (total && Number(percent) >= 8 ? `${name}\n${percent}%` : ''),
|
||||||
color: isDark ? '#e2e8f0' : '#334155',
|
color: isDark ? '#e2e8f0' : '#334155',
|
||||||
fontSize: 12,
|
fontSize: 11,
|
||||||
},
|
},
|
||||||
emphasis: {
|
emphasis: {
|
||||||
scale: true,
|
scale: true,
|
||||||
@@ -257,6 +257,9 @@
|
|||||||
silent: !total,
|
silent: !total,
|
||||||
labelLine: {
|
labelLine: {
|
||||||
show: total,
|
show: total,
|
||||||
|
length: 4,
|
||||||
|
length2: 3,
|
||||||
|
maxSurfaceAngle: 80,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -316,7 +319,7 @@
|
|||||||
left: 'center',
|
left: 'center',
|
||||||
top: '51%',
|
top: '51%',
|
||||||
style: {
|
style: {
|
||||||
text: `金额 ${formatAmountWan(totalContractAmount.value, 2)}万元`,
|
text: ` ${formatAmountWan(totalContractAmount.value, 2)}万元`,
|
||||||
fill: isDark ? '#94a3b8' : '#64748b',
|
fill: isDark ? '#94a3b8' : '#64748b',
|
||||||
fontSize: 12,
|
fontSize: 12,
|
||||||
fontWeight: 500,
|
fontWeight: 500,
|
||||||
@@ -401,7 +404,7 @@
|
|||||||
yAxisIndex: 1,
|
yAxisIndex: 1,
|
||||||
smooth: true,
|
smooth: true,
|
||||||
symbol: 'circle',
|
symbol: 'circle',
|
||||||
symbolSize: 6,
|
symbolSize: 4,
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: AMOUNT_LINE_COLOR,
|
color: AMOUNT_LINE_COLOR,
|
||||||
},
|
},
|
||||||
@@ -409,6 +412,19 @@
|
|||||||
color: AMOUNT_LINE_COLOR,
|
color: AMOUNT_LINE_COLOR,
|
||||||
width: 2,
|
width: 2,
|
||||||
},
|
},
|
||||||
|
areaStyle: {
|
||||||
|
color: {
|
||||||
|
type: 'linear',
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
x2: 0,
|
||||||
|
y2: 1,
|
||||||
|
colorStops: [
|
||||||
|
{ offset: 0, color: 'rgba(251, 191, 36, 0.28)' },
|
||||||
|
{ offset: 1, color: 'rgba(251, 191, 36, 0.04)' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
emphasis: {
|
emphasis: {
|
||||||
focus: 'series',
|
focus: 'series',
|
||||||
},
|
},
|
||||||
@@ -460,8 +476,16 @@
|
|||||||
left: 'center',
|
left: 'center',
|
||||||
itemGap: 16,
|
itemGap: 16,
|
||||||
data: [...statusItems.map((item) => item.label), ...(hasData ? ['合同金额'] : [])],
|
data: [...statusItems.map((item) => item.label), ...(hasData ? ['合同金额'] : [])],
|
||||||
|
formatter: (name) => (name === '合同金额' ? `{amount|${name}}` : name),
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: isDark ? '#e2e8f0' : '#475569',
|
color: isDark ? '#e2e8f0' : '#475569',
|
||||||
|
rich: {
|
||||||
|
amount: {
|
||||||
|
color: isDark ? '#94a3b8' : '#64748b',
|
||||||
|
fontSize: 12,
|
||||||
|
fontWeight: 400,
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
xAxis: {
|
xAxis: {
|
||||||
@@ -509,12 +533,16 @@
|
|||||||
splitLine: {
|
splitLine: {
|
||||||
show: false,
|
show: false,
|
||||||
},
|
},
|
||||||
|
nameGap: 8,
|
||||||
nameTextStyle: {
|
nameTextStyle: {
|
||||||
color: isDark ? '#94a3b8' : '#64748b',
|
color: isDark ? 'rgba(148, 163, 184, 0.72)' : 'rgba(100, 116, 139, 0.88)',
|
||||||
padding: [0, 0, 2, 0],
|
padding: [0, 0, 0, 0],
|
||||||
|
align: 'right',
|
||||||
|
fontSize: 11,
|
||||||
|
fontWeight: 400,
|
||||||
},
|
},
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
color: isDark ? '#94a3b8' : '#64748b',
|
color: isDark ? 'rgba(148, 163, 184, 0.78)' : 'rgba(100, 116, 139, 0.92)',
|
||||||
formatter: (value) => `${value}`,
|
formatter: (value) => `${value}`,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -179,7 +179,7 @@
|
|||||||
series.push({
|
series.push({
|
||||||
name: '空态环',
|
name: '空态环',
|
||||||
type: 'pie',
|
type: 'pie',
|
||||||
radius: ['46%', '72%'],
|
radius: ['40%', '64%'],
|
||||||
center: ['50%', '44%'],
|
center: ['50%', '44%'],
|
||||||
silent: true,
|
silent: true,
|
||||||
legendHoverLink: false,
|
legendHoverLink: false,
|
||||||
@@ -205,7 +205,7 @@
|
|||||||
series.push({
|
series.push({
|
||||||
name: '任务状态',
|
name: '任务状态',
|
||||||
type: 'pie',
|
type: 'pie',
|
||||||
radius: total ? ['46%', '72%'] : [0, 0],
|
radius: total ? ['40%', '64%'] : [0, 0],
|
||||||
center: ['50%', '44%'],
|
center: ['50%', '44%'],
|
||||||
avoidLabelOverlap: true,
|
avoidLabelOverlap: true,
|
||||||
minAngle: total ? 4 : 0,
|
minAngle: total ? 4 : 0,
|
||||||
@@ -216,9 +216,9 @@
|
|||||||
},
|
},
|
||||||
label: {
|
label: {
|
||||||
show: total,
|
show: total,
|
||||||
formatter: ({ name, value, percent }) => (total ? `${name}\n${value}项 / ${percent}%` : ''),
|
formatter: ({ name, percent }) => (total && Number(percent) >= 8 ? `${name}\n${percent}%` : ''),
|
||||||
color: isDark ? '#e2e8f0' : '#334155',
|
color: isDark ? '#e2e8f0' : '#334155',
|
||||||
fontSize: 12,
|
fontSize: 11,
|
||||||
},
|
},
|
||||||
emphasis: {
|
emphasis: {
|
||||||
scale: true,
|
scale: true,
|
||||||
@@ -228,6 +228,9 @@
|
|||||||
silent: !total,
|
silent: !total,
|
||||||
labelLine: {
|
labelLine: {
|
||||||
show: total,
|
show: total,
|
||||||
|
length: 4,
|
||||||
|
length2: 3,
|
||||||
|
maxSurfaceAngle: 80,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -15,11 +15,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="workbench-row">
|
<div class="workbench-row">
|
||||||
<div class="workbench-col">
|
<div class="workbench-col">
|
||||||
<ProjectTask />
|
<ProjectTask />
|
||||||
</div>
|
</div>
|
||||||
<div class="workbench-col">
|
<div class="workbench-col">
|
||||||
<ContractInfo />
|
<ContractInfo />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -55,6 +55,10 @@
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
|
width: calc(100% + 10px);
|
||||||
|
margin-left: -5px !important;
|
||||||
|
margin-right: -5px !important;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
overflow: hidden !important;
|
overflow: hidden !important;
|
||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
}
|
}
|
||||||
@@ -67,7 +71,7 @@
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background: rgb(255, 255, 255);
|
background: transparent;
|
||||||
border-radius: @desktop-card-radius;
|
border-radius: @desktop-card-radius;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user