供应商画面调整 up by dh

This commit is contained in:
duhe
2025-03-25 17:25:30 +08:00
parent 9f3884b414
commit facbd89b40
11 changed files with 236 additions and 109 deletions

View File

@@ -35,11 +35,12 @@ public interface ISupplierManagementAppService {
*
* @param supplierSearchParam 查询条件
* @param searchKey 查询条件-模糊查询
* @param typeEnum 查询条件
* @param pageNo 查询条件
* @param pageSize 查询条件
* @return 厂商/产地查询结果
*/
R<?> getSupplierList(SupplierSearchParam supplierSearchParam, String searchKey, Integer pageNo, Integer pageSize,
R<?> getSupplierList(SupplierSearchParam supplierSearchParam, String searchKey,Integer typeEnum, Integer pageNo, Integer pageSize,
HttpServletRequest request);
/**

View File

@@ -12,12 +12,16 @@ import java.util.stream.Stream;
import javax.servlet.http.HttpServletRequest;
import com.alibaba.druid.sql.visitor.functions.Isnull;
import com.core.common.utils.ChineseConvertUtils;
import com.core.common.utils.StringUtils;
import com.openhis.administration.domain.Supplier;
import com.openhis.administration.mapper.SupplierMapper;
import com.openhis.administration.service.ISupplierService;
import com.openhis.common.enums.AccountStatus;
import com.openhis.common.enums.SupplierType;
import com.openhis.common.enums.SupplyStatus;
import com.openhis.common.enums.SupplyType;
import com.openhis.common.utils.EnumUtils;
import com.openhis.web.datadictionary.appservice.ISupplierManagementAppService;
import com.openhis.web.datadictionary.dto.SupplierDto;
@@ -73,27 +77,33 @@ public class SupplierManagementAppServiceImpl implements ISupplierManagementAppS
*
* @param supplierSearchParam 查询条件
* @param searchKey 查询条件-模糊查询
* @param typeEnum 查询条件
* @param pageNo 查询条件
* @param pageSize 查询条件
* @return 厂商/产地查询结果
*/
@Override
public R<?> getSupplierList(SupplierSearchParam supplierSearchParam,
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
public R<?> getSupplierList(SupplierSearchParam supplierSearchParam, String searchKey,
Integer typeEnum, Integer pageNo, Integer pageSize, HttpServletRequest request) {
// 构建查询条件
QueryWrapper<Supplier> queryWrapper = HisQueryUtils.buildQueryWrapper(supplierSearchParam, searchKey,
new HashSet<>(Arrays.asList("bus_no", "name", "py_str", "wb_str")), request);
if(StringUtils.isNotNull(typeEnum)){
queryWrapper.eq("type_enum",typeEnum);
}
// 设置排序
queryWrapper.orderByAsc("bus_no");
// 分页查询
Page<SupplierDto> supplierPage =
HisPageUtils.selectPage(supplierMapper, queryWrapper, pageNo, pageSize, SupplierDto.class);
// 枚举类回显赋值
supplierPage.getRecords()
.forEach(e -> e.setActiveFlag_enumText(EnumUtils.getInfoByValue(AccountStatus.class, e.getActiveFlag())));
supplierPage.getRecords().forEach(e -> {
e.setActiveFlag_enumText(EnumUtils.getInfoByValue(AccountStatus.class, e.getActiveFlag()));
// 厂商类型
e.setTypeEnum_enumText(EnumUtils.getInfoByValue(SupplierType.class, e.getTypeEnum()));
});
// 返回【病种目录列表DTO】分页
return R.ok(supplierPage);
}
@@ -104,7 +114,7 @@ public class SupplierManagementAppServiceImpl implements ISupplierManagementAppS
* @param supplierUpDto 供应商信息
*/
@Override
public R<?> addSupplyRequest(@Validated @RequestBody SupplierUpDto supplierUpDto) {
public R<?> addSupplyRequest(SupplierUpDto supplierUpDto) {
Supplier supplierInfo = new Supplier();
BeanUtils.copyProperties(supplierUpDto, supplierInfo);
@@ -123,7 +133,7 @@ public class SupplierManagementAppServiceImpl implements ISupplierManagementAppS
* @param supplierUpDto 供应商信息
*/
@Override
public R<?> editSupplyRequest(@Validated @RequestBody SupplierUpDto supplierUpDto) {
public R<?> editSupplyRequest(SupplierUpDto supplierUpDto) {
Supplier supplier = new Supplier();
BeanUtils.copyProperties(supplierUpDto, supplier);

View File

@@ -46,6 +46,7 @@ public class SupplierManagementController {
*
* @param supplierSearchParam 查询条件
* @param searchKey 查询条件-模糊查询
* @param typeEnum 查询条件
* @param pageNo 查询条件
* @param pageSize 查询条件
* @return 厂商/产地查询结果
@@ -53,11 +54,12 @@ public class SupplierManagementController {
@GetMapping(value = "/get-supplier-list")
public R<?> getSupplierList(SupplierSearchParam supplierSearchParam,
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
@RequestParam(value = "typeEnum", defaultValue = "") Integer typeEnum,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
// 返回分页
return supplierManagementAppService.getSupplierList(supplierSearchParam, searchKey, pageNo, pageSize, request);
return supplierManagementAppService.getSupplierList(supplierSearchParam, searchKey,typeEnum, pageNo, pageSize, request);
}
/**

View File

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -35,6 +36,7 @@ public class SupplierDto {
/** 类型 */
private Integer typeEnum;
private String typeEnum_enumText;
/** 地址 */
private String address;
@@ -57,5 +59,7 @@ public class SupplierDto {
/** 机构编号 */
@JsonSerialize(using = ToStringSerializer.class)
@Dict(dictTable = "adm_organization",dictCode = "id",dictText = "name")
private Long orgId;
private String orgId_dictText;
}

View File

@@ -6,7 +6,7 @@ import lombok.Getter;
@Getter
@AllArgsConstructor
public enum SupplierType {
public enum SupplierType implements HisEnumInterface {
DRAFT(1, "1", "生产商"),
ACTIVE(2, "2", "供应商");

View File

@@ -70,3 +70,12 @@ export function getSupplierInit() {
method: 'get'
})
}
// 查询部门树结构
export function deptTreeSelect(queryParams) {
return request({
url: '/base-data-manage/organization/organization',
method: 'get',
param: queryParams
})
}

View File

@@ -7,27 +7,18 @@
v-show="showSearch"
label-width="90px"
>
<el-form-item label="厂家编码:" prop="busNo">
<el-input
v-model="queryParams.busNo"
placeholder="厂家编码"
clearable
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="厂家名称:" prop="searchKey">
<el-input
v-model="queryParams.searchKey"
placeholder="厂家名称"
placeholder="品名/商品名/英文品名/编码/拼音"
clearable
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="厂商种类:" prop="status">
<el-form-item label="厂商种类:" prop="typeEnum">
<el-select
v-model="queryParams.status"
v-model="queryParams.typeEnum"
placeholder="生产商/供应商"
clearable
style="width: 240px"
@@ -121,8 +112,8 @@
<el-table-column
label="类型 "
align="center"
key="typeEnum"
prop="typeEnum"
key="typeEnum_enumText"
prop="typeEnum_enumText"
:show-overflow-tooltip="true"
/>
<el-table-column
@@ -153,10 +144,10 @@
width="160"
/>
<el-table-column
label="机构编号"
label="机构"
align="center"
key="orgId"
prop="orgId"
key="orgId_dictText"
prop="orgId_dictText"
width="160"
/>
<el-table-column
@@ -236,7 +227,20 @@
<el-row>
<el-col :span="12">
<el-form-item label="类型" prop="typeEnum">
<el-input v-model="form.typeEnum" maxlength="11" />
<!-- <el-input v-model="form.typeEnum" maxlength="11" /> -->
<el-select
v-model="form.typeEnum"
placeholder="生产商/供应商"
clearable
style="width: 240px"
>
<el-option
v-for="dict in supplierTypeOptions"
:key="dict.value"
:label="dict.info"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -260,12 +264,22 @@
<el-row>
<el-col :span="12">
<el-form-item label="活动标识" prop="activeFlag">
<el-input v-model="form.activeFlag" maxlength="11" />
<el-checkbox v-model="form.activeFlag"></el-checkbox>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="机构编号" prop="orgId">
<el-input v-model="form.orgId" maxlength="11" />
<!-- <el-form-item label="机构编号" prop="orgId"> -->
<!-- <el-input v-model="form.orgId" maxlength="11" /> -->
<el-form-item label="提供部门" prop="orgId">
<el-tree-select
v-model="form.orgId"
:data="deptOptions"
:props="{ value: 'id', label: 'name', children: 'children' }"
value-key="id"
placeholder="请选择提供部门"
check-strictly
/>
<!-- </el-form-item> -->
</el-form-item>
</el-col>
</el-row>
@@ -289,6 +303,7 @@ import {
stopSupplier,
startSupplier,
getSupplierInit,
deptTreeSelect,
} from "./components/supplier";
const router = useRouter();
@@ -308,6 +323,7 @@ const multiple = ref(true);
const total = ref(0);
const title = ref("");
const supplierTypeOptions = ref(undefined);
const deptOptions = ref(undefined); // 部门树选项
// 是否停用
const statusFlagOptions = ref(undefined);
// const initPassword = ref(undefined);
@@ -320,9 +336,9 @@ const data = reactive({
pageNo: 1,
pageSize: 10,
searchKey: undefined, // 供应商名称
busNo: undefined, // 编码
statusEnum: undefined, // 状态(包括 1预置2启用3停用
sourceEnum: undefined, // 来源(包括 1厂商/产地目录分类2自定义
// busNo: undefined, // 编码
typeEnum: undefined, // 状态(包括 1预置2启用3停用
// sourceEnum: undefined, // 来源(包括 1厂商/产地目录分类2自定义
},
rules: {
busNo: [{ required: true, message: "编码不能为空", trigger: "blur" }],
@@ -349,6 +365,16 @@ function getsupplierTypeList() {
});
}
/** 查询部门下拉树结构 */
function getDeptTree() {
console.log("查询部门下拉树结构");
deptTreeSelect().then((response) => {
console.log(response, "response查询部门下拉树结构");
deptOptions.value = response.data.records;
console.log(deptOptions.value, "部门下拉树结构");
});
}
/** 查询厂商/产地目录列表 */
function getList() {
loading.value = true;
@@ -356,7 +382,7 @@ function getList() {
console.log(queryParams.value, "queryParams.value");
getSupplierList(queryParams.value).then((res) => {
loading.value = false;
console.log(res, "res",res.data.records);
console.log(res, "res", res.data.records);
supplierList.value = res.data.records;
console.log(supplierList.value, "supplierList.value");
total.value = res.data.total;
@@ -458,6 +484,8 @@ function handleUpdate(row) {
reset();
console.log(row, "row");
form.value = JSON.parse(JSON.stringify(row));
form.value.activeFlag == 1 ? (form.value.activeFlag = true) : (form.value.activeFlag = false); //是否为活性
// console.log(form.value.ty, "form.value");
open.value = true;
title.value = "厂商/产地编辑";
}
@@ -465,6 +493,7 @@ function handleUpdate(row) {
function submitForm() {
proxy.$refs["supplierRef"].validate((valid) => {
if (valid) {
form.activeFlag == true ? (form.activeFlag = 1) : (form.activeFlag = 0); //是否为活性
if (form.value.id != undefined) {
console.log(form.value, "editSupplier", form.value.statusEnum);
editSupplier(form.value).then((response) => {
@@ -495,6 +524,7 @@ function handleView(row) {
}
getsupplierTypeList();
getList();
getDeptTree();
</script>
<style scoped>
.custom-tree-node {

View File

@@ -381,7 +381,7 @@
style="width: 240px"
>
<el-option
v-for="dict in med_chrgitm_type"
v-for="dict in yb_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
@@ -449,13 +449,15 @@ const {
specialty_code,
med_chrgitm_type,
financial_type_code,
yb_type
} = proxy.useDict(
"adm_location",
"category_code",
"service_type_code",
"specialty_code",
"med_chrgitm_type",
"financial_type_code"
"financial_type_code",
"yb_type"
);
const registrationfeeList = ref([]);

View File

@@ -59,10 +59,7 @@
/>
</el-form-item>
<el-form-item label="是否停用" prop="statusEnum">
<el-select
v-model="queryParams.statusEnum"
style="width: 240px"
>
<el-select v-model="queryParams.statusEnum" style="width: 240px">
<el-option
v-for="status in statusFlagOptions"
:key="status.value"
@@ -269,6 +266,54 @@
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="医保编码" prop="ybNo">
<el-input v-model="form.ybNo" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="医保标记" prop="ybFlag">
<!-- <el-input v-model="form.ybFlag" placeholder="" /> -->
<el-checkbox v-model="form.ybFlag"></el-checkbox>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="类型" prop="ybNo">
<el-select v-model="form.statusEnum" placeholder="请选择">
<el-option
v-for="dict in statusFlagOptions"
:key="dict.value"
:label="dict.info"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="医保标记" prop="ybFlag">
<el-select v-model="form.statusEnum" placeholder="请选择">
<el-option
v-for="dict in statusFlagOptions"
:key="dict.value"
:label="dict.info"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item
label="医保对码标记"
prop="ybMatchFlag"
label-width="100"
>
<el-checkbox v-model="form.ybMatchFlag"></el-checkbox>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="拼音" prop="pyStr">
<el-input v-model="form.pyStr" maxlength="11" />
@@ -280,6 +325,18 @@
</el-form-item>
</el-col> -->
</el-row>
<el-row :gutter="24">
<el-col :span="16">
<el-form-item label="说明" prop="description">
<el-input
v-model="form.description"
:autosize="{ minRows: 4, maxRows: 10 }"
type="textarea"
placeholder=""
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<div class="dialog-footer">
@@ -299,7 +356,7 @@ import {
getDiseaseCategory,
getDiseaseOne,
stopDisease,
startDisease
startDisease,
} from "./components/disease";
const router = useRouter();
@@ -319,6 +376,7 @@ const multiple = ref(true);
const total = ref(0);
const title = ref("");
const conditionDefinitionOptions = ref(undefined);
const conditionDefinition = ref(undefined);
// 是否停用
const statusFlagOptions = ref(undefined);
// const initPassword = ref(undefined);
@@ -339,6 +397,15 @@ const data = reactive({
conditionCode: [
{ required: true, message: "编码不能为空", trigger: "blur" },
],
// typeCode: [
// { required: true, message: "编码不能为空", trigger: "blur" },
// ],
// description: [
// { required: true, message: "编码不能为空", trigger: "blur" },
// ],
// conditionCode: [
// { required: true, message: "编码不能为空", trigger: "blur" },
// ],
},
});
@@ -359,7 +426,6 @@ function getDiseaseCategoryList() {
console.log(response, "response病种目录分类查询下拉树结构");
conditionDefinitionOptions.value = response.data.diseaseCategoryList;
statusFlagOptions.value = response.data.statusFlagOptions;
});
}
/** 查询病种目录列表 */
@@ -378,6 +444,7 @@ function getList() {
/** 节点单击事件 */
function handleNodeClick(data) {
queryParams.value.sourceEnum = data.value;
conditionDefinition.value = data.value;
handleQuery();
}
/** 搜索按钮操作 */
@@ -447,7 +514,7 @@ function handleExport() {
function handleSelectionChange(selection) {
console.log(selection, "selection");
// selectedData.value = selection.map((item) => ({ ...item })); // 存储选择的行数据
ids.value = selection.map(item => item.id);
ids.value = selection.map((item) => item.id);
single.value = selection.length != 1;
multiple.value = !selection.length;
}
@@ -468,6 +535,12 @@ function reset() {
pyStr: undefined,
status: undefined,
statusEnum: undefined,
sourceEnum: undefined,
typeCode: undefined,
description: undefined,
ybFlag: undefined,
ybNo: undefined,
ybMatchFlag: undefined,
};
proxy.resetForm("diseaseRef");
}
@@ -478,6 +551,9 @@ function cancel() {
}
/** 新增按钮操作 */
function handleAdd() {
if (conditionDefinition.value === undefined) {
return proxy.$modal.msgError("请选择病种目录分类");
}
reset();
open.value = true;
title.value = "新增";
@@ -487,6 +563,12 @@ function handleUpdate(row) {
reset();
console.log(row, "row");
form.value = JSON.parse(JSON.stringify(row));
form.value.ybFlag == 1
? (form.value.ybFlag = true)
: (form.value.ybFlag = false);
form.value.ybMatchFlag == 1
? (form.value.ybMatchFlag = true)
: (form.value.ybMatchFlag = false);
open.value = true;
title.value = "病种编辑";
}
@@ -494,6 +576,11 @@ function handleUpdate(row) {
function submitForm() {
proxy.$refs["diseaseRef"].validate((valid) => {
if (valid) {
form.value.sourceEnum = conditionDefinition.value;
form.value.ybFlag ? (form.value.ybFlag = 1) : (form.value.ybFlag = 0);
form.value.ybMatchFlag
? (form.value.ybMatchFlag = 1)
: (form.value.ybMatchFlag = 0);
if (form.value.id != undefined) {
// form.value.status
// ? (form.value.statusEnum = "3")

View File

@@ -51,10 +51,7 @@
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="通用名称" prop="name">
<el-input
v-model="form.name"
placeholder=""
/>
<el-input v-model="form.name" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="6">
@@ -125,7 +122,7 @@
:disabled="form.id != undefined"
>
<el-option
v-for="category in medicine_category"
v-for="category in fin_type_code"
:key="category.value"
:label="category.label"
:value="category.value"
@@ -173,7 +170,7 @@
:disabled="form.id != undefined"
>
<el-option
v-for="category in medicine_unit"
v-for="category in unit_code"
:key="category.value"
:label="category.label"
:value="category.value"
@@ -209,7 +206,7 @@
:disabled="form.id != undefined"
>
<el-option
v-for="category in medicine_unit"
v-for="category in unit_code"
:key="category.value"
:label="category.label"
:value="category.value"
@@ -241,7 +238,7 @@
:disabled="form.id != undefined"
>
<el-option
v-for="category in medicine_unit"
v-for="category in unit_code"
:key="category.value"
:label="category.label"
:value="category.value"
@@ -259,7 +256,7 @@
:disabled="form.id != undefined"
>
<el-option
v-for="category in medicine_unit"
v-for="category in unit_code"
:key="category.value"
:label="category.label"
:value="category.value"
@@ -425,6 +422,23 @@
<el-input v-model="form.partPercent" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="医保类别" prop="ybType">
<el-select
v-model="form.ybType"
placeholder="医保类别"
clearable
style="width: 240px"
>
<el-option
v-for="dict in yb_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="6">
@@ -653,28 +667,30 @@ const {
medicine_category,
system_categories,
medicine_properties,
medicine_unit,
unit_code,
medicine_formulation,
medical_insurance_types,
yb_type,
medicine_default_usage,
medicine_default_frequency,
medicine_basic_flag,
sys_normal_disable,
rate_code,
method_code,
fin_type_code
} = proxy.useDict(
"medicine_category",
"system_categories",
"medicine_properties",
"medicine_unit",
"unit_code",
"medicine_formulation",
"medical_insurance_types",
"yb_type",
"medicine_default_usage",
"medicine_default_frequency",
"medicine_basic_flag",
"sys_normal_disable",
"rate_code",
"method_code"
"method_code",
"fin_type_code"
);
const title = ref("");

View File

@@ -36,7 +36,7 @@
label-width="68px"
>
<el-row :gutter="24">
<el-col :span="6">
<el-col :span="5">
<el-form-item label="药品" prop="searchKey" label-width="40">
<el-input
v-model="queryParams.searchKey"
@@ -47,70 +47,34 @@
/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-col :span="5">
<el-form-item
label="是否系统预置"
prop="status"
label="状态"
prop="statusEnum"
label-width="100"
>
<el-select v-model="queryParams.statusEnum" clearable>
<el-option
v-for="dict in sys_normal_disable"
:key="dict.value"
:label="dict.label"
:value="dict.value"
v-for="status in statusFlagOptions"
:key="status.value"
:label="status.info"
:value="status.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item
label="医保是否对码"
prop="status"
label-width="100"
>
<el-form-item label="医保对码" prop="ybMatchFlag" label-width="80">
<el-select
v-model="queryParams.ybMatchFlag"
placeholder=""
clearable
>
<el-option
v-for="dict in sys_normal_disable"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :span="4">
<el-form-item label="已发生业务" prop="status" label-width="100">
<el-select
v-model="queryParams.status"
placeholder="用户状态"
clearable
>
<el-option
v-for="dict in sys_normal_disable"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col> -->
<el-col :span="4">
<el-form-item label="医保等级" prop="status" label-width="80">
<el-select
v-model="queryParams.status"
placeholder="用户状态"
clearable
>
<el-option
v-for="dict in sys_normal_disable"
:key="dict.value"
:label="dict.label"
:value="dict.value"
v-for="domainEnum in domainEnumOptions"
:key="domainEnum.value"
:label="domainEnum.info"
:value="domainEnum.value"
/>
</el-select>
</el-form-item>
@@ -630,6 +594,7 @@ const title = ref("");
const medicationOptions = ref(undefined);
const statusFlagOptions = ref(undefined);
const domainEnumOptions = ref(undefined);
const supplierListOptions = ref(undefined);
// 使用 ref 定义当前药品数据
const currentData = ref({});
// 使用 ref 定义当前查看药品数据
@@ -671,9 +636,10 @@ const filterNode = (value, data) => {
function getMedicationCategoryList() {
getMedicationCategory().then((response) => {
console.log(response, "response药品目录分类查询下拉树结构");
medicationOptions.value = response.data.medicationOptions;
medicationOptions.value = response.data.medicationListOptions;
statusFlagOptions.value = response.data.statusFlagOptions;
domainEnumOptions.value = response.data.domainFlagOptions;
supplierListOptions.value = response.data.supplierListOptions;
});
}
/** 查询病种目录列表 */