This commit is contained in:
2025-11-29 01:14:09 +08:00
parent 44dbcb48a6
commit bfa83f42a8
7 changed files with 153 additions and 180 deletions

View File

@@ -93,7 +93,7 @@ public class BizProjectReport extends DataEntity<BizProjectReport> implements Se
@ExcelFields({ @ExcelFields({
@ExcelField(title = "记录时间", attrName = "createTime", align = Align.CENTER, sort = 10, dataFormat = "yyyy-MM-dd hh:mm"), @ExcelField(title = "记录时间", attrName = "createTime", align = Align.CENTER, sort = 10, dataFormat = "yyyy-MM-dd hh:mm"),
@ExcelField(title = "汇报标识", attrName = "reportId", align = Align.CENTER, sort = 20), @ExcelField(title = "汇报标识", attrName = "reportId", align = Align.CENTER, sort = 20),
@ExcelField(title = "汇报周期", attrName = "reportCycle", align = Align.CENTER, sort = 30), @ExcelField(title = "汇报周期", attrName = "reportCycle", dictType = "report_cycle", align = Align.CENTER, sort = 30),
@ExcelField(title = "汇报主题", attrName = "workTitle", align = Align.CENTER, sort = 40), @ExcelField(title = "汇报主题", attrName = "workTitle", align = Align.CENTER, sort = 40),
@ExcelField(title = "本期内容", attrName = "workContent", align = Align.CENTER, sort = 50), @ExcelField(title = "本期内容", attrName = "workContent", align = Align.CENTER, sort = 50),
@ExcelField(title = "项目进度", attrName = "progressPercent", align = Align.CENTER, sort = 60), @ExcelField(title = "项目进度", attrName = "progressPercent", align = Align.CENTER, sort = 60),
@@ -101,7 +101,7 @@ public class BizProjectReport extends DataEntity<BizProjectReport> implements Se
@ExcelField(title = "解决方案", attrName = "solutionPlan", align = Align.CENTER, sort = 80), @ExcelField(title = "解决方案", attrName = "solutionPlan", align = Align.CENTER, sort = 80),
@ExcelField(title = "下期计划", attrName = "nextPlan", align = Align.CENTER, sort = 90), @ExcelField(title = "下期计划", attrName = "nextPlan", align = Align.CENTER, sort = 90),
@ExcelField(title = "提交时间", attrName = "reportTime", align = Align.CENTER, sort = 100, dataFormat = "yyyy-MM-dd hh:mm"), @ExcelField(title = "提交时间", attrName = "reportTime", align = Align.CENTER, sort = 100, dataFormat = "yyyy-MM-dd hh:mm"),
@ExcelField(title = "汇报状态", attrName = "approvalStatus", align = Align.CENTER, sort = 110), @ExcelField(title = "汇报状态", attrName = "approvalStatus", dictType = "approval_status", align = Align.CENTER, sort = 110),
@ExcelField(title = "项目编号", attrName = "projectCode", align = Align.CENTER, sort = 120), @ExcelField(title = "项目编号", attrName = "projectCode", align = Align.CENTER, sort = 120),
@ExcelField(title = "项目名称", attrName = "projectName", align = Align.CENTER, sort = 120), @ExcelField(title = "项目名称", attrName = "projectName", align = Align.CENTER, sort = 120),
@ExcelField(title = "人员名称", attrName = "employeeName", align = Align.CENTER, sort = 130), @ExcelField(title = "人员名称", attrName = "employeeName", align = Align.CENTER, sort = 130),

View File

@@ -10,7 +10,7 @@
:okAuth="'biz:cities:edit'" :okAuth="'biz:cities:edit'"
@register="registerDrawer" @register="registerDrawer"
@ok="handleSubmit" @ok="handleSubmit"
width="70%" width="40%"
> >
<template #title> <template #title>
<Icon :icon="getTitle.icon" class="m-1 pr-1" /> <Icon :icon="getTitle.icon" class="m-1 pr-1" />
@@ -51,6 +51,7 @@
selectType: 'bizProvSelect', selectType: 'bizProvSelect',
}, },
required: true, required: true,
colProps: { md: 24, lg: 24 },
}, },
{ {
label: t('市区编码'), label: t('市区编码'),
@@ -60,6 +61,7 @@
maxlength: 24, maxlength: 24,
}, },
required: true, required: true,
colProps: { md: 24, lg: 24 },
}, },
{ {
label: t('市区名称'), label: t('市区名称'),
@@ -69,6 +71,7 @@
maxlength: 125, maxlength: 125,
}, },
required: true, required: true,
colProps: { md: 24, lg: 24 },
}, },
{ {
label: t('市区区号'), label: t('市区区号'),
@@ -78,6 +81,7 @@
maxlength: 12, maxlength: 12,
}, },
required: true, required: true,
colProps: { md: 24, lg: 24 },
}, },
{ {
label: t('市区级别'), label: t('市区级别'),
@@ -88,6 +92,7 @@
allowClear: true, allowClear: true,
}, },
required: true, required: true,
colProps: { md: 24, lg: 24 },
}, },
{ {
label: t('数据状态'), label: t('数据状态'),
@@ -98,6 +103,7 @@
allowClear: true, allowClear: true,
}, },
required: true, required: true,
colProps: { md: 24, lg: 24 },
}, },
]; ];

View File

@@ -18,9 +18,9 @@
<Icon icon="i-fluent:add-12-filled" /> {{ t('新增') }} <Icon icon="i-fluent:add-12-filled" /> {{ t('新增') }}
</a-button> </a-button>
</template> </template>
<template #firstColumn="{ record }"> <template #slotBizKey="{ record }">
<a @click="handleForm({ reportId: record.reportId })" :title="record.createTime"> <a @click="handleForm({ reportId: record.reportId })" :title="record.workTitle">
{{ record.createTime }} {{ record.workTitle }}
</a> </a>
</template> </template>
</BasicTable> </BasicTable>
@@ -93,7 +93,7 @@
}, },
}, },
{ {
label: t('项目编号'), label: t('项目名称'),
field: 'projectId', field: 'projectId',
fieldLabel: 'projectName', fieldLabel: 'projectName',
component: 'ListSelect', component: 'ListSelect',
@@ -102,7 +102,7 @@
}, },
}, },
{ {
label: t('所属人员'), label: t('汇报人员'),
field: 'employeeId', field: 'employeeId',
fieldLabel: 'employeeName', fieldLabel: 'employeeName',
component: 'ListSelect', component: 'ListSelect',
@@ -130,16 +130,6 @@
sorter: true, sorter: true,
width: 180, width: 180,
align: 'left', align: 'left',
slot: 'firstColumn',
},
{
title: t('汇报周期'),
dataIndex: 'reportCycle',
key: 'a.report_cycle',
sorter: true,
width: 130,
align: 'left',
dictType: 'report_cycle',
}, },
{ {
title: t('汇报主题'), title: t('汇报主题'),
@@ -148,6 +138,7 @@
sorter: true, sorter: true,
width: 200, width: 200,
align: 'left', align: 'left',
slot: 'slotBizKey',
}, },
{ {
title: t('汇报人员'), title: t('汇报人员'),
@@ -157,6 +148,15 @@
width: 130, width: 130,
align: 'left', align: 'left',
}, },
{
title: t('汇报周期'),
dataIndex: 'reportCycle',
key: 'a.report_cycle',
sorter: true,
width: 130,
align: 'left',
dictType: 'report_cycle',
},
{ {
title: t('项目编码'), title: t('项目编码'),
dataIndex: 'projectCode', dataIndex: 'projectCode',
@@ -189,30 +189,6 @@
width: 130, width: 130,
align: 'left', align: 'left',
}, },
{
title: t('存在问题'),
dataIndex: 'problemDesc',
key: 'a.problem_desc',
sorter: true,
width: 130,
align: 'left',
},
{
title: t('解决方案'),
dataIndex: 'solutionPlan',
key: 'a.solution_plan',
sorter: true,
width: 130,
align: 'left',
},
{
title: t('下期计划'),
dataIndex: 'nextPlan',
key: 'a.next_plan',
sorter: true,
width: 130,
align: 'left',
},
{ {
title: t('提交时间'), title: t('提交时间'),
dataIndex: 'reportTime', dataIndex: 'reportTime',
@@ -238,19 +214,20 @@
actions: (record: BizProjectReport) => [ actions: (record: BizProjectReport) => [
{ {
icon: 'i-clarity:note-edit-line', icon: 'i-clarity:note-edit-line',
title: t('编辑汇报信息'), title: t('编辑'),
onClick: handleForm.bind(this, { reportId: record.reportId }), onClick: handleForm.bind(this, { reportId: record.reportId }),
auth: 'biz:projectReport:edit', auth: 'biz:projectReport:edit',
}, },
{ {
icon: 'i-ant-design:delete-outlined', icon: 'i-ant-design:delete-outlined',
color: 'error', color: 'error',
title: t('删除汇报信息'), title: t('删除'),
popConfirm: { popConfirm: {
title: t('是否确认删除汇报信息'), title: t('是否确认删除汇报信息?'),
confirm: handleDelete.bind(this, record), confirm: handleDelete.bind(this, record),
}, },
auth: 'biz:projectReport:edit', auth: 'biz:projectReport:edit',
ifShow: record.approvalStatus == '0'
}, },
], ],
}; };

View File

@@ -50,6 +50,7 @@
maxlength: 52, maxlength: 52,
}, },
required: true, required: true,
colProps: { md: 24, lg: 24 },
}, },
{ {
label: t('需求编号'), label: t('需求编号'),
@@ -59,21 +60,62 @@
maxlength: 24, maxlength: 24,
}, },
}, },
{ {
label: t('项目区域'), label: t('项目区域'),
field: 'areaCode', field: 'areaCode',
component: 'Input', fieldLabel: 'provinceName',
componentProps: { component: 'ListSelect',
maxlength: 152, componentProps: {
}, selectType: 'bizProvSelect',
required: true, },
}, required: true,
},
{
label: t('项目名称'),
field: 'projectId',
fieldLabel: 'projectName',
component: 'ListSelect',
componentProps: {
selectType: 'bizProjectSelect',
},
required: true,
},
{
label: t('需求人员'),
field: 'employeeId',
fieldLabel: 'employeeName',
component: 'ListSelect',
componentProps: {
selectType: 'bizEmpSelect',
},
required: true,
},
{ {
label: t('需求描述'), label: t('需求描述'),
field: 'requirementDescription', field: 'requirementDescription',
component: 'Input', component: 'InputTextArea',
colProps: { md: 24, lg: 24 }, colProps: { md: 24, lg: 24 },
}, },
{
label: t('优先等级'),
field: 'priority',
component: 'Select',
componentProps: {
dictType: 'priority',
allowClear: true,
},
required: true,
},
{
label: t('需求状态'),
field: 'requirementsStatus',
component: 'Select',
componentProps: {
dictType: 'requirements_status',
allowClear: true,
},
required: true,
},
{ {
label: t('开始时间'), label: t('开始时间'),
field: 'startTime', field: 'startTime',
@@ -92,55 +134,15 @@
showTime: { format: 'HH:mm' }, showTime: { format: 'HH:mm' },
}, },
}, },
{
label: t('优先级'),
field: 'priority',
component: 'Select',
componentProps: {
dictType: '',
allowClear: true,
},
required: true,
},
{
label: t('项目ID'),
field: 'projectId',
component: 'Select',
componentProps: {
dictType: '',
allowClear: true,
},
required: true,
},
{
label: t('用户ID'),
field: 'employeeId',
component: 'Select',
componentProps: {
dictType: '',
allowClear: true,
},
required: true,
},
{ {
label: t('需求备注'), label: t('需求备注'),
field: 'remark', field: 'remark',
component: 'Input', component: 'InputTextArea',
componentProps: { componentProps: {
maxlength: 100, maxlength: 100,
}, },
colProps: { md: 24, lg: 24 }, colProps: { md: 24, lg: 24 },
}, },
{
label: t('状态'),
field: 'requirementsStatus',
component: 'Select',
componentProps: {
dictType: '',
allowClear: true,
},
required: true,
},
]; ];
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm<BizProjectRequirements>({ const [registerForm, { resetFields, setFieldsValue, validate }] = useForm<BizProjectRequirements>({

View File

@@ -14,16 +14,13 @@
<a-button type="default" :loading="loading" @click="handleExport()"> <a-button type="default" :loading="loading" @click="handleExport()">
<Icon icon="i-ant-design:download-outlined" /> {{ t('导出') }} <Icon icon="i-ant-design:download-outlined" /> {{ t('导出') }}
</a-button> </a-button>
<a-button type="default" @click="handleImport()">
<Icon icon="i-ant-design:import-outlined" /> {{ t('导入') }}
</a-button>
<a-button type="primary" @click="handleForm({})" v-auth="'biz:projectRequirements:edit'"> <a-button type="primary" @click="handleForm({})" v-auth="'biz:projectRequirements:edit'">
<Icon icon="i-fluent:add-12-filled" /> {{ t('新增') }} <Icon icon="i-fluent:add-12-filled" /> {{ t('新增') }}
</a-button> </a-button>
</template> </template>
<template #firstColumn="{ record }"> <template #slotBizKey="{ record }">
<a @click="handleForm({ requirementId: record.requirementId })" :title="record.createTime"> <a @click="handleForm({ requirementId: record.requirementId })" :title="record.requirementName">
{{ record.createTime }} {{ record.requirementName }}
</a> </a>
</template> </template>
</BasicTable> </BasicTable>
@@ -91,40 +88,44 @@
field: 'requirementCode', field: 'requirementCode',
component: 'Input', component: 'Input',
}, },
{ {
label: t('项目区域'), label: t('项目区域'),
field: 'areaCode', field: 'areaCode',
component: 'Input', fieldLabel: 'provinceName',
}, component: 'ListSelect',
componentProps: {
selectType: 'bizProvSelect',
},
},
{
label: t('项目名称'),
field: 'projectId',
fieldLabel: 'projectName',
component: 'ListSelect',
componentProps: {
selectType: 'bizProjectSelect',
},
},
{
label: t('需求人员'),
field: 'employeeId',
fieldLabel: 'employeeName',
component: 'ListSelect',
componentProps: {
selectType: 'bizEmpSelect',
},
},
{ {
label: t('需求描述'), label: t('需求描述'),
field: 'requirementDescription', field: 'requirementDescription',
component: 'Input', component: 'Input',
}, },
{ {
label: t('优先级'), label: t('优先级'),
field: 'priority', field: 'priority',
component: 'Select', component: 'Select',
componentProps: { componentProps: {
dictType: '', dictType: 'priority',
allowClear: true,
},
},
{
label: t('项目ID'),
field: 'projectId',
component: 'Select',
componentProps: {
dictType: '',
allowClear: true,
},
},
{
label: t('用户ID'),
field: 'employeeId',
component: 'Select',
componentProps: {
dictType: '',
allowClear: true, allowClear: true,
}, },
}, },
@@ -134,11 +135,11 @@
component: 'Input', component: 'Input',
}, },
{ {
label: t('状态'), label: t('需求状态'),
field: 'requirementsStatus', field: 'requirementsStatus',
component: 'Select', component: 'Select',
componentProps: { componentProps: {
dictType: '', dictType: 'requirements_status',
allowClear: true, allowClear: true,
}, },
}, },
@@ -151,9 +152,8 @@
dataIndex: 'createTime', dataIndex: 'createTime',
key: 'a.create_time', key: 'a.create_time',
sorter: true, sorter: true,
width: 230, width: 180,
align: 'left', align: 'left',
slot: 'firstColumn',
}, },
{ {
title: t('需求名称'), title: t('需求名称'),
@@ -162,6 +162,7 @@
sorter: true, sorter: true,
width: 130, width: 130,
align: 'left', align: 'left',
slot: 'slotBizKey',
}, },
{ {
title: t('需求编号'), title: t('需求编号'),
@@ -192,7 +193,7 @@
dataIndex: 'startTime', dataIndex: 'startTime',
key: 'a.start_time', key: 'a.start_time',
sorter: true, sorter: true,
width: 130, width: 180,
align: 'center', align: 'center',
}, },
{ {
@@ -200,44 +201,26 @@
dataIndex: 'endTime', dataIndex: 'endTime',
key: 'a.end_time', key: 'a.end_time',
sorter: true, sorter: true,
width: 130, width: 180,
align: 'center', align: 'center',
}, },
{ {
title: t('优先级'), title: t('优先级'),
dataIndex: 'priority', dataIndex: 'priority',
key: 'a.priority', key: 'a.priority',
sorter: true, sorter: true,
width: 130, width: 130,
align: 'left', align: 'left',
dictType: '', dictType: 'priority',
}, },
{ {
title: t('更新时间'), title: t('更新时间'),
dataIndex: 'updateTime', dataIndex: 'updateTime',
key: 'a.update_time', key: 'a.update_time',
sorter: true, sorter: true,
width: 130, width: 180,
align: 'center', align: 'center',
}, },
{
title: t('项目ID'),
dataIndex: 'projectId',
key: 'a.project_id',
sorter: true,
width: 130,
align: 'left',
dictType: '',
},
{
title: t('用户ID'),
dataIndex: 'employeeId',
key: 'a.employee_id',
sorter: true,
width: 130,
align: 'left',
dictType: '',
},
{ {
title: t('需求备注'), title: t('需求备注'),
dataIndex: 'remark', dataIndex: 'remark',
@@ -253,7 +236,7 @@
sorter: true, sorter: true,
width: 130, width: 130,
align: 'left', align: 'left',
dictType: '', dictType: 'requirements_status',
}, },
]; ];
@@ -262,16 +245,16 @@
actions: (record: BizProjectRequirements) => [ actions: (record: BizProjectRequirements) => [
{ {
icon: 'i-clarity:note-edit-line', icon: 'i-clarity:note-edit-line',
title: t('编辑需求信息'), title: t('编辑'),
onClick: handleForm.bind(this, { requirementId: record.requirementId }), onClick: handleForm.bind(this, { requirementId: record.requirementId }),
auth: 'biz:projectRequirements:edit', auth: 'biz:projectRequirements:edit',
}, },
{ {
icon: 'i-ant-design:delete-outlined', icon: 'i-ant-design:delete-outlined',
color: 'error', color: 'error',
title: t('删除需求信息'), title: t('删除'),
popConfirm: { popConfirm: {
title: t('是否确认删除需求信息'), title: t('是否确认删除需求信息?'),
confirm: handleDelete.bind(this, record), confirm: handleDelete.bind(this, record),
}, },
auth: 'biz:projectRequirements:edit', auth: 'biz:projectRequirements:edit',

View File

@@ -10,7 +10,7 @@
:okAuth="'biz:province:edit'" :okAuth="'biz:province:edit'"
@register="registerDrawer" @register="registerDrawer"
@ok="handleSubmit" @ok="handleSubmit"
width="70%" width="40%"
> >
<template #title> <template #title>
<Icon :icon="getTitle.icon" class="m-1 pr-1" /> <Icon :icon="getTitle.icon" class="m-1 pr-1" />
@@ -50,6 +50,7 @@
maxlength: 52, maxlength: 52,
}, },
required: true, required: true,
colProps: { md: 24, lg: 24 },
}, },
{ {
label: t('省份编码'), label: t('省份编码'),
@@ -59,6 +60,7 @@
maxlength: 12, maxlength: 12,
}, },
required: true, required: true,
colProps: { md: 24, lg: 24 },
}, },
{ {
label: t('请求地址'), label: t('请求地址'),
@@ -67,6 +69,7 @@
componentProps: { componentProps: {
maxlength: 125, maxlength: 125,
}, },
colProps: { md: 24, lg: 24 },
}, },
{ {
label: t('省份序号'), label: t('省份序号'),
@@ -76,6 +79,7 @@
maxlength: 9, maxlength: 9,
}, },
required: true, required: true,
colProps: { md: 24, lg: 24 },
}, },
{ {
label: t('请求状态'), label: t('请求状态'),
@@ -85,6 +89,7 @@
dictType: 'req_code', dictType: 'req_code',
allowClear: true, allowClear: true,
}, },
colProps: { md: 24, lg: 24 },
}, },
{ {
label: t('数据状态'), label: t('数据状态'),
@@ -95,6 +100,7 @@
allowClear: true, allowClear: true,
}, },
required: true, required: true,
colProps: { md: 24, lg: 24 },
}, },
]; ];

View File

@@ -71,7 +71,26 @@
colProps: { md: 24, lg: 24 }, colProps: { md: 24, lg: 24 },
required: true, required: true,
}, },
{
label: t('所属人员'),
field: 'employeeId',
fieldLabel: 'employeeName',
component: 'ListSelect',
componentProps: {
selectType: 'bizEmpSelect',
},
required: true,
},
{
label: t('网站状态'),
field: 'storageStatus',
component: 'Select',
componentProps: {
dictType: 'ustatus ',
allowClear: true,
},
required: true,
},
{ {
label: t('登录账号'), label: t('登录账号'),
field: 'webAccount', field: 'webAccount',
@@ -94,26 +113,6 @@
component: 'InputTextArea', component: 'InputTextArea',
colProps: { md: 24, lg: 24 }, colProps: { md: 24, lg: 24 },
}, },
{
label: t('所属人员'),
field: 'employeeId',
fieldLabel: 'employeeName',
component: 'ListSelect',
componentProps: {
selectType: 'bizEmpSelect',
},
required: true,
},
{
label: t('网站状态'),
field: 'storageStatus',
component: 'Select',
componentProps: {
dictType: 'ustatus ',
allowClear: true,
},
required: true,
},
]; ];
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm<BizWebsiteStorage>({ const [registerForm, { resetFields, setFieldsValue, validate }] = useForm<BizWebsiteStorage>({