核心升级: - Spring Boot 2.7.18 → 3.5.14 - MyBatis Plus 3.5.5 → 3.5.16 (spring-boot3-starter) - Springdoc 1.8.0 → 2.8.6 (OpenAPI 3) - Flowable 6.8.0 → 7.1.0 - Druid 1.2.x → 1.2.28 (boot3-starter) - kotlin-reflect 1.9.10 → 1.9.25 迁移适配: - javax → jakarta 命名空间 (620+ 文件) - Swagger 注解迁移到 OpenAPI 3 (@Tag/@Schema/@Operation/@Parameter) - Spring Security 6.2 适配 (antMatchers→requestMatchers, EnableMethodSecurity) - Druid 包名迁移 (boot→boot3) - Redis 配置路径迁移 (spring.redis→spring.data.redis) - Flyway 适配 (flyway-database-postgresql) - Flowable 7.x 适配 (MULE_TASK_IMAGE 移除) 修复: - spring-boot-maven-plugin 2.5.15→3.5.14 (SPI服务发现失效) - mybatis-plus-boot-starter 3.5.5→3.5.16 (kotlin-reflect+fastjson2冲突) - Flowable database-schema-update 启用自动建表 验证: 23/23 测试通过, 1374 API端点正常
162 lines
4.0 KiB
Vue
Executable File
162 lines
4.0 KiB
Vue
Executable File
<template>
|
|
<el-dialog
|
|
v-model="localOpen"
|
|
:title="title"
|
|
width="800px"
|
|
append-to-body
|
|
@close="cancel"
|
|
>
|
|
<template #header>
|
|
<div class="custom-header">
|
|
<span>{{ title }}</span>
|
|
</div>
|
|
</template>
|
|
<div class="scrollable-content">
|
|
<el-form
|
|
ref="definitionRef"
|
|
:model="fromModel"
|
|
label-width="140px"
|
|
>
|
|
<el-row>
|
|
<el-col :span="8">
|
|
<el-form-item
|
|
label-width="100"
|
|
label="项目名称"
|
|
prop="chargeName"
|
|
>
|
|
<el-input
|
|
v-model="fromModel.chargeName"
|
|
disabled="true"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item
|
|
label-width="100"
|
|
label="所属科室"
|
|
prop="orgId_dictText"
|
|
>
|
|
<el-input
|
|
v-model="fromModel.orgId_dictText"
|
|
disabled="true"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item
|
|
label-width="100"
|
|
label="财务类别"
|
|
prop="typeCode_dictText"
|
|
>
|
|
<el-input
|
|
v-model="fromModel.typeCode_dictText"
|
|
disabled="true"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item
|
|
label-width="100"
|
|
label="医保类别"
|
|
prop="ybType_dictText"
|
|
>
|
|
<el-input
|
|
v-model="fromModel.ybType_dictText"
|
|
disabled="true"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item
|
|
label-width="100"
|
|
label="基础价格"
|
|
prop="price"
|
|
>
|
|
<el-input-number
|
|
v-model="fromModel.price"
|
|
:min="0"
|
|
:max="999999.99"
|
|
:step="0.01"
|
|
:precision="2"
|
|
controls-position="right"
|
|
:controls="false"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
</div>
|
|
<template #footer>
|
|
<div class="dialog-footer">
|
|
<el-button
|
|
type="primary"
|
|
@click="submitForm"
|
|
>
|
|
确 定
|
|
</el-button>
|
|
<el-button @click="cancel">
|
|
取 消
|
|
</el-button>
|
|
</div>
|
|
</template>
|
|
</el-dialog>
|
|
</template>
|
|
<script setup>
|
|
const emit = defineEmits(["submit", "update:open"]);
|
|
const props = defineProps({
|
|
title: String,
|
|
open: Boolean,
|
|
formData: Object,
|
|
statusOptions: Object
|
|
});
|
|
const localOpen = ref(props.open);
|
|
const definitionRef = ref(null);
|
|
const fromModel = ref(props.formData);
|
|
const options = ref([]);
|
|
/**
|
|
* 提交表单函数
|
|
*/
|
|
const submitForm = () => {
|
|
// 调用表单引用上的validate方法进行表单验证
|
|
definitionRef.value.validate((valid) => {
|
|
if (valid) {
|
|
// 验证成功,触发'submit'事件并传递表单数据
|
|
fromModel.value.statusEnum = Number(fromModel.value.statusEnum);
|
|
// fromModel.value.statusEnum = "active"
|
|
emit("submit", fromModel.value);
|
|
} else {
|
|
// 验证失败,显示错误消息
|
|
ElMessage.warning("请确认后再提交");
|
|
return false;
|
|
}
|
|
});
|
|
};
|
|
|
|
/**
|
|
* 取消操作的函数
|
|
*/
|
|
const cancel = () => {
|
|
emit("update:open", false);
|
|
};
|
|
|
|
watch(
|
|
() => props.open,
|
|
(newVal) => {
|
|
localOpen.value = newVal;
|
|
fromModel.value = JSON.parse(JSON.stringify(props.formData));;
|
|
options.value = props.statusOptions
|
|
if (!newVal) {
|
|
// 如果对话框关闭,重置表单
|
|
definitionRef.value.resetFields();
|
|
}
|
|
}
|
|
);
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
:deep(.el-input-number .el-input__inner){
|
|
-webkit-appearance: none;
|
|
-moz-appearance: textfield;
|
|
text-align: left;
|
|
line-height: 1;
|
|
}
|
|
</style> |