From 858111c59698a60f569f6ee0116a5a87b1c3f78a Mon Sep 17 00:00:00 2001 From: XaoLi717 <144221124+XaoLi717@users.noreply.github.com> Date: Mon, 6 Jan 2025 08:24:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=A6=E8=BE=86=E7=AE=A1=E7=90=86=E7=BC=96?= =?UTF-8?q?=E5=8F=B7=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Home/clnr/clgl/ClglCreate.vue | 174 ++++++++++++++++++++++- src/views/Home/clnr/clgl/ClglDetail.vue | 181 ++++++++++++++++++++++++ 2 files changed, 353 insertions(+), 2 deletions(-) diff --git a/src/views/Home/clnr/clgl/ClglCreate.vue b/src/views/Home/clnr/clgl/ClglCreate.vue index 4d5cdbe..6650f13 100644 --- a/src/views/Home/clnr/clgl/ClglCreate.vue +++ b/src/views/Home/clnr/clgl/ClglCreate.vue @@ -24,6 +24,32 @@ + + + + + + + + + + + {{ formData.serialNumber }} + + + @@ -146,6 +172,39 @@ @@ -162,7 +221,7 @@ import {FormProcessMappingApi} from "@/api/bpm/formprocessmapping"; import SelectCarForm from "@/views/Home/clnr/carinfo/SelectCarForm.vue"; import SelectDriverForm from "@/views/Home/clnr/driver/SelectDriverForm.vue"; import {Edit} from "@element-plus/icons-vue"; - +import {numbersApi, numbersVO} from "@/api/home/numbers"; /** 车辆管理 表单 */ defineOptions({ name: 'ClglCreate' }) @@ -191,6 +250,8 @@ const formData = ref({ carDriverInfo: undefined, carMileage: undefined, carStatus: undefined, + serialNumber: undefined as string | undefined, + numberType: undefined as number | undefined, carReason: undefined, carRemark: undefined, }) @@ -223,6 +284,17 @@ const formRules = reactive({ carAddress: [{ required: true, message: '目的地不能为空', trigger: 'blur' }], carStatus: [{ required: true, message: '车辆状态不能为空', trigger: 'blur' }], carReason: [{ required: true, message: '用车原因不能为空', trigger: 'blur' }], + numberType: [{ required: true, message: '编号类型不能为空', trigger: 'blur' }], + serialNumber: [{ + required: true, message: '编号不能为空', trigger: 'blur', + validator: (rule, value, callback) => { + if (OpenNumber.value && !value) { + callback(new Error('编号不能为空')); + } else { + callback(); + } + }, + }], }) const formRef = ref() // 表单 Ref @@ -312,7 +384,10 @@ const submitForm = async () => { if ( processKey) { data.processDefinitionKey = processKey } - + // 这里流水号正常保存 文号需要参数传递后保存 + if (formData.value.numberType == 0 || (formData.value.numberType&&OpenNumber.value)) { + await numbersApi.updatenumbers(listNumbers.value) + } await ClglApi.createClgl(data) message.success(t('common.createSuccess')) delView(unref(currentRoute)) @@ -344,6 +419,98 @@ const getUserInfo = async () => { userInfo.value = formData.value.carUserName } } + +const listNumbers = ref(); // 流水数据 +const ListNumber = ref([]) // 列表数据 +const total = ref(0) // 列表的总页数 +// 搜索数据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, + annotation: undefined, + createTime: [], +}) +const visible = ref(false) // 选择编号弹窗显示控制 +const OpenNumber = ref(false) // 假设流程传递参数 + +// 根据编号类型获取编号数据后更新数据 +const getNumberByType = async ()=> { + listNumbers.value = formData.value.serialNumber = undefined; + + queryParamsNumbers.numbersType = formData.value.numberType + const data = await numbersApi.getnumbersPage(queryParamsNumbers) + + // 流水号类型的时候是第一个,文号类型的时候一条就直接处理,多条的时候要选择 + if (formData.value.numberType == 0) { + if (data.total == 0) { + message.error("找不到流水号数据!请配置流水号") + } + listNumbers.value = data.list[0] + await changeNumbers(); + } else if (formData.value.numberType == 1&&OpenNumber.value) { + if (data.total == 0) { + message.error("找不到文号数据!请配置文号!") + } + total.value = data.total; + //判断条数,如果只有一条就和流水号一样直接处理 + if (data.total == 1 ) { + listNumbers.value = data.list[0] + await changeNumbers(); + } else { + ListNumber.value = data.list; + } + } +} + +// 获取旧数据后对比数据后更新 +const changeNumbers = async ()=> { + + 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 handleCurrentChange = async (val: any | undefined) => { + listNumbers.value = JSON.parse(JSON.stringify(val)); // 深拷贝 + formData.value.serialNumber = undefined + await changeNumbers(); +} + /** 初始化 */ onMounted(async () => { await getUserInfo() @@ -360,6 +527,9 @@ onMounted(async () => { draftButton.value= true } } + formData.value.numberType = 2; + queryParamsNumbers.mappingData1 = curFullPath; + await getNumberByType() const processKey = await FormProcessMappingApi.selectProcessKey( curFullPath ) diff --git a/src/views/Home/clnr/clgl/ClglDetail.vue b/src/views/Home/clnr/clgl/ClglDetail.vue index 03bffee..4be2f44 100644 --- a/src/views/Home/clnr/clgl/ClglDetail.vue +++ b/src/views/Home/clnr/clgl/ClglDetail.vue @@ -25,6 +25,33 @@ + + + + + + + + + + + {{formData.serialNumber}} + + + @@ -115,6 +142,41 @@ +