Compare commits

...

4 Commits

11 changed files with 187 additions and 46 deletions

View File

@ -17,15 +17,22 @@ export enum apiConfig{
* *
*/ */
"OrganizationMemberSave"="organization/member/save",//添加 编辑成员信息 "OrganizationMemberSave"="organization/member/save",//添加 编辑成员信息
"organizationMemberSearch"="organization/member/search",//搜索成员 "OrganizationMemberSearch"="organization/member/search",//搜索成员
"OrganizationSectionAllList"="organization/section/allList",//获取所有科室列表 "OrganizationSectionAllList"="organization/section/allList",//获取所有科室列表
"OrganizationSectionListByMemberId"="organization/section/listByMemberId",//获取当前成员所属科室列表 "OrganizationSectionListByMemberId"="organization/section/listByMemberId",//获取当前成员所属科室列表
"OrganizationMemberListBySectionId"="organization/member/listBySectionId",//获取当前科室的所有医生列表 "OrganizationMemberListBySectionId"="organization/member/listBySectionId",//获取当前科室的所有医生列表
/**
*
*/
"GoodsDisableSale"="goods/goods/disableSale",
"GoodsEnableSale"="goods/goods/enableSale",
/** /**
* *
*/ */
"ChargeListChargeLog"="charge/listChargeLog",//查询收费记录 "ChargeListChargeLog"="charge/listChargeLog",//查询收费记录
"recordGetChargeQueue"="medical/record/getChargeQueue"//查询收费记录 "RecordGetChargeQueue"="medical/record/getChargeQueue"//查询收费记录
} }

View File

@ -108,7 +108,7 @@ const init = async () => {
query.value.endTime = getEndOfDay(selectedDate.value) query.value.endTime = getEndOfDay(selectedDate.value)
loading.value = true loading.value = true
try { try {
let data: any = await post(apiConfig.recordGetChargeQueue, {query: query.value}, {catch_error: true}) let data: any = await post(apiConfig.RecordGetChargeQueue, {query: query.value}, {catch_error: true})
ChargeQueueList.value = data.list ChargeQueueList.value = data.list
} }
catch { catch {

View File

@ -216,7 +216,6 @@ const getUserInfo = () => {
const detail = (id: any) => { const detail = (id: any) => {
isShow.value = true isShow.value = true
post("inventory/apply/getApplyDetail", {id}).then((res: any) => { post("inventory/apply/getApplyDetail", {id}).then((res: any) => {
formData.value = res.useInfo;
tableList.value = JSON.parse(res); tableList.value = JSON.parse(res);
}) })
} }

View File

@ -123,6 +123,11 @@ const saveDo = async () => {
} }
const init = () => {
isShow.value = true
getCateList()
}
defineExpose({init})
const save = () => { const save = () => {
saveDo() saveDo()
close() close()

View File

@ -21,6 +21,11 @@
<el-input v-model="edit_data.name"/> <el-input v-model="edit_data.name"/>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="通用名">
<el-form-item label="" prop="commonName" class="form-item">
<el-input v-model="edit_data.commonName"/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="类型" style="display: flex"> <el-descriptions-item label="类型" style="display: flex">
<el-form-item label="" prop="cateId" class="form-item"> <el-form-item label="" prop="cateId" class="form-item">
<el-select v-model="edit_data.cateId" placeholder="请选择" style="width: 70%"> <el-select v-model="edit_data.cateId" placeholder="请选择" style="width: 70%">
@ -31,7 +36,7 @@
:value="item.id"> :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
<el-button @click="showCateEdit(true)"> <el-button @click="showCateEdit">
<el-icon> <el-icon>
<Setting/> <Setting/>
</el-icon> </el-icon>
@ -54,6 +59,25 @@
/> />
</el-select> </el-select>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="效期预警(天)">
<el-form-item lable="" prop="expiryWarnDays" class="form-item">
<el-input-number v-model="edit_data.expiryWarnDays" class="input" style="width: 100%;" :min="0">
</el-input-number>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="库存预警">
<el-form-item lable="" prop="inventoryWarnNumber" class="form-item">
<el-input-number v-model="edit_data.inventoryWarnNumber" class="input" style="width: 100%;"
:min="0">
</el-input-number>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="批准文号" v-if="_type==1301">
<el-form-item lable="" prop="approvalCode" class="form-item">
<el-input v-model="edit_data.approvalCode" class="input">
</el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="批准文号" v-if="_type==1301"> <el-descriptions-item label="批准文号" v-if="_type==1301">
<el-form-item lable="" prop="approvalCode" class="form-item"> <el-form-item lable="" prop="approvalCode" class="form-item">
<el-input v-model="edit_data.approvalCode" class="input"> <el-input v-model="edit_data.approvalCode" class="input">
@ -275,8 +299,20 @@
/> />
</el-select> </el-select>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="精麻毒放" v-if="_type==1301"> <el-descriptions-item label="精麻毒放|麻黄碱" v-if="_type==1301">
<el-input v-model="edit_data.extra.JMDF"></el-input> <el-select
v-model="edit_data.extra.JMDF"
placeholder="选择精麻毒放|麻黄碱"
clearable
style="width: 240px"
>
<el-option
v-for="item in JMDFList"
:key="item.label"
:label="item.label"
:value="item.label"
/>
</el-select>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="抗菌药物" v-if="_type==1301"> <el-descriptions-item label="抗菌药物" v-if="_type==1301">
<el-input v-model="edit_data.extra.isAntibacterialAgents"></el-input> <el-input v-model="edit_data.extra.isAntibacterialAgents"></el-input>
@ -354,6 +390,8 @@
<template #footer> <template #footer>
<div class="footer"> <div class="footer">
<el-button @click="returnInit" type="primary" v-if="edit_data.id != null">医保库存重新初始化</el-button> <el-button @click="returnInit" type="primary" v-if="edit_data.id != null">医保库存重新初始化</el-button>
<el-button v-if="edit_data.saleStatus" type="danger" @click="disableSale">停售</el-button>
<el-button v-else type="danger" @click="enableSale">起售</el-button>
<el-button @click="save" type="primary">保存</el-button> <el-button @click="save" type="primary">保存</el-button>
<el-button @click="exit" plain>关闭</el-button> <el-button @click="exit" plain>关闭</el-button>
</div> </div>
@ -362,12 +400,13 @@
<!-- 新增关闭按钮 --> <!-- 新增关闭按钮 -->
<Search ref="createSearchRef" @confirm="createConfirm"/> <Search ref="createSearchRef" @confirm="createConfirm"/>
<Search ref="contrastCodeSearch" @confirm="contrastCodeConfirm"/> <Search ref="contrastCodeSearch" @confirm="contrastCodeConfirm"/>
<Cate :type="_type" @close="cateCloseCallBack"/> <Cate :type="_type" @close="cateCloseCallBack" ref="cateRef" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {nextTick, ref, watch} from "vue"; import {nextTick, ref, watch} from "vue";
import {dosageUnitList, packagingUnit} from "@/utils/unitList.ts" import {dosageUnitList, packagingUnit} from "@/utils/unitList.ts"
import {Setting,Close} from "@element-plus/icons-vue";
import Mask from "@/components/common/Mask.vue"; import Mask from "@/components/common/Mask.vue";
import Search from "@/components/inventory/goods/Search.vue"; import Search from "@/components/inventory/goods/Search.vue";
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
@ -376,11 +415,11 @@ import {ElMessage, ElMessageBox} from "element-plus";
import Divider from "@/components/Divider.vue"; import Divider from "@/components/Divider.vue";
import UnitSelector from "@/components/inventory/UnitSelector.vue"; import UnitSelector from "@/components/inventory/UnitSelector.vue";
import SocialInfo from "@/components/inventory/goods/SocialInfo.vue"; import SocialInfo from "@/components/inventory/goods/SocialInfo.vue";
import {apiConfig} from "@/assets/config/apiConfig.ts";
let _type = ref(0); let _type = ref(0);
let type = ref(0); let type = ref(0);
let show_cate = ref(false)
const isShow = ref<any>(false) const isShow = ref<any>(false)
const imported = [{ const imported = [{
label: '进口', label: '进口',
@ -394,6 +433,26 @@ const pricingModelOptions = [
value: 0, value: 0,
} }
] ]
const JMDFList = [
{
label: '精I',
},
{
label: '精II',
},
{
label: '麻',
},
{
label: '毒',
},
{
label: '放',
},
{
label: '麻黄碱',
}
]
const maintainOptions = [ const maintainOptions = [
{ {
label: '一般养护', label: '一般养护',
@ -432,7 +491,14 @@ const storageConditionsOptions =
} }
] ]
const emit = defineEmits(['close']) const emit = defineEmits(['close'])
let edit_data: any = ref({trdnFlag: false, extra: {}, minPackagingUnit: "只", packagingUnit: "盒", pricingModel: 0}); let edit_data: any = ref({
trdnFlag: false,
extra: {},
minPackagingUnit: "只",
packagingUnit: "盒",
pricingModel: 0,
expiryWarnDays: 0,
});
const idCode = ref(""); const idCode = ref("");
const showPopover = ref(false); const showPopover = ref(false);
const idCodeList = ref<string[]>([]); const idCodeList = ref<string[]>([]);
@ -533,11 +599,11 @@ const getCateList = () => {
cate_list.value = res cate_list.value = res
}) })
} }
const showCateEdit = (is_show: boolean) => { const cateRef = ref()
show_cate.value = is_show const showCateEdit = () => {
cateRef.value.init(cate_list.value)
} }
const cateCloseCallBack = () => { const cateCloseCallBack = () => {
show_cate.value = false
getCateList() getCateList()
} }
let exit = () => { let exit = () => {
@ -629,6 +695,37 @@ const drugCategoryOptions = [
value: 1304 value: 1304
} }
] ]
const disableSale = () => {
ElMessageBox.confirm(
`确定要下架该商品吗?`,
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
post(apiConfig.GoodsDisableSale, {id: edit_data.value.id}).then((res: any) => {
ElMessage.success("下架成功")
exit()
})
})
}
const enableSale = () => {
ElMessageBox.confirm(
`确定要起售该商品吗?`,
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
post(apiConfig.GoodsEnableSale, {id: edit_data.value.id}).then((res: any) => {
ElMessage.success("启用成功")
exit()
})
})
}
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.header { .header {

View File

@ -18,8 +18,8 @@
highlight-current-row @current-change="change_current_search_data_index" highlight-current-row @current-change="change_current_search_data_index"
:row-class-name="tableRowClassName"> :row-class-name="tableRowClassName">
<el-table-column prop="name" label="名称" fixed width="180" show-overflow-tooltip/> <el-table-column prop="name" label="名称" fixed width="180" show-overflow-tooltip/>
<el-table-column prop="json.approval_number" fixed label="国药准字" width="180" show-overflow-tooltip/> <el-table-column :prop="type==1306?'json.reg_number' : 'json.approval_number'" fixed label="国药准字" width="180" v-if="type==1301 || type==1306" show-overflow-tooltip/>
<el-table-column prop="producer" label="生产企业" width="180" show-overflow-tooltip/> <el-table-column prop="producer" label="生产企业" width="180" v-if="type==1301 || type==1306" show-overflow-tooltip/>
<el-table-column v-if="type==1301" prop="json.reg_specifications" label="注册规格" width="80" <el-table-column v-if="type==1301" prop="json.reg_specifications" label="注册规格" width="80"
show-overflow-tooltip/> show-overflow-tooltip/>
<el-table-column v-if="type==1301" prop="json.min_packaging_unit" label="包装单位" width="80" <el-table-column v-if="type==1301" prop="json.min_packaging_unit" label="包装单位" width="80"
@ -88,6 +88,10 @@ const init = (_type: number, _name: string) => {
type.value = _type; type.value = _type;
keyword.value = _name; keyword.value = _name;
show.value = true; show.value = true;
if (keyword.value && keyword.value != ""){
search_social()
}
}; };
defineExpose({init}); defineExpose({init});

View File

@ -277,7 +277,14 @@ let confirm = async () => {
ElMessage.error('请至少添加一个采购药品') ElMessage.error('请至少添加一个采购药品')
return return
} }
//
for (let i = 0; i < table_list.value.length; i++) {
debugger
if (!table_list.value[i].productionBatchCode) {
ElMessage.error('生产批号不能为空')
return
}
}
// //
for (let i = 0; i < table_list.value.length; i++) { for (let i = 0; i < table_list.value.length; i++) {
if (!checkProductionDate(table_list.value[i])) { if (!checkProductionDate(table_list.value[i])) {

View File

@ -199,7 +199,7 @@ const cardTypeList = ref<any>(Object.entries(psnCertTypes).map(([id, name]) => (
const doctorList = ref<any>([]) const doctorList = ref<any>([])
const sectionDoctorOption = ref<any>('') const sectionDoctorOption = ref<any>('')
const list = () => { const list = () => {
post(apiConfig.organizationMemberSearch, {query: {role: 1}}).then((res: any) => { post(apiConfig.OrganizationMemberSearch, {query: {role: 1}}).then((res: any) => {
doctorList.value = res doctorList.value = res
}) })
} }

View File

@ -75,34 +75,62 @@
</div> </div>
<div class="content_goods" ref="content"> <div class="content_goods" ref="content">
<el-table :data="tableData" style="width: 100%;height: 100%;padding: 0 24px" @row-click="openMack"> <el-table :data="tableData" style="width: 100%;height: 100%;padding: 0 24px" @row-click="openMack">
<el-table-column fixed prop="name" label="名称" width="200" show-overflow-tooltip/> <el-table-column fixed prop="name" label="名称" width="200" show-overflow-tooltip>
<el-table-column fixed label="类型" width="200">
<template #default="scope"> <template #default="scope">
{{ getTypeName(scope.row.type) }}<span v-if="scope.row.cateName">/{{ scope.row.cateName }}</span> {{scope.row.name}}{{scope.row.commonName?"("+scope.row.commonName+")":""}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column fixed label="规格" show-overflow-tooltip> <el-table-column fixed label="规格" show-overflow-tooltip width="100">
<template #default="scope"> <template #default="scope">
{{ scope.row.minPackagingNumber }}*{{ scope.row.minPackagingUnit }}/{{ scope.row.packagingUnit }} {{ scope.row.minPackagingNumber }}*{{ scope.row.minPackagingUnit }}/{{ scope.row.packagingUnit }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column fixed label="厂家" prop="producer" width="230" show-overflow-tooltip/> <el-table-column fixed label="批准文号" width="200">
<el-table-column fixed label="进价" width="120">
<template #default="scope"> <template #default="scope">
{{ scope.row.purchaseUnitPrice.toFixed(2) }} {{ scope.row.approvalCode }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column fixed label="厂家" prop="producer" width="230" show-overflow-tooltip/>
<el-table-column fixed label="售价" width="120" > <el-table-column fixed label="售价" width="120" >
<template #default="scope"> <template #default="scope">
{{ scope.row.unitPrice.toFixed(2) }} {{ scope.row.unitPrice.toFixed(2) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="标签" prop="producer" width="200"> <el-table-column label="类型" width="200">
<template #default="scope"> <template #default="scope">
<el-tag class="tags" type="success" v-for="item in getTagsArray(scope.row.tags)">{{ item }}</el-tag> {{ getTypeName(scope.row.type) }}<span v-if="scope.row.cateName">/{{ scope.row.cateName }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" prop="remark" width="150"/> <el-table-column label="库存数量" width="150">
<template #default="scope">
{{ scope.row.inventoryWholeNumber }}{{ scope.row.packagingUnit }}
<template v-if="scope.row.inventoryFragmentNumber > 0">
{{ scope.row.inventoryFragmentNumber }}{{ scope.row.minPackagingUnit }}
</template>
</template>
</el-table-column>
<el-table-column label="可售库存" width="150">
<template #default="scope">
{{ scope.row.inventoryWholeNumber }}{{ scope.row.packagingUnit }}
<template v-if="scope.row.inventoryFragmentNumber > 0">
{{ scope.row.inventoryFragmentNumber }}{{ scope.row.minPackagingUnit }}
</template>
</template>
</el-table-column>
<el-table-column label="最近效期" prop="recentlyExpiryDate" width="100"></el-table-column>
<el-table-column label="进价" width="120">
<template #default="scope">
{{ scope.row.purchaseUnitPrice.toFixed(2) }}
</template>
</el-table-column>
<el-table-column label="医保类别" width="80">
<template #default="scope">
{{ scope.row.chrgitmLv}}
</template>
</el-table-column>
<el-table-column label="利润分类" width="100"> <el-table-column label="利润分类" width="100">
<template #default="scope"> <template #default="scope">
{{ getProfitCategory(scope.row.interestRate) }} {{ getProfitCategory(scope.row.interestRate) }}
@ -114,31 +142,23 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="库存" width="120">
<template #default="scope">
{{ scope.row.inventoryWholeNumber }}{{ scope.row.packagingUnit }}
<template v-if="scope.row.inventoryFragmentNumber > 0">
{{ scope.row.inventoryFragmentNumber }}{{ scope.row.minPackagingUnit }}
</template>
</template>
</el-table-column>
<el-table-column label="最近效期" prop="recentlyExpiryDate" show-overflow-tooltip></el-table-column>
<el-table-column label="可售库存"> <el-table-column label="标签" prop="producer" width="200">
<template #default="scope"> <template #default="scope">
{{ scope.row.inventoryWholeNumber }}{{ scope.row.packagingUnit }} <el-tag class="tags" type="success" v-for="item in getTagsArray(scope.row.tags)">{{ item }}</el-tag>
<template v-if="scope.row.inventoryFragmentNumber > 0">
{{ scope.row.inventoryFragmentNumber }}{{ scope.row.minPackagingUnit }}
</template>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" prop="remark" width="150"/>
<el-table-column label="药品成本" prop="costPrice" show-overflow-tooltip> <el-table-column label="药品成本" prop="costPrice" show-overflow-tooltip>
<template #default="scope"> <template #default="scope">
{{ scope.row.costPrice.toFixed(2) }} {{ scope.row.costPrice.toFixed(2) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="医保码" prop="hilistCode" show-overflow-tooltip></el-table-column> <el-table-column label="医保码" prop="hilistCode" show-overflow-tooltip></el-table-column>
<el-table-column fixed label="医保类别"> <el-table-column label="医保类别">
<template #default="scope"> <template #default="scope">
{{ getTypeName(scope.row.type) }} {{ getTypeName(scope.row.type) }}
</template> </template>

View File

@ -92,7 +92,7 @@ const initDoctor = () => {
keyword: keyword.value, keyword: keyword.value,
role: 1 role: 1
} }
post(apiConfig.organizationMemberSearch, {query: query}).then((res: any) => { post(apiConfig.OrganizationMemberSearch, {query: query}).then((res: any) => {
roleList.value = res roleList.value = res
}) })
} }

View File

@ -68,10 +68,12 @@ const detailsDo = (row: any) => {
let data = {...row}; let data = {...row};
data.beginTime = selectDate.value[0]; data.beginTime = selectDate.value[0];
data.endTime = selectDate.value[1]; data.endTime = selectDate.value[1];
// post("social/reconciliation/detailDo", {data: data}) post("social/reconciliation/detailDo", {data: data}).then((res: any) => {
post("social/reconciliation/testDetailDo", {data: data}).then((res: any) => {
openDetailList(res) openDetailList(res)
}) })
// post("social/reconciliation/testDetailDo", {data: data}).then((res: any) => {
// openDetailList(res)
// })
} }
const detailListRef = ref(); const detailListRef = ref();