Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
2026-04-12 19:09:35 +08:00
10 changed files with 71 additions and 22 deletions

View File

@@ -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;

View File

@@ -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 {

View File

@@ -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),

View File

@@ -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),

View File

@@ -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),

View File

@@ -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,
}, },
}, },
{ {

View File

@@ -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;
} }

View File

@@ -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}`,
}, },
}, },

View File

@@ -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,
}, },
}); });

View File

@@ -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;
} }