From 1b04dba5f52c9fd2905757a5997d181975594cf7 Mon Sep 17 00:00:00 2001
From: XaoLi717 <144221124+XaoLi717@users.noreply.github.com>
Date: Fri, 17 Jan 2025 14:44:11 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=87=E5=8F=B7=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/Home/clnr/clgl/ClglDetail.vue | 4 +-
.../detail/ProcessInstanceOperationButton.vue | 187 +++++++++++++++++-
.../bpm/processInstance/detail/index.vue | 2 +-
3 files changed, 186 insertions(+), 7 deletions(-)
diff --git a/src/views/Home/clnr/clgl/ClglDetail.vue b/src/views/Home/clnr/clgl/ClglDetail.vue
index c3ab2e8..02f8716 100644
--- a/src/views/Home/clnr/clgl/ClglDetail.vue
+++ b/src/views/Home/clnr/clgl/ClglDetail.vue
@@ -419,8 +419,8 @@ const updateNumber = async (date) => {
const numberDate = await ClglApi.getClgl(date.id)
const data = numberDate as unknown as ClglVO
// 检查编号类型是否为文号
- if (data.numberType !== 1) {
- message.error("编号类型不是文号!")
+ if (data.numberType !== 1 && data.numberType ) {
+ message.error("编号类型非文号!")
return
}
// 检查是否已存在 usageName
diff --git a/src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue b/src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue
index a323761..941531c 100644
--- a/src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue
+++ b/src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue
@@ -582,6 +582,60 @@
+
+
+
+
+
+
+ {{ getButtonDisplayName(OperationButtonType.NUMBER) }}
+
+
+
+
+
+ 选择文号,确认后保存
+
+
+
+
+ {{
+ (scope.row.fastCode || "") + (scope.row.fastBrackets || "") + (scope.row.year || "") +
+ ((scope.row.month != null&&scope.row.month!=0) ? scope.row.month.toString().padStart(2,"0") : "") +
+ ((scope.row.lastBrackets) || "") +
+ ((scope.row.docOrder || "").toString().padStart(scope.row.lengthSelection,"0")) +
+ (scope.row.lastCode || "")
+ }}
+
+
+
+
+
+
+ 确认
+
+ 取消
+
+
+
+
()
+const listNumbers = ref(); // 流水数据
+const ListNumber = ref([]) // 列表数据
+// 搜索数据vo
+const queryParamsNumbers = reactive({
+ pageNo: 1,
+ pageSize: 10,
+ id: undefined,
+ fastCode: undefined,
+ fastBrackets: undefined,
+ year: undefined,
+ month: undefined,
+ lastBrackets: undefined,
+ docOrder: undefined,
+ lastCode: undefined,
+ enableMonth: undefined,
+ numbersType: undefined as number | undefined,
+ lengthSelection: undefined,
+ mappingData1: undefined as string | undefined,
+ mappingData2: undefined as string | undefined,
+ annotation: undefined,
+ createTime: [],
+})
+const formData = ref({
+ serialNumber: undefined as string | undefined,
+})
+
+// 根据编号类型获取编号数据后更新数据
+const getNumberByType = async ()=> {
+ listNumbers.value = formData.value.serialNumber = undefined;
+ //获取文号数据
+ queryParamsNumbers.numbersType = 1
+ queryParamsNumbers.mappingData2 = props.buttonNumberPath
+ const data = await numbersApi.getnumbersPage(queryParamsNumbers)
+ if (data.total == 0) {
+ message.error("未找到文号数据!请配置文号!")
+ return;
+ }
+ //判断条数,如果只有一条就和流水号一样直接处理
+ if (data.total == 1 ) {
+ listNumbers.value = data.list[0]
+ await changeNumbers();
+ } else {
+ // 两条以上数据,给用户挑选,然后处理
+ ListNumber.value = data.list;
+ }
+}
+
+// 获取旧数据后对比数据后更新
+const changeNumbers = async ()=> {
+ if (!listNumbers.value) {
+ return;
+ }
+ const currentYear = new Date().getFullYear();
+ const currentMonth = new Date().getMonth() + 1;
+ listNumbers.value.docOrder+=1
+
+ // 判断年份不同时 更新年份,顺序号归一
+ if (currentYear != listNumbers.value.year) {
+ listNumbers.value.year = currentYear;
+ listNumbers.value.docOrder = 1;
+ }
+
+ // 判断月份不同时,判断不是禁用月份的时候 更新月份,顺序号归一
+ if (currentMonth != listNumbers.value.month&&listNumbers.value.month!==0) {
+ listNumbers.value.month = currentMonth;
+ listNumbers.value.docOrder = 1;
+ }
+
+ // 提取内部函数方便使用
+ const {fastCode, fastBrackets, year, month, lastBrackets, docOrder, lengthSelection, lastCode } = listNumbers.value
+ // 数据拼接
+ formData.value.serialNumber =
+ `${fastCode || ""}${fastBrackets || ""}${year || ""}`+
+ `${(month != null&&month!=0) ? month.toString().padStart(2,"0") : ""}`+
+ `${lastBrackets || ""}${(docOrder || "").toString().padStart(lengthSelection,"0")}${lastCode || ""}`;
+}
+
+// 选择编号时赋值
+const handleChangeNumbers = async (val: any | undefined) => {
+ listNumbers.value = JSON.parse(JSON.stringify(val)); // 深拷贝
+ formData.value.serialNumber = undefined
+ await changeNumbers();
+}
+
+watch(() => props.buttonNumberPath, () => {
+ if (runningTask.value && isHandleTaskStatus() && isShowButton(OperationButtonType.NUMBER)) {
+ getNumberByType()
+ }
+});
+
const formLoading = ref(false) // 表单加载中
const popOverVisible = ref({
approve: false,
@@ -639,7 +785,8 @@ const popOverVisible = ref({
return: false,
copy: false,
cancel: false,
- deleteSign: false
+ deleteSign: false,
+ numbers: false
}) // 气泡卡是否展示
const returnList = ref([] as any) // 退回节点
@@ -750,6 +897,15 @@ const cancelForm = reactive({
const cancelFormRule = reactive>({
cancelReason: [{ required: true, message: '取消理由不能为空', trigger: 'blur' }],
})
+
+// 文号
+const numbersFormRef = ref()
+const numbersForm = reactive({
+ numbersReason: ''
+})
+const numbersFormRule = reactive>({
+ numbersReason: [{ required: true, message: '文号不能为空', trigger: 'blur' }],
+})
//pch 选人begin--------------------
const userSelectFormRef = ref() // 用户选择弹窗 ref
const userSelectSingleFormRef = ref() // 用户选择弹窗 ref
@@ -864,7 +1020,7 @@ const openPopover = async (type: string) => {
const closePropover = (type: string, formRef: FormInstance | undefined) => {
if (formRef) {
formRef.resetFields()
- }
+ }
popOverVisible.value[type] = false
}
@@ -964,7 +1120,6 @@ const handleTransfer = async () => {
const handleDelegate = async () => {
formLoading.value = true
try {
-
// 1.1 校验表单
if (!delegateFormRef.value) return
await delegateFormRef.value.validate()
@@ -1036,6 +1191,30 @@ const handleReturn = async () => {
}
}
+/** 处理文号 */
+const handleNumbers = async () => {
+ formLoading.value = true
+ try {
+ // 1.1 校验表单
+ if (!numbersFormRef.value) return
+ await numbersFormRef.value.validate()
+ //提交文号
+ const date = {
+ id: props.processInstance.businessKey,
+ value: formData.value.serialNumber
+ }
+ emit('update', date)
+ await numbersApi.updatenumbers(listNumbers.value)
+ popOverVisible.value.numbers = false
+ numbersFormRef.value.resetFields()
+ message.success('操作成功')
+ // 2 重新加载数据
+ reload()
+ } finally {
+ formLoading.value = false
+ }
+}
+
/** 处理取消 */
const handleCancel = async () => {
formLoading.value = true
diff --git a/src/views/bpm/processInstance/detail/index.vue b/src/views/bpm/processInstance/detail/index.vue
index 7abec6c..4ee14f5 100644
--- a/src/views/bpm/processInstance/detail/index.vue
+++ b/src/views/bpm/processInstance/detail/index.vue
@@ -334,7 +334,7 @@ const updateNumber = (date) => {
if (businessForm.value && businessForm.value.updateNumber) {
businessForm.value.updateNumber(date);
}else {
- message.error("流程未配置更新函数")
+ message.error("流程配置缺失")
}
// 重新获取详情
getDetail()