yxk-20260520-党委会:新增议题序号字段
序号自动生成,明确生成逻辑(先选日期再选议题),20260520-1
This commit is contained in:
@@ -6,16 +6,10 @@ import { getWeekMonthQuarterYear } from '/@/utils';
|
|||||||
//列表数据
|
//列表数据
|
||||||
export const columns: BasicColumn[] = [
|
export const columns: BasicColumn[] = [
|
||||||
{
|
{
|
||||||
title: '序号',
|
title: '年份',
|
||||||
align:"center",
|
align:"center",
|
||||||
dataIndex: 'number',
|
dataIndex: 'year',
|
||||||
sorter: true,
|
width: '60px',
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '督办次数',
|
|
||||||
align:"center",
|
|
||||||
dataIndex: 'superviseCount',
|
|
||||||
width: '100px',
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '事项名称',
|
title: '事项名称',
|
||||||
@@ -23,10 +17,26 @@ export const columns: BasicColumn[] = [
|
|||||||
dataIndex: 'title'
|
dataIndex: 'title'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '年份',
|
title: '序号',
|
||||||
align:"center",
|
align:"center",
|
||||||
dataIndex: 'year',
|
dataIndex: 'number',
|
||||||
width: '60px',
|
sorter: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '会议决议',
|
||||||
|
align:"center",
|
||||||
|
dataIndex: 'content'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '事项目录编码',
|
||||||
|
align:"center",
|
||||||
|
dataIndex: 'matterCode'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '督办次数',
|
||||||
|
align:"center",
|
||||||
|
dataIndex: 'superviseCount',
|
||||||
|
width: '100px',
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -40,15 +50,13 @@ export const columns: BasicColumn[] = [
|
|||||||
sorter: true,
|
sorter: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '会议决议',
|
title: '议题序号',
|
||||||
align:"center",
|
align:"center",
|
||||||
dataIndex: 'content'
|
dataIndex: 'itemNumber',
|
||||||
},
|
sorter: true,
|
||||||
{
|
width: '100px',
|
||||||
title: '事项目录编码',
|
|
||||||
align:"center",
|
|
||||||
dataIndex: 'matterCode'
|
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: '抄告单编号',
|
title: '抄告单编号',
|
||||||
align:"center",
|
align:"center",
|
||||||
@@ -175,20 +183,21 @@ export const bgPartymatterFeedbackColumns: BasicColumn[] = [
|
|||||||
export const superQuerySchema = {
|
export const superQuerySchema = {
|
||||||
year: {title: '年份',order: 0,view: 'text', type: 'string',},
|
year: {title: '年份',order: 0,view: 'text', type: 'string',},
|
||||||
number: {title: '序号',order: 1,view: 'text', type: 'string',},
|
number: {title: '序号',order: 1,view: 'text', type: 'string',},
|
||||||
matterTime: {title: '会议时间',order: 2,view: 'date', type: 'string',},
|
itemNumber: {title: '议题序号',order: 2,view: 'number', type: 'number',},
|
||||||
title: {title: '事项名称',order: 3,view: 'text', type: 'string',},
|
matterTime: {title: '会议时间',order: 3,view: 'date', type: 'string',},
|
||||||
content: {title: '会议决议',order: 4,view: 'textarea', type: 'string',},
|
title: {title: '事项名称',order: 4,view: 'text', type: 'string',},
|
||||||
matterCode: {title: '事项目录编码',order: 5,view: 'text', type: 'string',},
|
content: {title: '会议决议',order: 5,view: 'textarea', type: 'string',},
|
||||||
noticeNumber: {title: '抄告单编号',order: 6,view: 'text', type: 'string',},
|
matterCode: {title: '事项目录编码',order: 6,view: 'text', type: 'string',},
|
||||||
isImportant: {title: '是否为三重一大决策',order: 7,view: 'list', type: 'string', dictCode: 'yn',},
|
noticeNumber: {title: '抄告单编号',order: 7,view: 'text', type: 'string',},
|
||||||
responDeptid: {title: '责任部门',order: 8,view: 'sel_depart', type: 'string',},
|
isImportant: {title: '是否为三重一大决策',order: 8,view: 'list', type: 'string', dictCode: 'yn',},
|
||||||
actualExect: {title: '实际执行情况',order: 9,view: 'text', type: 'string',},
|
responDeptid: {title: '责任部门',order: 9,view: 'sel_depart', type: 'string',},
|
||||||
bpmStatus: {title: '完成状态',order: 10,view: 'text', type: 'string',},
|
actualExect: {title: '实际执行情况',order: 10,view: 'text', type: 'string',},
|
||||||
superviseCount: {title: '督办次数',order: 11,view: 'text', type: 'string',},
|
bpmStatus: {title: '完成状态',order: 11,view: 'text', type: 'string',},
|
||||||
deadline: {title: '要求完成日期',order: 12,view: 'date', type: 'string',},
|
superviseCount: {title: '督办次数',order: 12,view: 'text', type: 'string',},
|
||||||
urgencyLevel: {title: '是否急件',order: 13,view: 'list', type: 'string', dictCode: 'yn',},
|
deadline: {title: '要求完成日期',order: 13,view: 'date', type: 'string',},
|
||||||
isNeedAppro: {title: '是否需要所办领导审批',order: 14,view: 'switch', type: 'string',},
|
urgencyLevel: {title: '是否急件',order: 14,view: 'list', type: 'string', dictCode: 'yn',},
|
||||||
supDeptleaderid: {title: '所办领导',order: 15,view: 'sel_user', type: 'string',},
|
isNeedAppro: {title: '是否需要所办领导审批',order: 15,view: 'switch', type: 'string',},
|
||||||
isNeedSuoleader: {title: '是否抄送所领导',order: 16,view: 'switch', type: 'string',},
|
supDeptleaderid: {title: '所办领导',order: 16,view: 'sel_user', type: 'string',},
|
||||||
suoleaderid: {title: '抄送所领导',order: 17,view: 'sel_user', type: 'string',},
|
isNeedSuoleader: {title: '是否抄送所领导',order: 17,view: 'switch', type: 'string',},
|
||||||
|
suoleaderid: {title: '抄送所领导',order: 18,view: 'sel_user', type: 'string',},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,9 +9,9 @@
|
|||||||
<JDictSelectTag v-model:value="queryParam.year" dictCode="super_year" placeholder="请选择年份" allow-clear @change="searchQuery" />
|
<JDictSelectTag v-model:value="queryParam.year" dictCode="super_year" placeholder="请选择年份" allow-clear @change="searchQuery" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :lg="5" :md="6" :sm="8">
|
<a-col :lg="5" :md="8" :sm="12">
|
||||||
<a-form-item label="完成状态" name="bpmStatus">
|
<a-form-item label="事项名称" name="title">
|
||||||
<JDictSelectTag v-model:value="queryParam.bpmStatus" dictCode="super_status" placeholder="请选择完成状态" allow-clear @change="searchQuery" />
|
<JInput v-model:value="queryParam.title" type="like" placeholder="请输入事项名称" allow-clear trim />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :lg="5" :md="8" :sm="12">
|
<a-col :lg="5" :md="8" :sm="12">
|
||||||
@@ -19,9 +19,14 @@
|
|||||||
<JInput v-model:value="queryParam.content" type="like" placeholder="请输入会议决议" allow-clear trim />
|
<JInput v-model:value="queryParam.content" type="like" placeholder="请输入会议决议" allow-clear trim />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :lg="6" :md="8" :sm="12">
|
<!-- <a-col :lg="6" :md="8" :sm="12">-->
|
||||||
<a-form-item label="事项目录编码" name="matterCode">
|
<!-- <a-form-item label="事项目录编码" name="matterCode">-->
|
||||||
<JInput v-model:value="queryParam.matterCode" type="like" placeholder="请输入事项目录编码" allow-clear trim />
|
<!-- <JInput v-model:value="queryParam.matterCode" type="like" placeholder="请输入事项目录编码" allow-clear trim />-->
|
||||||
|
<!-- </a-form-item>-->
|
||||||
|
<!-- </a-col>-->
|
||||||
|
<a-col :lg="5" :md="6" :sm="8">
|
||||||
|
<a-form-item label="完成状态" name="bpmStatus">
|
||||||
|
<JDictSelectTag v-model:value="queryParam.bpmStatus" dictCode="super_status" placeholder="请选择完成状态" allow-clear @change="searchQuery" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :lg="4" :md="8" :sm="12">
|
<a-col :lg="4" :md="8" :sm="12">
|
||||||
|
|||||||
@@ -40,7 +40,12 @@
|
|||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
<a-form-item label="序号" name="number">
|
<a-form-item label="序号" name="number">
|
||||||
<a-input v-model:value="mainForm.number" :disabled="mainDisabled" allow-clear />
|
<a-input v-model:value="mainForm.number" :disabled="mainDisabled" :readonly="true" />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="议题序号" name="itemNumber">
|
||||||
|
<a-input-number v-model:value="mainForm.itemNumber" :disabled="mainDisabled" style="width: 100%" allow-clear />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
@@ -238,12 +243,14 @@
|
|||||||
const feedbackAttachmentRefreshKey = ref(0);
|
const feedbackAttachmentRefreshKey = ref(0);
|
||||||
const subApproveUser = ref('');
|
const subApproveUser = ref('');
|
||||||
const isEnd = ref(0);
|
const isEnd = ref(0);
|
||||||
|
const lastGeneratedNumber = ref('');
|
||||||
|
|
||||||
const mainForm = reactive<Record<string, any>>({
|
const mainForm = reactive<Record<string, any>>({
|
||||||
id: '',
|
id: '',
|
||||||
year: '',
|
year: '',
|
||||||
secretLevel: '',
|
secretLevel: '',
|
||||||
number: '',
|
number: '',
|
||||||
|
itemNumber: undefined,
|
||||||
matterTime: '',
|
matterTime: '',
|
||||||
title: '',
|
title: '',
|
||||||
content: '',
|
content: '',
|
||||||
@@ -320,6 +327,14 @@
|
|||||||
{ immediate: true }
|
{ immediate: true }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// 根据会议时间和议题序号自动生成业务序号,例如:2026-05-20 + 2 => 20260520-2。
|
||||||
|
watch(
|
||||||
|
() => [mainForm.matterTime, mainForm.itemNumber],
|
||||||
|
() => {
|
||||||
|
syncGeneratedNumber();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
async function initFormData() {
|
async function initFormData() {
|
||||||
const dataId = props.formData?.dataId;
|
const dataId = props.formData?.dataId;
|
||||||
if (!dataId) {
|
if (!dataId) {
|
||||||
@@ -342,6 +357,48 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function syncGeneratedNumber() {
|
||||||
|
const generatedNumber = buildGeneratedNumber(mainForm.matterTime, mainForm.itemNumber);
|
||||||
|
if (generatedNumber) {
|
||||||
|
mainForm.number = generatedNumber;
|
||||||
|
lastGeneratedNumber.value = generatedNumber;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (lastGeneratedNumber.value && mainForm.number === lastGeneratedNumber.value) {
|
||||||
|
mainForm.number = '';
|
||||||
|
lastGeneratedNumber.value = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 只在两个必要字段都填写后生成,避免用户未填完整时写入半截序号。
|
||||||
|
function buildGeneratedNumber(matterTime, itemNumber) {
|
||||||
|
const dateText = formatMatterTime(matterTime);
|
||||||
|
if (!dateText || itemNumber === undefined || itemNumber === null || itemNumber === '') {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
return `${dateText}-${itemNumber}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 兼容日期选择器返回的字符串、Date、dayjs/moment 对象。
|
||||||
|
function formatMatterTime(value) {
|
||||||
|
if (!value) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
if (typeof value === 'string') {
|
||||||
|
return value.slice(0, 10).replace(/-/g, '');
|
||||||
|
}
|
||||||
|
if (value instanceof Date) {
|
||||||
|
const year = value.getFullYear();
|
||||||
|
const month = String(value.getMonth() + 1).padStart(2, '0');
|
||||||
|
const day = String(value.getDate()).padStart(2, '0');
|
||||||
|
return `${year}${month}${day}`;
|
||||||
|
}
|
||||||
|
if (typeof value.format === 'function') {
|
||||||
|
return value.format('YYYYMMDD');
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
async function loadFeedbackList() {
|
async function loadFeedbackList() {
|
||||||
const bpmProcessId = processInfo.value.processInstanceId;
|
const bpmProcessId = processInfo.value.processInstanceId;
|
||||||
if (!mainForm.id || !bpmProcessId) {
|
if (!mainForm.id || !bpmProcessId) {
|
||||||
|
|||||||
@@ -10,18 +10,23 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
<a-form-item label="密级" v-bind="validateInfos.secretLevel" id="BgPartymatterForm-secretLevel" name="secretLevel">
|
<a-form-item label="会议时间" v-bind="validateInfos.matterTime" id="BgPartymatterForm-matterTime" name="matterTime">
|
||||||
<j-dict-select-tag v-model:value="formData.secretLevel" dictCode="secret_level" placeholder="请选择密级" allow-clear />
|
<a-date-picker placeholder="请选择会议时间" v-model:value="formData.matterTime" value-format="YYYY-MM-DD" style="width: 100%" allow-clear />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
<a-form-item label="序号" v-bind="validateInfos.number" id="BgPartymatterForm-number" name="number">
|
<a-form-item label="序号" v-bind="validateInfos.number" id="BgPartymatterForm-number" name="number">
|
||||||
<a-input v-model:value="formData.number" placeholder="请输入序号" allow-clear ></a-input>
|
<a-input v-model:value="formData.number" placeholder="填写会议时间和议题序号后自动生成" :readonly="true" ></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
<a-form-item label="会议时间" v-bind="validateInfos.matterTime" id="BgPartymatterForm-matterTime" name="matterTime">
|
<a-form-item label="议题序号" v-bind="validateInfos.itemNumber" id="BgPartymatterForm-itemNumber" name="itemNumber">
|
||||||
<a-date-picker placeholder="请选择会议时间" v-model:value="formData.matterTime" value-format="YYYY-MM-DD" style="width: 100%" allow-clear />
|
<a-input-number v-model:value="formData.itemNumber" placeholder="请输入议题序号" style="width: 100%" allow-clear />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item label="密级" v-bind="validateInfos.secretLevel" id="BgPartymatterForm-secretLevel" name="secretLevel">
|
||||||
|
<j-dict-select-tag v-model:value="formData.secretLevel" dictCode="secret_level" placeholder="请选择密级" allow-clear />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
@@ -159,6 +164,7 @@
|
|||||||
year: '',
|
year: '',
|
||||||
secretLevel: '',
|
secretLevel: '',
|
||||||
number: '',
|
number: '',
|
||||||
|
itemNumber: undefined,
|
||||||
matterTime: '',
|
matterTime: '',
|
||||||
title: '',
|
title: '',
|
||||||
content: '',
|
content: '',
|
||||||
@@ -232,6 +238,58 @@
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const lastGeneratedNumber = ref('');
|
||||||
|
|
||||||
|
// 根据会议时间和议题序号自动生成业务序号,例如:2026-05-20 + 2 => 20260520-2。
|
||||||
|
watch(
|
||||||
|
() => [formData.matterTime, formData.itemNumber],
|
||||||
|
() => {
|
||||||
|
syncGeneratedNumber();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
function syncGeneratedNumber() {
|
||||||
|
const generatedNumber = buildGeneratedNumber(formData.matterTime, formData.itemNumber);
|
||||||
|
if (generatedNumber) {
|
||||||
|
formData.number = generatedNumber;
|
||||||
|
lastGeneratedNumber.value = generatedNumber;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (lastGeneratedNumber.value && formData.number === lastGeneratedNumber.value) {
|
||||||
|
formData.number = '';
|
||||||
|
lastGeneratedNumber.value = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 只在两个必要字段都填写后生成,避免用户未填完整时写入半截序号。
|
||||||
|
function buildGeneratedNumber(matterTime, itemNumber) {
|
||||||
|
const dateText = formatMatterTime(matterTime);
|
||||||
|
if (!dateText || itemNumber === undefined || itemNumber === null || itemNumber === '') {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
return `${dateText}-${itemNumber}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 兼容日期选择器返回的字符串、Date、dayjs/moment 对象。
|
||||||
|
function formatMatterTime(value) {
|
||||||
|
if (!value) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
if (typeof value === 'string') {
|
||||||
|
return value.slice(0, 10).replace(/-/g, '');
|
||||||
|
}
|
||||||
|
if (value instanceof Date) {
|
||||||
|
const year = value.getFullYear();
|
||||||
|
const month = String(value.getMonth() + 1).padStart(2, '0');
|
||||||
|
const day = String(value.getDate()).padStart(2, '0');
|
||||||
|
return `${year}${month}${day}`;
|
||||||
|
}
|
||||||
|
if (typeof value.format === 'function') {
|
||||||
|
return value.format('YYYYMMDD');
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(()=>{
|
onMounted(()=>{
|
||||||
initFormData();
|
initFormData();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -64,7 +64,7 @@
|
|||||||
//办理
|
//办理
|
||||||
const [registerHandleModal, { openModal: openHandleModal }] = useModal();
|
const [registerHandleModal, { openModal: openHandleModal }] = useModal();
|
||||||
async function handleProcess(record) {
|
async function handleProcess(record) {
|
||||||
debugger
|
//debugger
|
||||||
let { formData, formUrl } = await getTaskNodeInfo(record);
|
let { formData, formUrl } = await getTaskNodeInfo(record);
|
||||||
formData['PROCESS_TAB_TYPE'] = 'run';
|
formData['PROCESS_TAB_TYPE'] = 'run';
|
||||||
openHandleModal(true, {
|
openHandleModal(true, {
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ export function useTaskList(type) {
|
|||||||
*/
|
*/
|
||||||
async function getTaskNodeInfo(record) {
|
async function getTaskNodeInfo(record) {
|
||||||
//查询条件
|
//查询条件
|
||||||
debugger;
|
// debugger;
|
||||||
let params = { taskId: record.id };
|
let params = { taskId: record.id };
|
||||||
const result = await taskNodeInfo(type, params);
|
const result = await taskNodeInfo(type, params);
|
||||||
console.log('获取流程节点信息', result);
|
console.log('获取流程节点信息', result);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ export const columns: BasicColumn[] = [
|
|||||||
title: '#',
|
title: '#',
|
||||||
dataIndex: '',
|
dataIndex: '',
|
||||||
key: 'rowIndex',
|
key: 'rowIndex',
|
||||||
width: 60,
|
width: 30,
|
||||||
align: 'center',
|
align: 'center',
|
||||||
customRender: function ({ index }) {
|
customRender: function ({ index }) {
|
||||||
return parseInt(index) + 1;
|
return parseInt(index) + 1;
|
||||||
@@ -17,7 +17,7 @@ export const columns: BasicColumn[] = [
|
|||||||
{
|
{
|
||||||
title: '节点名称',
|
title: '节点名称',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 120,
|
width: 140,
|
||||||
dataIndex: 'processNodeName',
|
dataIndex: 'processNodeName',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -30,14 +30,14 @@ export const columns: BasicColumn[] = [
|
|||||||
title: 'PC表单地址',
|
title: 'PC表单地址',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'modelAndView',
|
dataIndex: 'modelAndView',
|
||||||
width: 240,
|
width: 400,
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '移动表单地址',
|
title: '移动表单地址',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'modelAndViewMobile',
|
dataIndex: 'modelAndViewMobile',
|
||||||
width: 240,
|
width: 30,
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user