Files
his/backup/vxetable-migration-20260602/medicationmanagement/statisticalManagement/basicInformationDetails.vue
华佗 1d21661a78 feat: Spring Boot 3.5.14 全量升级 + 组件升级
核心升级:
- 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端点正常
2026-06-04 22:39:49 +08:00

266 lines
6.6 KiB
Vue
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<el-form
ref="queryRef"
:model="queryParams"
:inline="true"
label-width="100px"
>
<el-form-item
label="药品类别:"
prop="itemTypeCode"
>
<el-select
v-model="queryParams.itemTypeCode"
multiple
clearable
style="width: 200px"
>
<el-option
v-for="category in itemList"
:key="category.value"
:label="category.label"
:value="category.value"
/>
</el-select>
</el-form-item>
<el-form-item label="选择年份:">
<el-date-picker
v-model="queryParams.occurrenceTime"
type="year"
value-format="YYYY"
placeholder="选择日期"
style="width: 200px"
/>
</el-form-item>
</el-form>
<el-row
:gutter="10"
style="margin-left: 20px; margin-right: 0px; margin-bottom: 5px"
>
<el-col :span="1.5">
<!-- v-hasPermi="['system:user:import']" -->
<el-button
type="primary"
plain
icon="Search"
@click="handleQuery"
>
查询
</el-button>
</el-col>
<el-col :span="1.5">
<!-- v-hasPermi="['system:user:export']" -->
<el-button
type="warning"
plain
icon="CircleClose"
@click="handleClear"
>
重置
</el-button>
</el-col>
<el-col :span="1.5">
<!-- v-hasPermi="['system:user:export']" -->
<el-button
type="warning"
plain
icon="Download"
@click="handleExport"
>
导出
</el-button>
</el-col>
</el-row>
<el-table
v-loading="loading"
:data="basicInformationDetailsList"
height="calc(100vh - 300px)"
@selection-change="handleSelectionChange"
>
<el-table-column
type="selection"
width="50"
align="center"
/>
<el-table-column
key="no"
label="序号"
align="center"
prop="no"
width="200"
:show-overflow-tooltip="true"
/>
<el-table-column
key="dataReportingDate"
label="数据上报日期"
align="center"
prop="dataReportingDate"
width="200"
:show-overflow-tooltip="true"
>
<template #default="scope">
<span>{{ parseTime(scope.row.occurrenceTime) }}</span>
</template>
</el-table-column>
<!-- itemTable -->
<el-table-column
key="provinceCodes"
label="省级行政区划代码"
align="center"
prop="provinceCodes"
width="200"
:show-overflow-tooltip="true"
/>
<el-table-column
key="organizationCode"
label="组织机构代码"
align="center"
prop="organizationCode"
width="200"
:show-overflow-tooltip="true"
/>
<el-table-column
key="medicalCode"
label="医疗机构代码"
align="center"
prop="medicalCode"
width="200"
:show-overflow-tooltip="true"
/>
<el-table-column
key="organizationName"
label="组织机构名称"
align="center"
prop="organizationName"
width="200"
:show-overflow-tooltip="true"
/>
<el-table-column
key="yearMedicineTotalRevenue"
label="年度药品总收入(元)"
align="center"
prop="yearMedicineTotalRevenue"
:show-overflow-tooltip="true"
/>
<el-table-column
key="actualBedsNo"
label="实有床位数"
align="center"
prop="actualBedsNo"
:show-overflow-tooltip="true"
/>
</el-table>
<pagination
v-show="total > 0"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
:total="total"
@pagination="getList"
/>
</div>
</template>
<script setup name="basicInformationDetails">
import {ElMessage} from 'element-plus';
import {getReportBasicInformationDetails,} from './statisticalManagent';
import {onMounted} from 'vue';
const basicInformationDetailsList = ref([]);
const loading = ref(false);
const ids = ref([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const approvalTime = ref([]);
const supplierListOptions = ref([]);
const locationIdList = ref([]);
const occurrenceTime = ref([]);
const data = reactive({
form: {},
queryParams: {
pageNo: 1,
pageSize: 10,
searchKey: undefined,
occurrenceTimeSTime: undefined,
occurrenceTimeETime: undefined,
occurrenceTime,
itemTypeCode:[]
},
rules: {},
});
const { queryParams, form, rules } = toRefs(data);
const { proxy } = getCurrentInstance();
const { fin_type_code } = proxy.useDict(
'fin_type_code'
);
const itemList = ref([])
watch(
() => fin_type_code.value, // 监听 fin_type_code 的值变化
(newDict) => {
// 确保 newDict 是数组(避免初始值为 undefined
if (Array.isArray(newDict) && newDict.length > 0) {
itemList.value = newDict.filter(item =>
item.label === "西药" || item.label === "中成药" || item.label === "中草药"|| item.label === "外购药品"
);
}
},
{ immediate: true } // 组件挂载时立即执行一次(处理字典已缓存的情况)
);
onMounted(() => {
console.log("fin_type_code:",fin_type_code);
})
function getList() {
loading.value = true;
getReportBasicInformationDetails(queryParams.value).then((res) => {
loading.value = false;
basicInformationDetailsList.value = res.data
});
}
// getList();
/** 搜索按钮操作 */
function handleQuery() {
if(!queryParams.value.itemTypeCode?.length){
ElMessage.warning("请选择药品类型")
}else if(queryParams.value.occurrenceTime == null){
ElMessage.warning("请选择时间")
}else {
queryParams.value.occurrenceTime = occurrenceTime.value;
// queryParams.value.searchKey = row.
queryParams.value.pageNo = 1;
getList();
}
}
function handleClear() {
// 清空查询条件
queryParams.value.occurrenceTime = '';
proxy.resetForm('queryRef');
getList();
}
// 导出
function handleExport() {
proxy.downloadGet(
'/report-manage/report/excel-out/1',
{
...queryParams.value,
},
`年度药品总收入_${proxy.formatDateStr(new Date(), 'YYYY-MM-DD')}.xlsx`
);
}
</script>
<style scoped>
.custom-tree-node {
display: flex;
align-items: center;
}
.title {
font-weight: bold;
font-size: large;
margin-bottom: 10px;
}
</style>