Merge branch 'main' of ssh://git.jizhiweb.cn:2222/clinic-v2/web
This commit is contained in:
commit
819c242b8f
|
|
@ -3,7 +3,7 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<link rel="icon" href="/favicon.ico">
|
<link rel="icon" href="/favicon.ico">
|
||||||
<link rel="stylesheet" href="@/assets/iconfont/iconfont.css">
|
<link rel="stylesheet" href="/static/iconfont/iconfont.css">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>药慧精灵智慧诊所</title>
|
<title>药慧精灵智慧诊所</title>
|
||||||
</head>
|
</head>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
@font-face {
|
||||||
|
font-family: "iconfont"; /* Project id 4921806 */
|
||||||
|
src: url('iconfont.woff?t=1748312335696') format('woff'),
|
||||||
|
url('iconfont.ttf?t=1748312335696') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconfont {
|
||||||
|
font-family: "iconfont" !important;
|
||||||
|
font-size: 16px;
|
||||||
|
font-style: normal;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-yuyueh:before {
|
||||||
|
content: "\e60d";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-yuyue:before {
|
||||||
|
content: "\e606";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-qunzutaozhuang:before {
|
||||||
|
content: "\eac9";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-jia:before {
|
||||||
|
content: "\e6a9";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-RectangleCopy:before {
|
||||||
|
content: "\e6a2";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-RectangleCopy1:before {
|
||||||
|
content: "\e6a4";
|
||||||
|
}
|
||||||
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,296 @@
|
||||||
|
export namespace API {
|
||||||
|
export namespace Charge {
|
||||||
|
export namespace Log {
|
||||||
|
export const List = 'charge/log/list'//收费记录;
|
||||||
|
export const ReportWithDays = 'charge/log/reportWithDays'//每日收费报表;
|
||||||
|
export const ListByPatientId = 'charge/log/listByPatientId'//病人付费记录;
|
||||||
|
export const ListByDatetime = 'charge/log/listByDatetime'//获取收退费记录;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Order {
|
||||||
|
export const List = 'charge/order/list'//查询list 只有订单信息;
|
||||||
|
export const Save = 'charge/order/save'//保存收费订单;
|
||||||
|
export const Complete = 'charge/order/complete'//完成订单;
|
||||||
|
export const GetPrintInfoByCode = 'charge/order/getPrintInfoByCode'//根据订单号获取订单详情,小票打印用;
|
||||||
|
export const GetByCode = 'charge/order/getByCode'//根据code查询订单详情;
|
||||||
|
export const Refund = 'charge/order/refund';
|
||||||
|
export const ListWithDetail = 'charge/order/listWithDetail'//查询list 带详情;
|
||||||
|
export const GetByDiagnosisCode = 'charge/order/getByDiagnosisCode'//根据诊断code和状态获取诊断信息;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Social {
|
||||||
|
export const PrePay = 'charge/social/prePay'//医保预支付;
|
||||||
|
export const RealPay = 'charge/social/realPay'//医保真实支付;
|
||||||
|
export const Upload = 'charge/social/upload'//医保上传支付明细;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Common {
|
||||||
|
export namespace Auth {
|
||||||
|
export const Get = 'common/auth/get'//获取认证信息;
|
||||||
|
export const Set = 'common/auth/set'//设置认证信息;
|
||||||
|
export const Check = 'common/auth/check';
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Config {
|
||||||
|
export const Get = 'common/config/get'//根据key获取配置信息;
|
||||||
|
export const List = 'common/config/list'//查询配置信息;
|
||||||
|
export const GetAll = 'common/config/getAll'//查询所有配置信息;
|
||||||
|
export const SavePrinter = 'common/config/savePrinter'//保存打印机配置;
|
||||||
|
export const Edit = 'common/config/edit'//修改配置信息;
|
||||||
|
export const GetPrintConfig = 'common/config/getPrintConfig'//获取打印机配置;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Log {
|
||||||
|
export const List = 'common/log/list'//查询操作日志;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace File {
|
||||||
|
export const GetImage = 'common/file/getImage'//获取图片;
|
||||||
|
export const Download = 'common/file/download'//下载文件;
|
||||||
|
export const Upload = 'common/file/upload'//上传文件;
|
||||||
|
export const UploadToTemp = 'common/file/uploadToTemp'//上传临时文件;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace ManagerUser {
|
||||||
|
export const List = 'common/ManagerUser/list'//所有人员信息;
|
||||||
|
export const Verify = 'common/ManagerUser/verify'//验证token;
|
||||||
|
export const Login = 'common/ManagerUser/login'//登录;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Sign {
|
||||||
|
export const SignOut = 'common/sign/signOut'//医保签退;
|
||||||
|
export const SignIn = 'common/sign/signIn'//医保签到;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Diagnosis {
|
||||||
|
export namespace Base {
|
||||||
|
export const Save = 'diagnosis/base/save'//保存诊断;
|
||||||
|
export const GetByDiagnosisCode = 'diagnosis/base/getByDiagnosisCode'//获取诊断信息;
|
||||||
|
export const GetByRegisId = 'diagnosis/base/getByRegisId'//根据挂单号回显病历详情;
|
||||||
|
export const ChargeQueueList = 'diagnosis/base/ChargeQueueList'//获取收费队列;
|
||||||
|
export const ListByPatient = 'diagnosis/base/listByPatient'//查询患者病历;
|
||||||
|
export const GetRegistrationDetail = 'diagnosis/base/getRegistrationDetail'//获取挂号信息;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Goods {
|
||||||
|
export namespace Cate {
|
||||||
|
export const List = 'goods/cate/list'//根据type获取商品二级分类列表;
|
||||||
|
export const Save = 'goods/cate/save'//保存二级分类;
|
||||||
|
export const Del = 'goods/cate/del'//删除二级分类;
|
||||||
|
export const GetAllList = 'goods/cate/getAllList'//获取所有分类;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Base {
|
||||||
|
export const Get = 'goods/base/get'//根据商品id获取商品;
|
||||||
|
export const Save = 'goods/base/save'//商品建档或修改;
|
||||||
|
export const Search = 'goods/base/search'//商品搜索一键建档内的搜索;
|
||||||
|
export const ReturnInit = 'goods/base/returnInit'//商品重新初始化医保库存;
|
||||||
|
export const DetailWithSearch = 'goods/base/DetailWithSearch'//商品搜索;
|
||||||
|
export const EnableSale = 'goods/base/enableSale'//起售商品;
|
||||||
|
export const DisableSale = 'goods/base/disableSale'//停售商品;
|
||||||
|
export const AddIdCode = 'goods/base/addIdCode'//商品添加标识码;
|
||||||
|
export const GetByCateId = 'goods/base/getByCateId'//获取二级分类绑定的商品数量;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Inventory {
|
||||||
|
export namespace Apply {
|
||||||
|
export const List = 'inventory/apply/list'//分页查询领用单;
|
||||||
|
export const Create = 'inventory/apply/create'//创建领用单并领用;
|
||||||
|
export const GetDetail = 'inventory/apply/getDetail'//获取领用单详情;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Check {
|
||||||
|
export const List = 'inventory/check/list'//盘点列表分页查询;
|
||||||
|
export const Save = 'inventory/check/save'//保存盘点记录;
|
||||||
|
export const GetDetail = 'inventory/check/getDetail'//获取盘点单详情;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Goods {
|
||||||
|
export const Log = 'inventory/goods/log'//获取库存日志;
|
||||||
|
export const Update = 'inventory/goods/update'//修改库存采购信息;
|
||||||
|
export const Statistics = 'inventory/goods/statistics'//库存统计;
|
||||||
|
export const GetByGoodsId = 'inventory/goods/getByGoodsId'//获取商品库存信息 根据goodsId;
|
||||||
|
export const ListByOrderCode = 'inventory/goods/listByOrderCode'//获取采购单信息 根据code;
|
||||||
|
export const ListByIds = 'inventory/goods/listByIds'//根据库存id集合获取库存信息;
|
||||||
|
export const ListByGoodsId = 'inventory/goods/listByGoodsId'//获取商品库存信息 根据goodsId;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Order {
|
||||||
|
export const Update = 'inventory/order/update'//更新采购单基本信息;
|
||||||
|
export const List = 'inventory/order/list'//分页查询采购单;
|
||||||
|
export const Create = 'inventory/order/create'//创建采购单;
|
||||||
|
export const Refund = 'inventory/order/refund'//采购单退货;
|
||||||
|
export const Detail = 'inventory/order/detail'//获取采购单详情;
|
||||||
|
export const ToExcel = 'inventory/order/toExcel'//采购一键导入,生成excel;
|
||||||
|
export const FromExcel = 'inventory/order/fromExcel'//采购一键导入,解析excel;
|
||||||
|
export const AddGoods = 'inventory/order/addGoods'//采购单修改时 添加采购的商品;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Supplier {
|
||||||
|
export const List = 'inventory/supplier/list'//分页查询供货商;
|
||||||
|
export const Save = 'inventory/supplier/save'//保存供货商;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Item {
|
||||||
|
export const Get = 'item/get'//获取项目详情;
|
||||||
|
export const Search = 'item/search'//搜索项目;
|
||||||
|
export const Del = 'item/del'//删除项目;
|
||||||
|
export const Edit = 'item/edit'//修改项目;
|
||||||
|
export const GroupList = 'item/groupList'//获取组套列表;
|
||||||
|
export const GetGroup = 'item/getGroup'//获取组套;
|
||||||
|
export const Add = 'item/add'//添加项目;
|
||||||
|
export const DeleteGroup = 'item/deleteGroup'//删除组套;
|
||||||
|
export const SaveGroup = 'item/saveGroup'//保存组套;
|
||||||
|
export const List = 'item/list'//获取非组套列表;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Organization {
|
||||||
|
export namespace Member {
|
||||||
|
export const Get = 'organization/member/get'//获取成员信息;
|
||||||
|
export const List = 'organization/member/list'//分页查询成员列表;
|
||||||
|
export const Save = 'organization/member/save'//保存成员信息;
|
||||||
|
export const Search = 'organization/member/search'//搜索成员;
|
||||||
|
export const Del = 'organization/member/del'//删除成员;
|
||||||
|
export const ListBySectionId = 'organization/member/listBySectionId'//获取当前科室的所有医生;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Section {
|
||||||
|
export const Add = 'organization/section/add'//添加科室;
|
||||||
|
export const Get = 'organization/section/get'//获取科室信息;
|
||||||
|
export const List = 'organization/section/list';
|
||||||
|
export const AllList = 'organization/section/allList'//获取所有科室;
|
||||||
|
export const Del = 'organization/section/del'//删除科室;
|
||||||
|
export const Edit = 'organization/section/edit'//修改科室信息;
|
||||||
|
export const ListByMemberId = 'organization/section/listByMemberId'//获取当前成员的所属科室;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Patient {
|
||||||
|
export namespace Base {
|
||||||
|
export const Get = 'patient/base/get'//获取患者信息;
|
||||||
|
export const Update = 'patient/base/update'//修改患者信息;
|
||||||
|
export const Create = 'patient/base/create'//创建患者;
|
||||||
|
export const Search = 'patient/base/search'//搜索患者;
|
||||||
|
export const Del = 'patient/base/del'//删除患者;
|
||||||
|
export const List = 'patient/base/list'//分页查询患者列表;
|
||||||
|
export const ChangeLevel = 'patient/base/changeLevel'//改变会员等级;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Integral {
|
||||||
|
export const Add = 'patient/integral/add'//添加会员积分;
|
||||||
|
export const List = 'patient/integral/list'//分页查询会员积分记录;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace LevelConfig {
|
||||||
|
export const Get = 'patient/levelConfig/get'//根据leveId获取会员等级配置;
|
||||||
|
export const Save = 'patient/levelConfig/save'//保存会员等级配置;
|
||||||
|
export const Create = 'patient/levelConfig/create'//新增会员等级配置;
|
||||||
|
export const Del = 'patient/levelConfig/del'//删除一个会员等级配置;
|
||||||
|
export const Edit = 'patient/levelConfig/edit'//修改会员等级配置;
|
||||||
|
export const List = 'patient/levelConfig/list'//分页查询会员等级配置;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Registration {
|
||||||
|
export const Add = 'patient/registration/add'//挂号;
|
||||||
|
export const Get = 'patient/registration/get'//获取挂号信息 根据挂号id;
|
||||||
|
export const List = 'patient/registration/list'//分页查询挂号列表;
|
||||||
|
export const Cancel = 'patient/registration/cancel'//取消挂号;
|
||||||
|
export const AllList = 'patient/registration/allList'//获取挂号信息列表;
|
||||||
|
export const Del = 'patient/registration/del'//删除挂号信息;
|
||||||
|
export const Edit = 'patient/registration/edit'//修改挂号信息;
|
||||||
|
export const ListByType = 'patient/registration/listByType'//挂号信息分页搜索;
|
||||||
|
export const ChangeStatus = 'patient/registration/changeStatus'//更改挂号单状态;
|
||||||
|
export const GetWithPatient = 'patient/registration/getWithPatient'//根据id返回挂号详细信息 包含患者信息;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Social {
|
||||||
|
export namespace Recipe {
|
||||||
|
export const Download = 'social/recipe/download'//下载中药颗粒;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Disease {
|
||||||
|
export const Download = 'social/disease/download';
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Diagnose {
|
||||||
|
export const Search = 'social/diagnose/search'//诊断搜索;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Directory {
|
||||||
|
export const Search = 'social/directory/search'//搜索目录信息;
|
||||||
|
export const GetByCode = 'social/directory/getByCode'//根据医保码,获取医保商品信息;
|
||||||
|
export const Download = 'social/directory/download'//下载目录;
|
||||||
|
export const SearchProducer = 'social/directory/searchProducer'//搜索企业信息;
|
||||||
|
export const Column_list = 'social/directory/column_list'//获取目录列 列表;
|
||||||
|
export const GetItemByCode = 'social/directory/getItemByCode'//根据医保码,获取医保服务项目信息;
|
||||||
|
export const ItemSearch = 'social/directory/itemSearch'//服务项目搜索;
|
||||||
|
export const Get_doc_list = 'social/directory/get_doc_list'//获取目录列表;
|
||||||
|
export const SyncToMongo = 'social/directory/syncToMongo'//同步到MongoDB;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Directory_limit {
|
||||||
|
export const Get_page = 'social/directory_limit/get_page'//分页查询目录限制信息;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Directory_self {
|
||||||
|
export const Get_page = 'social/directory_self/get_page'//分页查询自付比例信息;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Directory_upinfo {
|
||||||
|
export const Get_page = 'social/directory_upinfo/get_page'//分页查询更新信息;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Directory_version {
|
||||||
|
export const List = 'social/directory_version/list'//获取医保目录版本列表;
|
||||||
|
export const Get_current = 'social/directory_version/get_current'//获取当前医保目录版本;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Person {
|
||||||
|
export const GetCustomSocialInfo = 'social/person/getCustomSocialInfo'//获取社保人员信息;
|
||||||
|
export const GetSocialInfoByPsnNo = 'social/person/getSocialInfoByPsnNo'//根据社保人员编号获取医保人员信息 redis;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Reconciliation {
|
||||||
|
export const List = 'social/reconciliation/list'//医保-对账列表;
|
||||||
|
export const DoTotal = 'social/reconciliation/doTotal'//对总账;
|
||||||
|
export const HistoryList = 'social/reconciliation/historyList'//自动对账历史记录列表;
|
||||||
|
export const Reversal = 'social/reconciliation/reversal'//冲正;
|
||||||
|
export const DoDetail = 'social/reconciliation/doDetail'//明细对账;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Upload {
|
||||||
|
export const Get3501List = 'social/upload/get3501List'//分页查询 商品初始化数据;
|
||||||
|
export const Get3502List = 'social/upload/get3502List'//分页查询 商品库存变更记录;
|
||||||
|
export const Get3505List = 'social/upload/get3505List'//获取3505列表;
|
||||||
|
export const QuickUpload = 'social/upload/quickUpload'//进销存一键上报接口;
|
||||||
|
export const Get3503List = 'social/upload/get3503List'//分页查询 库存采购数据;
|
||||||
|
export const GetNotDoNumber = 'social/upload/getNotDoNumber'//获取进销存 3501-3506 未上报数量;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace Statistics {
|
||||||
|
export const GetSalesVolumeOverview = 'statistics/getSalesVolumeOverview'//销售人次趋势;
|
||||||
|
export const ExpiryDateWarning = 'statistics/expiryDateWarning'//有效期预警;
|
||||||
|
export const GoodsStatistics = 'statistics/goodsStatistics'//商品统计;
|
||||||
|
export const NumberEarlyWarning = 'statistics/numberEarlyWarning'//库存预警;
|
||||||
|
export const GetRevenueOverview = 'statistics/getRevenueOverview'//营收概况;
|
||||||
|
export const SalePerson = 'statistics/salePerson'//销售人员统计;
|
||||||
|
export const GetQueueCount = 'statistics/getQueueCount'//获取收费队列 就诊队列数量;
|
||||||
|
export const GetPayOverview = 'statistics/getPayOverview'//经营概况;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,38 +1,47 @@
|
||||||
export enum apiConfig{
|
export enum apiConfig {
|
||||||
/**
|
/**
|
||||||
* 用户操作
|
* 用户操作
|
||||||
*/
|
*/
|
||||||
"ManagerUserLogin"="manager/user/login",//登录
|
"ManagerUserLogin" = "manager/user/login",//登录
|
||||||
"signIn"="sign/in",//签到
|
"signIn" = "sign/in",//签到
|
||||||
"signOut"="sign/out",//签退
|
"signOut" = "sign/out",//签退
|
||||||
"managerUserVerify"="manager/user/verify",//获取用户信息
|
"managerUserVerify" = "manager/user/verify",//获取用户信息
|
||||||
|
/**
|
||||||
|
* 挂号操作
|
||||||
|
*/
|
||||||
|
"RegistrationList" = "registration/list",//挂号列表
|
||||||
|
"RegistrationAdd" = "registration/add",//添加挂号
|
||||||
|
"RegistrationEdit" = "registration/edit",//修改挂号
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 接诊操作
|
* 接诊操作
|
||||||
*/
|
*/
|
||||||
"RegistrationDetail" ="medical/record/getDetailByRegisId",//详情
|
"RegistrationChangeStatus" = "registration/changeStatus",//挂号状态
|
||||||
"RegistrationList" ="registration/getListByType",//患者列表
|
"MedicalDetailByRegisId" = "medical/record/getDetailByRegisId",//患者详情
|
||||||
"RegistrationChangeStatus"="registration/changeStatus",
|
"RegistrationListByType" = "registration/getListByType",//患者列表
|
||||||
|
"StatisticsGetTipCount" = "statistics/getTipCount",//患者状态数量
|
||||||
|
"MedicalRecordSave" = "medical/record/save",//保存接诊信息
|
||||||
|
"SocialDiagnoseSearch" = "social/diagnose/search",//接诊详情
|
||||||
/**
|
/**
|
||||||
* 科室成员信息
|
* 科室成员信息
|
||||||
*/
|
*/
|
||||||
"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",
|
"GoodsDisableSale" = "goods/goods/disableSale",
|
||||||
"GoodsEnableSale"="goods/goods/enableSale",
|
"GoodsEnableSale" = "goods/goods/enableSale",
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收费接口
|
* 收费接口
|
||||||
*/
|
*/
|
||||||
|
|
||||||
"ChargeListChargeLog"="charge/listChargeLog",//查询收费记录
|
"ChargeListChargeLog" = "charge/listChargeLog",//查询收费记录
|
||||||
"RecordGetChargeQueue"="medical/record/getChargeQueue"//查询收费记录
|
"RecordGetChargeQueue" = "medical/record/getChargeQueue"//查询收费记录
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
"1": "口服",
|
||||||
|
"2": "直肠给药",
|
||||||
|
"3": "舌下给药",
|
||||||
|
"4": "注射给药",
|
||||||
|
"401": "皮下注射",
|
||||||
|
"402": "皮内注射",
|
||||||
|
"403": "肌肉注射",
|
||||||
|
"404": "静脉注射或静脉滴注",
|
||||||
|
"5": "吸入给药",
|
||||||
|
"6": "局部用药",
|
||||||
|
"601": "椎管内用药",
|
||||||
|
"602": "关节腔内用药",
|
||||||
|
"603": "胸膜腔用药",
|
||||||
|
"604": "腹腔用药",
|
||||||
|
"605": "阴道用药",
|
||||||
|
"606": "气管内用药",
|
||||||
|
"607": "滴眼",
|
||||||
|
"608": "滴鼻",
|
||||||
|
"609": "喷喉",
|
||||||
|
"610": "含化",
|
||||||
|
"611": "敷伤口",
|
||||||
|
"612": "擦皮肤",
|
||||||
|
"699": "其他局部给药途径",
|
||||||
|
"9": "其他给药途径"
|
||||||
|
}
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
@font-face {
|
|
||||||
font-family: "iconfont"; /* Project id 4921806 */
|
|
||||||
src: url('iconfont.woff?t=1747274949107') format('woff'),
|
|
||||||
url('iconfont.ttf?t=1747274949107') format('truetype');
|
|
||||||
}
|
|
||||||
|
|
||||||
.iconfont {
|
|
||||||
font-family: "iconfont", serif !important;
|
|
||||||
font-size: 16px;
|
|
||||||
font-style: normal;
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
-moz-osx-font-smoothing: grayscale;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-RectangleCopy:before {
|
|
||||||
content: "\e6a2";
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-RectangleCopy1:before {
|
|
||||||
content: "\e6a4";
|
|
||||||
}
|
|
||||||
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -143,23 +143,77 @@ $lighter-color: rgba(#4D6DE4, 0.5);
|
||||||
color: #FFF;
|
color: #FFF;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
margin-left: 9px;
|
||||||
&:hover{
|
&:hover{
|
||||||
background: $lighter-color;
|
background: $lighter-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
.small-btn{
|
.default-close-btn{
|
||||||
display: inline-block;
|
|
||||||
width: 72px;
|
|
||||||
height: 24px;
|
|
||||||
line-height: 24px;
|
|
||||||
background: $btn-color;
|
|
||||||
border-radius: 3px;
|
|
||||||
color: #FFF;
|
|
||||||
font-size: 12px;
|
|
||||||
text-align: center;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
width: 119px;
|
||||||
|
height: 42px;
|
||||||
|
line-height: 42px;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 6px;
|
||||||
|
color: #333333;
|
||||||
|
font-size: 16px;
|
||||||
|
text-align: center;
|
||||||
|
margin-left: 9px;
|
||||||
|
border:1px solid #D8D8D8;
|
||||||
&:hover{
|
&:hover{
|
||||||
background: $lighter-color;
|
background: $lighter-color;
|
||||||
|
color: #fff;
|
||||||
|
border:none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.small-btn{
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
line-height: 1;
|
||||||
|
background: $btn-color;
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #FFF;
|
||||||
|
font-size: 14px;
|
||||||
|
text-align: center;
|
||||||
|
margin-left: 9px;
|
||||||
|
padding: 8px 15px;
|
||||||
|
&:hover{
|
||||||
|
background: $lighter-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.danger-btn{
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
line-height: 1;
|
||||||
|
background: #EB5757;
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #FFF;
|
||||||
|
font-size: 14px;
|
||||||
|
text-align: center;
|
||||||
|
margin-left: 9px;
|
||||||
|
padding: 8px 15px;
|
||||||
|
&:hover{
|
||||||
|
background: rgba(#EB5757, 0.5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.close-btn{
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
line-height: 1;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #333;
|
||||||
|
font-size: 14px;
|
||||||
|
text-align: center;
|
||||||
|
margin-left: 9px;
|
||||||
|
padding: 7px 14px;
|
||||||
|
border:1px solid #D8D8D8;
|
||||||
|
&:hover{
|
||||||
|
background: rgba(#4D6DE4, 0.5);
|
||||||
|
color: #fff;
|
||||||
|
border:1px solid rgba(#4D6DE4, 0.5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -17,47 +17,25 @@
|
||||||
@click="changeInput"
|
@click="changeInput"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<div class="container" style="height: 300px">
|
<div class="container" style="max-height: 300px">
|
||||||
<el-scrollbar style="max-height: 300px;width: 100%">
|
<el-table :data="searchList" max-height="300" @row-click="clickRow" :header-cell-style="{ backgroundColor: '#F1F5FB' }">
|
||||||
<table class="table" style="width: 100%; border-collapse: collapse;max-height: 50px">
|
<el-table-column
|
||||||
<!-- 表头 -->
|
v-for="(conf, index) in props.showConfig"
|
||||||
<thead>
|
:key="index"
|
||||||
<tr class="table-title">
|
:label="conf.label"
|
||||||
<th
|
:prop="conf.prop"
|
||||||
v-for="item in showConfig"
|
show-overflow-tooltip
|
||||||
:key="item.prop"
|
>
|
||||||
style="background-color: #f5f7fa; padding: 8px;"
|
</el-table-column>
|
||||||
>
|
/>
|
||||||
{{ item.label }}
|
</el-table>
|
||||||
</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<!-- 表体 -->
|
|
||||||
<tbody>
|
|
||||||
<tr class="table-body"
|
|
||||||
v-for="(item, index) in searchList"
|
|
||||||
:key="index"
|
|
||||||
@click="clickRow(item)"
|
|
||||||
style="cursor: pointer; transition: background-color 0.2s;"
|
|
||||||
>
|
|
||||||
<td
|
|
||||||
v-for="showItem in showConfig"
|
|
||||||
:key="showItem.prop"
|
|
||||||
style="vertical-align: middle; padding: 8px;"
|
|
||||||
>
|
|
||||||
{{ item[showItem.prop] }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</el-scrollbar>
|
|
||||||
</div>
|
</div>
|
||||||
</el-popover>
|
</el-popover>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {ref, unref} from "vue";
|
import {ref, unref, computed, onMounted} from "vue";
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
import {Plus} from "@element-plus/icons-vue";
|
import {Plus} from "@element-plus/icons-vue";
|
||||||
|
|
||||||
|
|
@ -97,7 +75,7 @@ const props = defineProps({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const searchList = ref([]);
|
const searchList = ref<any>([]);
|
||||||
|
|
||||||
const changeInput = (inputStr: string) => {
|
const changeInput = (inputStr: string) => {
|
||||||
unref(popoverRef).popperRef?.delayHide?.()
|
unref(popoverRef).popperRef?.delayHide?.()
|
||||||
|
|
@ -105,11 +83,10 @@ const changeInput = (inputStr: string) => {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
post(props.requestApi, {keyword: keyword.value}).then((res: any) => {
|
post(props.requestApi, {keyword: keyword.value}).then((res: any) => {
|
||||||
searchList.value = res;
|
searchList.value = res
|
||||||
});
|
});
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const emit = defineEmits(['selectedCallBack', 'focus']);
|
const emit = defineEmits(['selectedCallBack', 'focus']);
|
||||||
|
|
||||||
const clickRow = (row: any) => {
|
const clickRow = (row: any) => {
|
||||||
|
|
@ -150,62 +127,8 @@ const handlerBlur = () => {
|
||||||
border: 1px solid #409eff !important;
|
border: 1px solid #409eff !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
:deep(.el-table__cell) {
|
||||||
.table {
|
padding: 0 4px;
|
||||||
th {
|
height: 36px;
|
||||||
background: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-title {
|
|
||||||
height: 52px;
|
|
||||||
font-weight: 500;
|
|
||||||
font-size: 14px;
|
|
||||||
color: #333333;
|
|
||||||
font-style: normal;
|
|
||||||
|
|
||||||
th {
|
|
||||||
text-align: left;
|
|
||||||
|
|
||||||
&:nth-child(1) {
|
|
||||||
width: 200px;
|
|
||||||
text-align: left;
|
|
||||||
border-radius: 8px 8px 0 0;
|
|
||||||
padding-left: 24px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-body {
|
|
||||||
height: 52px;
|
|
||||||
font-weight: 500;
|
|
||||||
font-size: 14px;
|
|
||||||
color: #666666;
|
|
||||||
font-style: normal;
|
|
||||||
|
|
||||||
td {
|
|
||||||
&:nth-child(1) {
|
|
||||||
width: 200px;
|
|
||||||
text-align: left;
|
|
||||||
padding-left: 30px !important;
|
|
||||||
white-space: nowrap; /* 防止文本换行 */
|
|
||||||
overflow: hidden; /* 隐藏溢出的文本 */
|
|
||||||
text-overflow: ellipsis; /* 显示省略号 */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
border-radius: 0 0 8px 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: #4D6DE4;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
table thead tr {
|
|
||||||
background: #F5FAFF;;
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
|
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<ul class="item-list">
|
<ul class="item-list">
|
||||||
<div v-for="(item, index) in units" :class="['item',(index+1)%4 == 0 ? 'last-item' : '',item==curItem?'active':'']" @click="selectItem(item)">{{item}}</div>
|
<div v-for="(item, index) in props.units" :class="['item',(index+1)%4 == 0 ? 'last-item' : '',item==curItem?'active':'']" @click="selectItem(item)">{{item}}</div>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -6,45 +6,39 @@
|
||||||
请勾选该追溯码关联的发药项目商品
|
请勾选该追溯码关联的发药项目商品
|
||||||
</div>
|
</div>
|
||||||
<div class="code">
|
<div class="code">
|
||||||
<div class="before-code">
|
<span class="before-code">
|
||||||
{{ traceabilityCode.slice(0, 7) }}
|
{{ traceabilityCode.slice(0, 7) }}
|
||||||
</div>
|
</span>
|
||||||
<div class="after-code">
|
<span class="after-code">
|
||||||
{{ traceabilityCode.slice(7, traceabilityCode.length) }}
|
{{ traceabilityCode.slice(7, traceabilityCode.length) }}
|
||||||
</div>
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="padding: 0 24px;flex: 1; min-height: 0;">
|
||||||
|
<div class="list">
|
||||||
|
<el-table :data="tableData" :header-cell-style="{backgroundColor: '#F1F5FB'}">
|
||||||
|
<el-table-column label="选择" width="60">
|
||||||
|
<template #default="scope">
|
||||||
|
<input class="blue-radio" type="radio" :value="scope.row.id" v-model="selected" @click="closeModal"/>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="name" label="发药项目" show-overflow-tooltip/>
|
||||||
|
<el-table-column prop="idCode" label="产品标识码" width="140" show-overflow-tooltip>
|
||||||
|
<template #default="scope">
|
||||||
|
<IdCodeListShow :idCodeList="scope.row.idCode" v-if="scope.row.idCode && scope.row.idCode.length > 0"/>
|
||||||
|
<div v-else>未关联</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="系统处理" width="160" show-overflow-tooltip>
|
||||||
|
<template #default="scope">
|
||||||
|
<div v-if="selected === scope.row.id">
|
||||||
|
关联产品标识码,采集追溯码自动识别商品
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="padding: 0 24px;flex: 1; min-height: 0;">
|
|
||||||
<div class="list">
|
|
||||||
<table class="table" style="border-spacing: 0">
|
|
||||||
<thead style="background:#F1F5FB">
|
|
||||||
<tr class="table-title" style="background: #f1f5fb">
|
|
||||||
<th>选择</th>
|
|
||||||
<th>发药项目</th>
|
|
||||||
<th>产品标识码</th>
|
|
||||||
<th>系统处理</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody class="table-body" style="height: 52px">
|
|
||||||
<tr v-for="(item,index) in tableData">
|
|
||||||
<td>
|
|
||||||
<input class="blue-radio" type="radio" :value="item.id" v-model="selected" @click="closeModal"/>
|
|
||||||
</td>
|
|
||||||
<td>{{ item.name }}</td>
|
|
||||||
<td>
|
|
||||||
<IdCodeListShow :idCodeList="item.idCode" v-if="item.idCode && item.idCode.length > 0"/>
|
|
||||||
<div v-else>未关联</div>
|
|
||||||
</td>
|
|
||||||
<td style="width: 300px;">
|
|
||||||
<template v-if="selected === item.id">
|
|
||||||
关联产品标识码,采集追溯码自动识别商品
|
|
||||||
</template>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
|
|
@ -93,7 +87,6 @@ const addIdCode = () => {
|
||||||
}
|
}
|
||||||
let idCode = traceabilityCode.value.slice(0, 7);
|
let idCode = traceabilityCode.value.slice(0, 7);
|
||||||
post("goods/goods/addIdCode", {goodsId: selected.value, idCode: idCode}).then((res: any) => {
|
post("goods/goods/addIdCode", {goodsId: selected.value, idCode: idCode}).then((res: any) => {
|
||||||
show.value = false;
|
|
||||||
for (let subItem of tableData.value) {
|
for (let subItem of tableData.value) {
|
||||||
if (subItem.id === selected.value) {
|
if (subItem.id === selected.value) {
|
||||||
if (subItem.idCode == null) {
|
if (subItem.idCode == null) {
|
||||||
|
|
@ -102,6 +95,7 @@ const addIdCode = () => {
|
||||||
subItem.idCode?.push(idCode);
|
subItem.idCode?.push(idCode);
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
close()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
const selectedItem = tableData.value.find((item: any) => item.id === selected.value);
|
const selectedItem = tableData.value.find((item: any) => item.id === selected.value);
|
||||||
|
|
@ -109,30 +103,32 @@ const addIdCode = () => {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
addTraceabilityCodeDo(selectedItem)
|
addTraceabilityCodeDo(selectedItem)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const emit = defineEmits(["addIdCode", "addTraceabilityCode"])
|
const emit = defineEmits(["addIdCode", "addTraceabilityCode"])
|
||||||
const addTraceabilityCodeDo = (item: any) => {
|
const addTraceabilityCodeDo = (item: any) => {
|
||||||
emit("addTraceabilityCode", item, traceabilityCode.value)
|
emit("addTraceabilityCode", item, traceabilityCode.value)
|
||||||
}
|
}
|
||||||
const showRadio=ref<any>(false)
|
const showRadio = ref<any>(false)
|
||||||
const closeModal = () => {
|
const closeModal = () => {
|
||||||
showRadio.value = false
|
showRadio.value = false
|
||||||
selected.value=null
|
selected.value = null
|
||||||
|
|
||||||
}
|
}
|
||||||
const close = () => {
|
const close = () => {
|
||||||
show.value= false
|
show.value = false
|
||||||
closeModal()
|
closeModal()
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.panel {
|
.panel {
|
||||||
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
|
width: 100%;
|
||||||
height: 126px;
|
height: 126px;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
@ -140,6 +136,7 @@ const close = () => {
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
background: #F9FAFC;
|
background: #F9FAFC;
|
||||||
|
padding: 24px;
|
||||||
margin-bottom: 24px;
|
margin-bottom: 24px;
|
||||||
|
|
||||||
.title-content {
|
.title-content {
|
||||||
|
|
@ -150,34 +147,43 @@ const close = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
.code {
|
.code {
|
||||||
|
width: 100%;
|
||||||
|
flex: 1;
|
||||||
|
min-height: 0;
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
.before-code {
|
.before-code {
|
||||||
color: #999999;
|
color: #999999;
|
||||||
}
|
}
|
||||||
|
|
||||||
.after-code {
|
.after-code {
|
||||||
|
min-width: 0;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.list {
|
.list {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
border-radius: 8px 8px 0 0;
|
border-radius: 8px 8px 0 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: 1px solid #EAEAEC;
|
border: 1px solid #EAEAEC;
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
|
|
||||||
.table {
|
.table {
|
||||||
|
|
||||||
th {
|
th {
|
||||||
background: none !important;
|
background: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table-title {
|
.table-title {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 52px;
|
height: 52px;
|
||||||
|
|
@ -210,18 +216,22 @@ const close = () => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.table-body {
|
.table-body {
|
||||||
height: 52px;
|
height: 52px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: #666666;
|
color: #666666;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
tr{
|
|
||||||
|
tr {
|
||||||
height: 52px;
|
height: 52px;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
|
|
||||||
td {
|
td {
|
||||||
height: 52px;
|
height: 52px;
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
width: 132px;
|
width: 132px;
|
||||||
padding-left: 35px;
|
padding-left: 35px;
|
||||||
|
|
@ -236,6 +246,7 @@ const close = () => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
table, tbody, td {
|
table, tbody, td {
|
||||||
border-bottom: 1px solid #EAEAEC; /* 明确设置边框 */
|
border-bottom: 1px solid #EAEAEC; /* 明确设置边框 */
|
||||||
}
|
}
|
||||||
|
|
@ -243,6 +254,7 @@ table, tbody, td {
|
||||||
table {
|
table {
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom {
|
.bottom {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
|
||||||
|
|
@ -16,34 +16,31 @@
|
||||||
</template>
|
</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<el-scrollbar>
|
<el-table :data="list" :header-cell-style="{backgroundColor: '#F1F5FB'}">
|
||||||
<table class="table" style="border-spacing: 0">
|
<el-table-column prop="name" label="发药项目" width="300" show-overflow-tooltip></el-table-column>
|
||||||
<thead style="background:#F1F5FB">
|
<el-table-column label="产品标识码" show-overflow-tooltip>
|
||||||
<tr class="table-title" style="background: #f1f5fb">
|
<template #default="scope">
|
||||||
<th>发药项目</th>
|
<IdCodeListShow :idCodeList="scope.row.idCode" v-if="scope.row.idCode&&scope.row.idCode.length>0"
|
||||||
<th>产品标识码</th>
|
@addTraceabilityCode="addTraceAbilityCodeHandler"/>
|
||||||
<th>发药数量</th>
|
<div v-else>未关联</div>
|
||||||
<th>已采/应采</th>
|
</template>
|
||||||
<th>追溯码</th>
|
</el-table-column>
|
||||||
</tr>
|
<el-table-column label="发药数量" show-overflow-tooltip>
|
||||||
</thead>
|
<template #default="scope">
|
||||||
<tbody class="table-body">
|
{{scope.row.selectedNum}}{{scope.row.selectedUnit}}
|
||||||
<tr v-for="(item,index) in list" :key="index">
|
</template>
|
||||||
<td>{{ item.name }}</td>
|
</el-table-column>
|
||||||
<td>
|
<el-table-column label="已采/应采" show-overflow-tooltip>
|
||||||
<IdCodeListShow :idCodeList="item.idCode" v-if="item.idCode&&item.idCode.length>0"
|
<template #default="scope">
|
||||||
@addTraceabilityCode="addTraceAbilityCodeHandler"/>
|
{{ scope.row.traceAbilityCodeList ? scope.row.traceAbilityCodeList.length : 0 }}/{{ scope.row.shouldNumber }}
|
||||||
<div v-else>未关联</div>
|
</template>
|
||||||
</td>
|
</el-table-column>
|
||||||
<td>{{ item.selectedNum }}{{ item.selectedUnit }}</td>
|
<el-table-column label="追溯码" width="300">
|
||||||
<td>{{ item.traceAbilityCodeList ? item.traceAbilityCodeList.length : 0 }}/{{ item.shouldNumber }}</td>
|
<template #default="scope">
|
||||||
<td>
|
<TraceabilityCodeAdd :item="scope.row" @addTraceabilityCode="addTraceAbilityCodeHandler"/>
|
||||||
<TraceabilityCodeAdd :item="item" @addTraceabilityCode="addTraceAbilityCodeHandler"/>
|
</template>
|
||||||
</td>
|
</el-table-column>
|
||||||
</tr>
|
</el-table>
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</el-scrollbar>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -89,6 +89,7 @@ const props = defineProps({
|
||||||
const init = async (code: any, psnNo: any) => {
|
const init = async (code: any, psnNo: any) => {
|
||||||
if (props.disabled) {
|
if (props.disabled) {
|
||||||
selectedIndex.value = 0
|
selectedIndex.value = 0
|
||||||
|
payType.value = 1
|
||||||
}
|
}
|
||||||
retailOrder.value = await post("charge/getByCode", {code: code});
|
retailOrder.value = await post("charge/getByCode", {code: code});
|
||||||
if (psnNo != null) {
|
if (psnNo != null) {
|
||||||
|
|
|
||||||
|
|
@ -204,16 +204,17 @@ const handleDateClick = (day: number) => {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
span {
|
span {
|
||||||
margin: auto;
|
margin: auto;
|
||||||
height: 34px;
|
height: 28px;
|
||||||
width: 34px;
|
width: 28px;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 16px;
|
font-size: 14px;
|
||||||
color: #666666;
|
color: #666666;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
border-radius:17px;
|
border-radius:14px;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.currentDay {
|
.currentDay {
|
||||||
background: #1677FE;
|
background: #1677FE;
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,21 @@
|
||||||
<span v-else>{{ scope.row.name }}</span>
|
<span v-else>{{ scope.row.name }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="使用方法" width="200">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-input v-model="usage" placeholder="请输入使用方法" style="width: 100px"></el-input>
|
||||||
|
<el-popover
|
||||||
|
placement="bottom"
|
||||||
|
title="Title"
|
||||||
|
:width="200"
|
||||||
|
trigger="click"
|
||||||
|
>
|
||||||
|
<template #default>
|
||||||
|
<Usage></Usage>
|
||||||
|
</template>
|
||||||
|
</el-popover>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="selectedPrice" label="单价" width="200">
|
<el-table-column prop="selectedPrice" label="单价" width="200">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
¥{{ scope.row.selectedPrice }}
|
¥{{ scope.row.selectedPrice }}
|
||||||
|
|
@ -51,8 +66,9 @@
|
||||||
<el-table-column prop="number" label="数量" width="250">
|
<el-table-column prop="number" label="数量" width="250">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div v-if="props.status">
|
<div v-if="props.status">
|
||||||
<el-input-number v-model="scope.row.selectedNum" :min="0" @change="handleNumChange(scope.row)"
|
<el-input-number v-model="scope.row.selectedNum" ref="inputRef" :min="0"
|
||||||
style="margin-right: 5px"></el-input-number>
|
@change="handleNumChange(scope.row)"
|
||||||
|
style="margin-right: 5px" size="small"></el-input-number>
|
||||||
<el-dropdown v-if="scope.row.trdnFlag == 1">
|
<el-dropdown v-if="scope.row.trdnFlag == 1">
|
||||||
<span style="line-height: 30px;margin-left: 10px;cursor: pointer">{{ scope.row.selectedUnit }}</span>
|
<span style="line-height: 30px;margin-left: 10px;cursor: pointer">{{ scope.row.selectedUnit }}</span>
|
||||||
<template #dropdown>
|
<template #dropdown>
|
||||||
|
|
@ -111,10 +127,12 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import SearchInput from "@/components/SearchInput.vue";
|
import SearchInput from "@/components/SearchInput.vue";
|
||||||
import Panel from "@/components/common/Panel.vue";
|
import Panel from "@/components/common/Panel.vue";
|
||||||
import {onMounted, ref} from "vue";
|
import {nextTick, onMounted, ref} from "vue";
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
import {ElMessage} from "element-plus";
|
import {ElMessage} from "element-plus";
|
||||||
import {Delete} from "@element-plus/icons-vue";
|
import {Delete} from "@element-plus/icons-vue";
|
||||||
|
import Usage from "./goodsDetail/Usage.vue"
|
||||||
|
import usageList from "@/assets/config/directory/drugMedcWayCode.json"
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
status: {
|
status: {
|
||||||
|
|
@ -126,11 +144,11 @@ const props = defineProps({
|
||||||
default: false
|
default: false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
const usage = ref('')
|
||||||
const showTooltip = ref(false);
|
const showTooltip = ref(false);
|
||||||
const goodsDetail = defineModel<any>();
|
const goodsDetail = defineModel<any>();
|
||||||
const delGoods = (item: any) => {
|
const delGoods = (item: any) => {
|
||||||
goodsDetail.value = goodsDetail.value.filter((i: any) => i.id != item.id)
|
goodsDetail.value = goodsDetail.value.filter((i: any) => i.id != item.id)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const goodsSearchApi = "goods/goods/search";
|
const goodsSearchApi = "goods/goods/search";
|
||||||
|
|
@ -168,6 +186,7 @@ const goodsShowConfig = [
|
||||||
prop: "limit",
|
prop: "limit",
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
const inputRef = ref<any>()
|
||||||
const goodsSelect = (row: any) => {
|
const goodsSelect = (row: any) => {
|
||||||
row.selectedNum = 1
|
row.selectedNum = 1
|
||||||
row.selectedUnit = row.packagingUnit
|
row.selectedUnit = row.packagingUnit
|
||||||
|
|
@ -175,7 +194,6 @@ const goodsSelect = (row: any) => {
|
||||||
row.shouldNumber = 1;
|
row.shouldNumber = 1;
|
||||||
row.idCode = row.idCode ? row.idCode == "" ? null : row.idCode.split(",") : null
|
row.idCode = row.idCode ? row.idCode == "" ? null : row.idCode.split(",") : null
|
||||||
|
|
||||||
|
|
||||||
if (goodsDetail.value.find((i: any) => i.id == row.id)) {
|
if (goodsDetail.value.find((i: any) => i.id == row.id)) {
|
||||||
ElMessage.warning("数据已存在,只能加数量")
|
ElMessage.warning("数据已存在,只能加数量")
|
||||||
goodsDetail.value.find((i: any) => i.id == row.id).selectedNum += 1
|
goodsDetail.value.find((i: any) => i.id == row.id).selectedNum += 1
|
||||||
|
|
@ -225,10 +243,9 @@ const focus = (e: any) => {
|
||||||
}
|
}
|
||||||
const hilistInfo = ref<any>({})
|
const hilistInfo = ref<any>({})
|
||||||
const getHilistInfo = (item: any) => {
|
const getHilistInfo = (item: any) => {
|
||||||
console.log("item", item)
|
|
||||||
if (item.hilistCode != null) {
|
if (item.hilistCode != null) {
|
||||||
post("social/directory/getByCode", {code: item.hilistCode}).then((res: any) => {
|
post("social/directory/getByCode", {code: item.hilistCode}).then((res: any) => {
|
||||||
if (!res){
|
if (!res) {
|
||||||
hilistInfo.value = {}
|
hilistInfo.value = {}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -243,18 +260,16 @@ const colosInfo = () => {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
:deep(.el-table tr) {
|
:deep(.el-table__cell) {
|
||||||
font-size: 16px;
|
padding: 0 4px;
|
||||||
font-weight: 500;
|
height: 36px;
|
||||||
color: #333333;
|
|
||||||
height: 60px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom {
|
.bottom {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
border-top: 1px solid #EAEAEC;
|
border-top: 1px solid #EAEAEC;
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 58px;
|
height: 36px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div>11111111</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
<el-table-column label="数量" width="250">
|
<el-table-column label="数量" width="250">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input-number v-if="props.status" v-model="scope.row.selectedNum" :min="0"
|
<el-input-number v-if="props.status" v-model="scope.row.selectedNum" :min="0"
|
||||||
@change="handleNumChange" style="margin-right: 5px"></el-input-number>
|
@change="handleNumChange" style="margin-right: 5px" size="small"></el-input-number>
|
||||||
<span v-else>{{ scope.row.selectedNum }}</span>
|
<span v-else>{{ scope.row.selectedNum }}</span>
|
||||||
{{ scope.row.selectedUnit }}
|
{{ scope.row.selectedUnit }}
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -168,18 +168,16 @@ const hide = () => {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
:deep(.el-table tr) {
|
:deep(.el-table__cell) {
|
||||||
font-size: 16px;
|
padding: 0 4px;
|
||||||
font-weight: 500;
|
height: 36px;
|
||||||
color: #333333;
|
|
||||||
height: 60px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom {
|
.bottom {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
border-top: 1px solid #EAEAEC;
|
border-top: 1px solid #EAEAEC;
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 58px;
|
height: 36px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,10 @@
|
||||||
<span>领用药品</span>
|
<span>领用药品</span>
|
||||||
<div class="search">
|
<div class="search">
|
||||||
<GoodsSearch @selectCallBack="goodsSelectCallBack"></GoodsSearch>
|
<GoodsSearch @selectCallBack="goodsSelectCallBack"></GoodsSearch>
|
||||||
|
<span class="default-btn" @click="goodsSelectCallBack">
|
||||||
|
<span class="iconfont icon-RectangleCopy"></span>
|
||||||
|
搜索
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<table class="simple-table" style="margin-top: 15px;width: 100% ;height:300px ;max-height:550px">
|
<table class="simple-table" style="margin-top: 15px;width: 100% ;height:300px ;max-height:550px">
|
||||||
|
|
@ -127,8 +131,8 @@
|
||||||
</div>
|
</div>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<el-button type="primary" @click="save">保存</el-button>
|
<span class="small-btn" @click="exit">关闭</span>
|
||||||
<el-button type="primary" @click="exit">关闭</el-button>
|
<span class="small-btn" @click="save">保存</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</Mask>
|
</Mask>
|
||||||
|
|
@ -187,9 +191,7 @@ const findIndexForTableList = (goodId: any) => {
|
||||||
return tableList.value.findIndex((item: any) => item.goodId === goodId);
|
return tableList.value.findIndex((item: any) => item.goodId === goodId);
|
||||||
}
|
}
|
||||||
const goodsSelectCallBack = (inventory: any) => {
|
const goodsSelectCallBack = (inventory: any) => {
|
||||||
if (findIndexForTableList(inventory.goodId) != -1) {
|
if (findIndexForTableList(inventory.goodId) != -1) return
|
||||||
return
|
|
||||||
}
|
|
||||||
post("inventory/goods/getByGoodsId", {goodsId: inventory.goodId,isZero:false}).then((res: any) => {
|
post("inventory/goods/getByGoodsId", {goodsId: inventory.goodId,isZero:false}).then((res: any) => {
|
||||||
inventory.batchList = res.inventoryGoodsList
|
inventory.batchList = res.inventoryGoodsList
|
||||||
inventory.minPackagingUnit = res.minPackagingUnit
|
inventory.minPackagingUnit = res.minPackagingUnit
|
||||||
|
|
@ -398,7 +400,8 @@ defineExpose({init})
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
width: 50%;
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -425,12 +425,13 @@
|
||||||
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<span class="default-btn" @click="returnInit" v-if="edit_data.id != null">医保库存重新初始化</span>
|
<span class="small-btn" @click="returnInit"
|
||||||
<span class="default-btn" v-if="edit_data.saleStatus" @click="disableSale" style="margin: 0 24px">停售</span>
|
v-if="edit_data.id != null">医保库存重新初始化</span>
|
||||||
<span class="default-btn" v-else @click="enableSale">起售</span>
|
<span class="danger-btn" v-if="edit_data.saleStatus" @click="disableSale">停售</span>
|
||||||
<span class="default-btn" @click="save(true)" style="margin: 0 24px">保存</span>
|
<span class="danger-btn" v-else @click="enableSale">起售</span>
|
||||||
<span class="default-btn" @click="save(false)" v-if="edit_data.id == null">保存并继续</span>
|
<span class="small-btn" @click="save(true)">保存</span>
|
||||||
<span class="default-btn" @click="exit" style="margin-left: 24px">关闭</span>
|
<span class="small-btn" @click="save(false)" v-if="edit_data.id == null">保存并继续</span>
|
||||||
|
<span class="small-btn" @click="exit">关闭</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</Mask>
|
</Mask>
|
||||||
|
|
@ -450,7 +451,7 @@ import {post} from "@/utils/request.ts";
|
||||||
import Cate from "@/components/inventory/goods/Cate.vue";
|
import Cate from "@/components/inventory/goods/Cate.vue";
|
||||||
import {ElMessage, ElMessageBox} from "element-plus";
|
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/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";
|
import {apiConfig} from "@/assets/config/apiConfig.ts";
|
||||||
|
|
||||||
|
|
@ -689,7 +690,8 @@ const contrastCodeConfirm = (data: any) => {
|
||||||
}
|
}
|
||||||
let save = async (isClose: Boolean) => {
|
let save = async (isClose: Boolean) => {
|
||||||
try {
|
try {
|
||||||
await formRef.value.validate()
|
const isOk = await formRef.value.validate()
|
||||||
|
if (!isOk) return
|
||||||
if (!edit_data.value.purchaseUnitPrice || edit_data.value.purchaseUnitPrice < 1) {
|
if (!edit_data.value.purchaseUnitPrice || edit_data.value.purchaseUnitPrice < 1) {
|
||||||
ElMessage.error('参考进价不能为空或小于1');
|
ElMessage.error('参考进价不能为空或小于1');
|
||||||
return
|
return
|
||||||
|
|
@ -915,11 +917,6 @@ const enableSale = () => {
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 0 24px;
|
padding: 0 24px;
|
||||||
.default-btn{
|
|
||||||
&:nth-child(1){
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
<div v-if="hilistInfo" class="hilist-detail">
|
<div v-if="hilistInfo" class="hilist-detail">
|
||||||
<div class="name">
|
<div class="name">
|
||||||
{{ hilistInfo.name }}
|
{{ hilistInfo.name }}
|
||||||
{{ hilistInfo.json?.category ? '[' + hilistInfo.json.category + ']' : '-' }}
|
{{ hilistInfo.json?.category ? '[' + hilistInfo.json.category + ']' : '' }}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
{{ hilistInfo.code }}
|
{{ hilistInfo.code }}
|
||||||
|
|
@ -86,17 +86,16 @@ onMounted(() => {
|
||||||
.hilist-code {
|
.hilist-code {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 25px;
|
height: 38px;
|
||||||
border: 1px #ddd solid;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 8px;
|
padding: 16px;
|
||||||
border-radius: 10px;
|
border-radius: 6px;
|
||||||
|
border: 1px solid #EAEAEC;
|
||||||
|
|
||||||
.name {
|
.name {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.code {
|
.code {
|
||||||
|
|
@ -107,14 +106,15 @@ onMounted(() => {
|
||||||
|
|
||||||
}
|
}
|
||||||
.hilist-detail {
|
.hilist-detail {
|
||||||
padding: base.$padding-base;
|
padding: 16px;
|
||||||
margin-top: 3px;;
|
margin-top: 8px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 250px;
|
|
||||||
border: 1px base.$border-color-base solid;
|
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
border-radius: 8px;
|
background: #F5F6F7;
|
||||||
|
border-radius: 6px;
|
||||||
|
border: 1px solid #EAEAEC;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -1,27 +1,26 @@
|
||||||
<template>
|
<template>
|
||||||
<Mask :is-show="isShow" :height="600" :width="800" @close="close" title="采集相同追溯码" :show-footer="true">
|
<Mask :is-show="isShow" :height="321" :width="818" @close="close" title="采集相同追溯码">
|
||||||
<div class="tips">
|
|
||||||
入库单位包装无追溯码时,可重复采集上层包装的追溯码
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="code">
|
<div class="top">
|
||||||
<div class="before-code">
|
<div class="tip">
|
||||||
{{ data.code.slice(0, 7) }}
|
入库单位包装无追溯码时,可重复采集上层包装的追溯码
|
||||||
|
</div>
|
||||||
|
<div class="code">
|
||||||
|
<span class="before-code">
|
||||||
|
{{ data.code.slice(0, 7) }}
|
||||||
|
</span>
|
||||||
|
<span class="after-code">
|
||||||
|
{{ data.code.slice(7) }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="after-code">
|
<div class="body">
|
||||||
{{ data.code.slice(7) }}
|
<span class="text">采集</span>
|
||||||
|
<el-input-number v-model="data.num" min="1" size="large" ref="inputRef"
|
||||||
|
@keydown.enter="close"></el-input-number>
|
||||||
|
<span class="text">条</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="number">
|
|
||||||
<span class="text">
|
|
||||||
采集
|
|
||||||
</span>
|
|
||||||
<el-input-number v-model="data.num" min="1" size="large" ref="inputRef" @keydown.enter="close"></el-input-number>
|
|
||||||
<span class="text">
|
|
||||||
条
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</Mask>
|
</Mask>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
@ -29,14 +28,14 @@ import Mask from "@/components/common/Mask.vue";
|
||||||
import {nextTick, ref} from "vue";
|
import {nextTick, ref} from "vue";
|
||||||
|
|
||||||
const data = ref<any>()
|
const data = ref<any>()
|
||||||
const emit = defineEmits(['close'])
|
const emit = defineEmits(['close', 'save'])
|
||||||
|
|
||||||
const inputRef = ref<any>()
|
const inputRef = ref<any>()
|
||||||
|
|
||||||
const init = (codeInfo: any) => {
|
const init = (codeInfo: any) => {
|
||||||
isShow.value = true
|
isShow.value = true
|
||||||
data.value = codeInfo
|
data.value = codeInfo
|
||||||
nextTick(()=>{
|
nextTick(() => {
|
||||||
inputRef.value?.focus()
|
inputRef.value?.focus()
|
||||||
const inputElement = inputRef.value?.$el?.querySelector('input');
|
const inputElement = inputRef.value?.$el?.querySelector('input');
|
||||||
if (inputElement) {
|
if (inputElement) {
|
||||||
|
|
@ -51,45 +50,77 @@ const close = () => {
|
||||||
emit('close')
|
emit('close')
|
||||||
isShow.value = false
|
isShow.value = false
|
||||||
}
|
}
|
||||||
|
const save = () => {
|
||||||
|
emit('save', data.value)
|
||||||
|
isShow.value = false
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.tips{
|
.content {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
}
|
.top {
|
||||||
.content{
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
margin: 40px;
|
|
||||||
border-radius: 10px;
|
|
||||||
.code {
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
font-weight: 800;
|
height: 126px;
|
||||||
font-size: 30px;
|
background: #F9FAFC;
|
||||||
color: #333333;
|
display: flex;
|
||||||
padding: 40px 0;
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 20px;
|
||||||
|
color: #666666;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
display: flex;
|
padding: 24px;
|
||||||
justify-content: center;
|
|
||||||
border-bottom: 1px solid #ddd;
|
|
||||||
.before-code {
|
|
||||||
color: #999999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.after-code {
|
.code {
|
||||||
margin-left: 10px;
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
font-weight: 800;
|
||||||
|
font-size: 30px;
|
||||||
|
color: #999999;
|
||||||
|
font-style: normal;
|
||||||
|
|
||||||
|
.after-code {
|
||||||
|
color: #333;
|
||||||
|
margin-left: 10px;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.number{
|
|
||||||
|
|
||||||
padding: 40px 0;
|
.body {
|
||||||
width: 100%;
|
flex: 1;
|
||||||
|
min-height: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
.text{
|
align-items: center;
|
||||||
font-size: 24px;
|
|
||||||
line-height: 40px;
|
.text {
|
||||||
text-align: center;
|
margin: 0 16px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
height: 100%;
|
||||||
|
padding: 24px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.default-btn, .btn {
|
||||||
|
width: 60px;
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
margin-left: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
{{ row.code.slice(0, 7) }} {{ row.code.slice(7) }}
|
{{ row.code.slice(0, 7) }} {{ row.code.slice(7) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="数量" prop="num" width="70">
|
<el-table-column label="数量" prop="num" width="70" show-overflow-tooltip>
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
<span class="edit" @click="openCodeNumEdit(row)">
|
<span class="edit" @click="openCodeNumEdit(row)">
|
||||||
{{ row.num }}
|
{{ row.num }}
|
||||||
|
|
@ -83,9 +83,7 @@ const openCodeNumEdit = (row: any) => {
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.code-popo {
|
.code-popo {
|
||||||
.edit{
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.remove {
|
.remove {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
|
|
@ -94,4 +92,13 @@ const openCodeNumEdit = (row: any) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:deep(.el-table td.el-table__cell) {
|
||||||
|
.edit {
|
||||||
|
cursor: pointer;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
color: #4d6de4;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -48,8 +48,8 @@
|
||||||
</div>
|
</div>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<span class="default-btn" @click="save">确定</span>
|
<span class="small-btn" @click="close">取消</span>
|
||||||
<span class="default-btn" @click="close" style="margin-left: 24px">取消</span>
|
<span class="small-btn" @click="save">确定</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</Mask>
|
</Mask>
|
||||||
|
|
|
||||||
|
|
@ -48,8 +48,8 @@
|
||||||
<el-checkbox v-model="printReceipt">同时打印凭证</el-checkbox>
|
<el-checkbox v-model="printReceipt">同时打印凭证</el-checkbox>
|
||||||
</div>
|
</div>
|
||||||
<div style="display:flex;">
|
<div style="display:flex;">
|
||||||
<div class="default-btn" @click="reduceIntegral">兑换</div>
|
<div class="small-btn" @click="close">取消</div>
|
||||||
<div class="default-btn" style="margin-left: 24px" @click="close">取消</div>
|
<div class="small-btn" @click="reduceIntegral">兑换</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -122,6 +122,7 @@ const reduceIntegral = () => {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin-left: 16px;
|
margin-left: 16px;
|
||||||
|
|
||||||
.name {
|
.name {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
|
|
|
||||||
|
|
@ -45,8 +45,8 @@
|
||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<div class="default-btn" @click="grant()">发放</div>
|
<div class="small-btn" @click="close">取消</div>
|
||||||
<div class="default-btn" style="margin-left: 24px" @click="close">取消</div>
|
<div class="small-btn" @click="grant()">发放</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</Mask>
|
</Mask>
|
||||||
|
|
|
||||||
|
|
@ -186,10 +186,8 @@
|
||||||
退出医保
|
退出医保
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-right">
|
<div class="bottom-right">
|
||||||
<el-button @click="close">取消</el-button>
|
<span class="default-btn" @click="close">取消</span>
|
||||||
<el-button type="primary" @click="submitForm">
|
<span class="default-btn" @click="submitForm">保存</span>
|
||||||
保存
|
|
||||||
</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
<PopoverInput :disabled="props.disabled" v-model="formDate.allergyHistory" :list="allergyHistoryList"/>
|
<PopoverInput :disabled="props.disabled" v-model="formDate.allergyHistory" :list="allergyHistoryList"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="体格检查:" v-if="!props.isShowFrom">
|
<el-form-item label="体格检查:" v-if="!props.isShowFrom">
|
||||||
<PhysiqueExamInuput :disabled="props.disabled" v-model="formDate.exam" :list="physiqueExamList"/>
|
<PhysiqueExamInput :disabled="props.disabled" v-model="formDate.exam" :list="physiqueExamList"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="望闻问切:" v-if="formDate.diagType==1&&!props.isShowFrom">
|
<el-form-item label="望闻问切:" v-if="formDate.diagType==1&&!props.isShowFrom">
|
||||||
<PopoverInput :disabled="props.disabled" v-model="formDate.chinaAdjunctCheck" :list="chinaAdjunctCheckList"/>
|
<PopoverInput :disabled="props.disabled" v-model="formDate.chinaAdjunctCheck" :list="chinaAdjunctCheckList"/>
|
||||||
|
|
@ -75,7 +75,8 @@ import {
|
||||||
import Panel from "@/components/common/Panel.vue";
|
import Panel from "@/components/common/Panel.vue";
|
||||||
import PopoverInput from "@/components/PopoverInput.vue";
|
import PopoverInput from "@/components/PopoverInput.vue";
|
||||||
import DiagnosisSearchInput from "@/components/outpatient/DiagnosisSearchInput.vue";
|
import DiagnosisSearchInput from "@/components/outpatient/DiagnosisSearchInput.vue";
|
||||||
import PhysiqueExamInuput from "@/components/outpatient/PhysiqueExamInuput.vue";
|
import PhysiqueExamInput from "@/components/outpatient/PhysiqueExamInput.vue";
|
||||||
|
import {apiConfig} from "@/assets/config/apiConfig.ts";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
disabled: {
|
disabled: {
|
||||||
|
|
@ -94,7 +95,7 @@ interface ShowConfig {
|
||||||
prop: string;
|
prop: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const diagnosisSearchApi = "social/diagnose/search"
|
const diagnosisSearchApi = apiConfig.SocialDiagnoseSearch
|
||||||
const diagnosisShowConfig: ShowConfig[] = [
|
const diagnosisShowConfig: ShowConfig[] = [
|
||||||
{
|
{
|
||||||
label: "诊断名称",
|
label: "诊断名称",
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ const props = defineProps({
|
||||||
default: 0
|
default: 0
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
console.log(props.status)
|
|
||||||
const list = ref<any>([])
|
const list = ref<any>([])
|
||||||
const init = (patientId: any) => {
|
const init = (patientId: any) => {
|
||||||
post("medical/record/listByPatient", {patientId: patientId}).then((res: any) => {
|
post("medical/record/listByPatient", {patientId: patientId}).then((res: any) => {
|
||||||
|
|
|
||||||
|
|
@ -30,15 +30,16 @@
|
||||||
<el-scrollbar style="height: 100%">
|
<el-scrollbar style="height: 100%">
|
||||||
<li class="list-item" :class="curItem?.id == item.id ? 'active' : ''" v-for="(item, index) in list"
|
<li class="list-item" :class="curItem?.id == item.id ? 'active' : ''" v-for="(item, index) in list"
|
||||||
:key="index" @click="clickLi(item)">
|
:key="index" @click="clickLi(item)">
|
||||||
<span class="item-avatar">
|
<div class="item-avatar">
|
||||||
<img v-if="item.gender==1" class="avatar" src="/static/images/outpatient/man.png"
|
<img v-if="item.gender==1" class="avatar" src="/static/images/outpatient/man.png"
|
||||||
alt="头像"/>
|
alt="头像"/>
|
||||||
<img v-if="item.gender==2" class="avatar" src="/static/images/outpatient/women.png"
|
<img v-if="item.gender==2" class="avatar" src="/static/images/outpatient/women.png"
|
||||||
alt="头像"/>
|
alt="头像"/>
|
||||||
</span>
|
<i v-if="item.isAppointment" class="iconfont icon-yuyueh yuYueIcon"></i>
|
||||||
|
</div>
|
||||||
<span class="item-name">{{ item.name }}</span>
|
<span class="item-name">{{ item.name }}</span>
|
||||||
<span class="item-time">
|
<span class="item-time">
|
||||||
{{ formatListTime(item.createDatetime)}}
|
{{ formatListTime(item.appointmentTime) }}
|
||||||
</span>
|
</span>
|
||||||
<span class="item-type">{{ item.type == 2 ? '医保' : '自费' }}</span>
|
<span class="item-type">{{ item.type == 2 ? '医保' : '自费' }}</span>
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -104,7 +105,7 @@ onMounted(() => {
|
||||||
// 启动定时器,每秒更新一次
|
// 启动定时器,每秒更新一次
|
||||||
refreshInterval = setInterval(() => {
|
refreshInterval = setInterval(() => {
|
||||||
initList()
|
initList()
|
||||||
}, 60*1000); // 每1000毫秒(即1秒)执行一次
|
}, 60 * 1000); // 每1000毫秒(即1秒)执行一次
|
||||||
})
|
})
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
// 组件卸载时清除定时器
|
// 组件卸载时清除定时器
|
||||||
|
|
@ -143,7 +144,7 @@ const init = async () => {
|
||||||
clickLi(null)
|
clickLi(null)
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
let data: any = await post(apiConfig.RegistrationList, {
|
let data: any = await post(apiConfig.RegistrationListByType, {
|
||||||
query: {
|
query: {
|
||||||
status: curStatus.value,
|
status: curStatus.value,
|
||||||
beginTime: selectedDate.value,
|
beginTime: selectedDate.value,
|
||||||
|
|
@ -167,7 +168,7 @@ const init = async () => {
|
||||||
initStatusList()
|
initStatusList()
|
||||||
}
|
}
|
||||||
const initStatusList = () => {
|
const initStatusList = () => {
|
||||||
post('statistics/getTipCount', {
|
post(apiConfig.StatisticsGetTipCount, {
|
||||||
beginTime: selectedDate.value,
|
beginTime: selectedDate.value,
|
||||||
endTime: getEndOfDay(new Date(selectedDate.value))
|
endTime: getEndOfDay(new Date(selectedDate.value))
|
||||||
}).then((res: any) => {
|
}).then((res: any) => {
|
||||||
|
|
@ -191,11 +192,12 @@ const clickLi = (item: any, showBox: any = true) => {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (action == "confirm") {
|
if (action == "confirm") {
|
||||||
post('registration/changeStatus', {id: item.id, status: 2}).then((res: any) => {
|
post(apiConfig.RegistrationChangeStatus, {id: item.id, status: 2}).then((res: any) => {
|
||||||
curStatus.value = 2
|
curStatus.value = 2
|
||||||
curItem.value = res
|
curItem.value = res
|
||||||
initStatusList()
|
initStatusList()
|
||||||
emit('clickItem', curItem.value)
|
emit('clickItem', curItem.value)
|
||||||
|
selectedDate.value = getCurrentDate()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -206,16 +208,28 @@ const clickLi = (item: any, showBox: any = true) => {
|
||||||
|
|
||||||
}
|
}
|
||||||
const changeCurItemOrStatus = (item: any, status: any) => {
|
const changeCurItemOrStatus = (item: any, status: any) => {
|
||||||
clickLi(item, false)
|
curStatus.value = status
|
||||||
if (curStatus != null) {
|
curItem.value = item
|
||||||
curStatus.value = status
|
clickTab({status: status})
|
||||||
|
if (status == 1) {
|
||||||
|
// selectedDate.value = formatDate(item.appointmentTime)
|
||||||
init()
|
init()
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
if (item != null && status != 1) {
|
||||||
|
clickLi(item);
|
||||||
|
}
|
||||||
|
init()
|
||||||
}
|
}
|
||||||
defineExpose({changeCurItemOrStatus})
|
defineExpose({changeCurItemOrStatus})
|
||||||
watch(() => curStatus.value, () => {
|
watch(() => curStatus.value, () => {
|
||||||
init() // 重新初始化数据
|
init() // 重新初始化数据
|
||||||
})
|
})
|
||||||
|
const formatDate = (isoStr: any) => {
|
||||||
|
if (!isoStr) return ''
|
||||||
|
const date = new Date(isoStr);
|
||||||
|
return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`;
|
||||||
|
}
|
||||||
const setDateTip = () => {
|
const setDateTip = () => {
|
||||||
const seletctedDateObj = new Date(selectedDate.value);
|
const seletctedDateObj = new Date(selectedDate.value);
|
||||||
//如果选择的日期是今天
|
//如果选择的日期是今天
|
||||||
|
|
@ -234,7 +248,7 @@ const setDateTip = () => {
|
||||||
|
|
||||||
}
|
}
|
||||||
watch(() => selectedDate.value, (newValue, oldValue) => {
|
watch(() => selectedDate.value, (newValue, oldValue) => {
|
||||||
curItem.value=null
|
curItem.value = null
|
||||||
emit('clickItem', curItem.value)
|
emit('clickItem', curItem.value)
|
||||||
if (newValue == oldValue) {
|
if (newValue == oldValue) {
|
||||||
init()
|
init()
|
||||||
|
|
@ -329,6 +343,21 @@ watch(() => selectedDate.value, (newValue, oldValue) => {
|
||||||
.item-avatar {
|
.item-avatar {
|
||||||
width: 26px;
|
width: 26px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.yuYueIcon {
|
||||||
|
display: inline-block;
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 11px;
|
||||||
|
right: -1px;
|
||||||
|
color: #31e3ca;
|
||||||
|
font-size: 12px;
|
||||||
|
z-index: 99;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
.avatar {
|
.avatar {
|
||||||
margin-top: 11px;
|
margin-top: 11px;
|
||||||
|
|
@ -403,5 +432,4 @@ watch(() => selectedDate.value, (newValue, oldValue) => {
|
||||||
right: 0;
|
right: 0;
|
||||||
top: 50px;
|
top: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -20,7 +20,7 @@ const editItem= () => {
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<div>总金额:<span class="text icon">¥</span><span class="text">{{ totalAmount || '0' }}</span></div>
|
<div>总金额:<span class="text icon">¥</span><span class="text">{{ totalAmount || '0' }}</span></div>
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<span class="default-btn" v-if="status" @click="deleteItem">取消接诊</span>
|
<span class="default-close-btn" v-if="status" @click="deleteItem">取消接诊</span>
|
||||||
<span class="default-btn" v-if="status" @click="save">完成接诊</span>
|
<span class="default-btn" v-if="status" @click="save">完成接诊</span>
|
||||||
<!-- <el-button v-if="status == 3" type="primary" @click="editItem">修改</el-button>-->
|
<!-- <el-button v-if="status == 3" type="primary" @click="editItem">修改</el-button>-->
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -2,128 +2,126 @@
|
||||||
<Mask :is-show="isShow" width="800" :height="height" title="挂号" @close="close"
|
<Mask :is-show="isShow" width="800" :height="height" title="挂号" @close="close"
|
||||||
:show-footer="true">
|
:show-footer="true">
|
||||||
<template #default>
|
<template #default>
|
||||||
<div style="padding:0 24px;height: 100%;display: flex;flex-direction: column">
|
<div style="padding:0 24px 24px;height: 100%;display: flex;flex-direction: column">
|
||||||
<el-form
|
<el-scrollbar>
|
||||||
v-loading="loading"
|
<el-form
|
||||||
:model="edit_data"
|
v-loading="loading"
|
||||||
label-width="auto"
|
:model="edit_data"
|
||||||
:rules="rules"
|
label-width="auto"
|
||||||
ref="form"
|
:rules="rules"
|
||||||
style="flex: 1;width: 100%"
|
ref="form"
|
||||||
>
|
style="flex: 1;width: 100%"
|
||||||
<el-descriptions
|
|
||||||
border
|
|
||||||
direction="vertical"
|
|
||||||
:column="4"
|
|
||||||
style="margin-top: 20px"
|
|
||||||
>
|
>
|
||||||
<el-descriptions-item label="姓名" width="200">
|
<el-descriptions
|
||||||
<el-form-item prop="name" style="margin-bottom: 2px">
|
border
|
||||||
<el-input v-model="edit_data.name" placeholder="请输入姓名" clearable
|
direction="vertical"
|
||||||
:disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0"></el-input>
|
:column="4"
|
||||||
</el-form-item>
|
style="margin-top: 20px"
|
||||||
</el-descriptions-item>
|
>
|
||||||
<el-descriptions-item label="性别" width="200">
|
<el-descriptions-item label="姓名" width="200">
|
||||||
<el-form-item prop="gender">
|
<el-form-item prop="name" style="margin-bottom: 2px">
|
||||||
<el-radio-group v-model="edit_data.gender"
|
<el-input v-model="edit_data.name" placeholder="请输入姓名" clearable
|
||||||
:disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0">
|
:disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0"></el-input>
|
||||||
<el-radio :value="1">男</el-radio>
|
|
||||||
<el-radio :value="2">女</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="年龄" width="200">
|
|
||||||
<el-form-item prop="age">
|
|
||||||
<el-input v-model.number="edit_data.age" placeholder="请输入年龄"
|
|
||||||
:disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="手机号" width="200">
|
|
||||||
<el-form-item prop="phone">
|
|
||||||
<el-input v-model="edit_data.phone" placeholder="手机号"
|
|
||||||
:disabled="edit_data.status==3||edit_data.status==0"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="医生">
|
|
||||||
<el-form-item prop="organizationDoctorId">
|
|
||||||
<el-select
|
|
||||||
v-model="edit_data.organizationDoctorId"
|
|
||||||
placeholder="请选择医生"
|
|
||||||
@change="getSectionList"
|
|
||||||
:disabled="edit_data.status==3||edit_data.status==0"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in doctorList"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id"
|
|
||||||
>
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="科室">
|
|
||||||
<el-form-item>
|
|
||||||
<el-select
|
|
||||||
v-model="edit_data.organizationSectionId"
|
|
||||||
placeholder="选择科室"
|
|
||||||
:disabled="edit_data.status==3||edit_data.status==0"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in sectionList"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="证件类型">
|
|
||||||
<el-form-item prop="certType">
|
|
||||||
<el-select v-model="edit_data.certType" placeholder="证件类型"
|
|
||||||
:disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0">
|
|
||||||
<el-option
|
|
||||||
v-for="item in certTypeList"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id"
|
|
||||||
></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="证件码">
|
|
||||||
<el-form-item prop="certNo">
|
|
||||||
<el-input v-model="edit_data.certNo" placeholder="请输入证件码"
|
|
||||||
:disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="初/复诊">
|
|
||||||
<el-form-item prop="visitType">
|
|
||||||
<el-select v-model="edit_data.visitType" placeholder="就诊类型" :disabled="edit_data.status==0">
|
|
||||||
<el-option label="初诊" :value="0"></el-option>
|
|
||||||
<el-option label="复诊" :value="1"></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="费用类型">
|
|
||||||
<el-form-item prop="type">
|
|
||||||
<el-select v-model="edit_data.type" :disabled="edit_data.status==0||isShowCard">
|
|
||||||
<el-option label="自费" :value="1"></el-option>
|
|
||||||
<el-option label="医保" :value="2"></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item
|
|
||||||
:span="2"
|
|
||||||
label="时间">
|
|
||||||
|
|
||||||
|
|
||||||
<div style=" display: flex;justify-content: space-between">
|
|
||||||
<el-form-item style="flex: 1;min-width: 0" v-if="!isBtnShow&&dateName!='预约'">
|
|
||||||
<div style="width: 100%">现在</div>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-else style="flex: 1;min-width: 0" prop="date">
|
</el-descriptions-item>
|
||||||
<div style="display: flex">
|
<el-descriptions-item label="性别" width="200">
|
||||||
|
<el-form-item prop="gender">
|
||||||
|
<el-radio-group v-model="edit_data.gender"
|
||||||
|
:disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0">
|
||||||
|
<el-radio :value="1">男</el-radio>
|
||||||
|
<el-radio :value="2">女</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="年龄" width="200">
|
||||||
|
<el-form-item prop="age">
|
||||||
|
<el-input v-model.number="edit_data.age" placeholder="请输入年龄"
|
||||||
|
:disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="手机号" width="200">
|
||||||
|
<el-form-item prop="phone">
|
||||||
|
<el-input v-model="edit_data.phone" placeholder="手机号"
|
||||||
|
:disabled="edit_data.status==3||edit_data.status==0"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="医生">
|
||||||
|
<el-form-item prop="organizationDoctorId">
|
||||||
|
<el-select
|
||||||
|
v-model="edit_data.organizationDoctorId"
|
||||||
|
placeholder="请选择医生"
|
||||||
|
@change="getSectionList"
|
||||||
|
:disabled="edit_data.status==3||edit_data.status==0"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in doctorList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="科室">
|
||||||
|
<el-form-item>
|
||||||
|
<el-select
|
||||||
|
v-model="edit_data.organizationSectionId"
|
||||||
|
placeholder="选择科室"
|
||||||
|
:disabled="edit_data.status==3||edit_data.status==0"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in sectionList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="证件类型">
|
||||||
|
<el-form-item prop="certType">
|
||||||
|
<el-select v-model="edit_data.certType" placeholder="证件类型"
|
||||||
|
:disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0">
|
||||||
|
<el-option
|
||||||
|
v-for="item in certTypeList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="证件码">
|
||||||
|
<el-form-item prop="certNo">
|
||||||
|
<el-input v-model="edit_data.certNo" placeholder="请输入证件码"
|
||||||
|
:disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="初/复诊">
|
||||||
|
<el-form-item prop="visitType">
|
||||||
|
<el-select v-model="edit_data.visitType" placeholder="就诊类型" :disabled="edit_data.status==0">
|
||||||
|
<el-option label="初诊" :value="0"></el-option>
|
||||||
|
<el-option label="复诊" :value="1"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="费用类型">
|
||||||
|
<el-form-item prop="type">
|
||||||
|
<el-select v-model="edit_data.type" :disabled="edit_data.status==0||isShowCard">
|
||||||
|
<el-option label="自费" :value="1"></el-option>
|
||||||
|
<el-option label="医保" :value="2"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item
|
||||||
|
:span="2"
|
||||||
|
label="时间">
|
||||||
|
|
||||||
|
|
||||||
|
<div style=" display: flex;">
|
||||||
|
<div style="flex: 1;min-width: 0" v-if="!isBtnShow&&dateName!='预约'">现在</div>
|
||||||
|
<div v-else style="flex:1;min-width:0;display: flex;align-items: center">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="edit_data.date"
|
v-model="edit_data.date"
|
||||||
type="date"
|
type="date"
|
||||||
|
|
@ -134,53 +132,55 @@
|
||||||
:disabledDate="disabledDate"
|
:disabledDate="disabledDate"
|
||||||
/>
|
/>
|
||||||
<el-time-select
|
<el-time-select
|
||||||
v-model="time"
|
v-model="edit_data.time"
|
||||||
start="00:00"
|
start="08:00"
|
||||||
step="00:15"
|
step="00:15"
|
||||||
end="23:45"
|
end="22:00"
|
||||||
:min-time="getCurrentTime(edit_data.date)"
|
:min-time="getCurrentTime(edit_data.date)"
|
||||||
placeholder="选择时间"
|
placeholder="选择时间"
|
||||||
style="width: 50%"
|
style="width: 50%"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<span v-if="dateName!='预约'"
|
||||||
|
:class="{disabled:edit_data.status==1||edit_data.status==3||edit_data.status==0}"
|
||||||
|
class="small-btn" @click="changeBtn">{{
|
||||||
|
isBtnShow ? '挂号' : '预约'
|
||||||
|
}}</span>
|
||||||
|
</div>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item
|
||||||
|
:span="4"
|
||||||
|
label="备注">
|
||||||
|
<el-form-item>
|
||||||
|
<el-input v-model="edit_data.memo" placeholder="备注" :disabled="edit_data.status==0"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<span v-if="dateName!='预约'" class="small-btn" @click="changeBtn">{{
|
</el-descriptions-item>
|
||||||
isBtnShow ? '挂号' : '预约'
|
</el-descriptions>
|
||||||
}}</span>
|
</el-form>
|
||||||
</div>
|
<h5 v-if="!isShowCard" style="margin:24px 0;font-size: 16px">险种列表</h5>
|
||||||
</el-descriptions-item>
|
<el-table
|
||||||
<el-descriptions-item
|
:data="tableData"
|
||||||
:span="4"
|
style="width: 100%;flex: 1"
|
||||||
label="备注">
|
v-if="!isShowCard"
|
||||||
<el-form-item>
|
highlight-current-row
|
||||||
<el-input v-model="edit_data.memo" placeholder="备注" :disabled="edit_data.status==0"></el-input>
|
ref="multipleTable"
|
||||||
</el-form-item>
|
@current-change="handleCurrentChange"
|
||||||
</el-descriptions-item>
|
>
|
||||||
</el-descriptions>
|
<el-table-column label="险种类型" prop="insutype">
|
||||||
</el-form>
|
<template #default="scope">
|
||||||
<h5 v-if="!isShowCard" style="margin:24px 0;font-size: 16px">险种列表</h5>
|
{{ getKey(insutypes, scope.row.insutype) }}
|
||||||
<el-table
|
</template>
|
||||||
:data="tableData"
|
</el-table-column>
|
||||||
style="width: 100%;flex: 1"
|
<el-table-column label="待遇状态">
|
||||||
v-if="!isShowCard"
|
</el-table-column>
|
||||||
highlight-current-row
|
<el-table-column label="参保日期" prop="psn_insu_date"></el-table-column>
|
||||||
ref="multipleTable"
|
<el-table-column label="剩余余额" prop="balc">
|
||||||
@current-change="handleCurrentChange"
|
<template #default="scope">
|
||||||
>
|
¥{{ scope.row.balc || 0 }}
|
||||||
<el-table-column label="险种类型" prop="insutype">
|
</template>
|
||||||
<template #default="scope">
|
</el-table-column>
|
||||||
{{ getKey(insutypes, scope.row.insutype) }}
|
</el-table>
|
||||||
</template>
|
</el-scrollbar>
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="待遇状态">
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="参保日期" prop="psn_insu_date"></el-table-column>
|
|
||||||
<el-table-column label="剩余余额" prop="balc">
|
|
||||||
<template #default="scope">
|
|
||||||
¥{{ scope.row.balc || 0 }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
|
|
@ -204,9 +204,9 @@
|
||||||
退出医保
|
退出医保
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-right">
|
<div class="bottom-right">
|
||||||
<span class="default-btn" type="primary" @click="save">保存</span>
|
<span class="close-btn" @click="close">取消</span>
|
||||||
<span class="default-btn" @click="close" style="margin: 0 24px">取消</span>
|
<span class="danger-btn" v-if="edit_data.status==1" @click="registrationCancel">退号</span>
|
||||||
<span class="default-btn" v-if="edit_data.status==1" @click="registrationCancel">退号</span>
|
<span class="small-btn" @click="save">保存</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -227,11 +227,7 @@ import Quick from "@/components/charge/RecordsLog/Quick.vue";
|
||||||
import {getCurrentTime, getToday} from "@/utils/dateUtils.ts";
|
import {getCurrentTime, getToday} from "@/utils/dateUtils.ts";
|
||||||
|
|
||||||
const height = ref(570)
|
const height = ref(570)
|
||||||
const certTypeList = ref<any>(
|
const certTypeList = ref<any>([])
|
||||||
Object.entries(psnCertTypes)
|
|
||||||
.map(([id, name]) => ({id: Number(id), name}))
|
|
||||||
.sort((a, b) => a.id - b.id)
|
|
||||||
)
|
|
||||||
const edit_data = ref<any>({
|
const edit_data = ref<any>({
|
||||||
timeList: []
|
timeList: []
|
||||||
})
|
})
|
||||||
|
|
@ -252,11 +248,11 @@ const rules = ref<any>({
|
||||||
phone: [
|
phone: [
|
||||||
{required: true, message: '请输入手机号', trigger: 'blur'},
|
{required: true, message: '请输入手机号', trigger: 'blur'},
|
||||||
],
|
],
|
||||||
organzationDoctorId: [
|
organizationDoctorId: [
|
||||||
{required: true, message: '请选择医生', trigger: 'blur'},
|
{required: true, message: '请选择医生', trigger: 'change'},
|
||||||
],
|
],
|
||||||
certType: [
|
certType: [
|
||||||
{required: true, message: '请选择证件类型', trigger: 'blur'},
|
{required: true, message: '请选择证件类型', trigger: 'change'},
|
||||||
],
|
],
|
||||||
certNo: [
|
certNo: [
|
||||||
{required: true, message: '请输入证件码', trigger: 'blur'},
|
{required: true, message: '请输入证件码', trigger: 'blur'},
|
||||||
|
|
@ -278,9 +274,7 @@ const close = () => {
|
||||||
isBtnShow.value = true
|
isBtnShow.value = true
|
||||||
time.value = ''
|
time.value = ''
|
||||||
edit_data.value = {
|
edit_data.value = {
|
||||||
timeList: [],
|
|
||||||
insutype: '',
|
insutype: '',
|
||||||
appointmentTime: ''
|
|
||||||
}
|
}
|
||||||
isShowCard.value = true
|
isShowCard.value = true
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
|
|
@ -297,26 +291,27 @@ const disabledDate = (date: Date) => {
|
||||||
today.setHours(0, 0, 0, 0); // 将时间设置为今天的 00:00:00
|
today.setHours(0, 0, 0, 0); // 将时间设置为今天的 00:00:00
|
||||||
return date < today; // 禁用今天之前的日期
|
return date < today; // 禁用今天之前的日期
|
||||||
};
|
};
|
||||||
|
const timeList = ref<any>([])
|
||||||
const dateName = defineModel()
|
const dateName = defineModel()
|
||||||
const save = () => {
|
const save = () => {
|
||||||
if (dateName.value == '现在') {
|
|
||||||
edit_data.value.timeList = ''
|
|
||||||
edit_data.value.appointmentTime = ''
|
|
||||||
} else {
|
|
||||||
edit_data.value.timeList.push(edit_data.value.date, time.value)
|
|
||||||
edit_data.value.appointmentTime = edit_data.value.timeList.join(' ')
|
|
||||||
}
|
|
||||||
let data = {
|
|
||||||
...edit_data.value,
|
|
||||||
psnNo: socialCard.value?.data?.baseinfo.psn_no,
|
|
||||||
insutype: edit_data.value.insutype || socialCard.value?.data?.insuinfo[0].insutype,
|
|
||||||
insuBalance: socialCard.value?.data?.insuinfo[0].balc,
|
|
||||||
|
|
||||||
}
|
|
||||||
form.value.validate((v: any) => {
|
form.value.validate((v: any) => {
|
||||||
if (v) {
|
if (v) {
|
||||||
|
let combinedDateTime = ''
|
||||||
|
if (edit_data.value.date == undefined || edit_data.value.time == undefined) {
|
||||||
|
combinedDateTime = ''
|
||||||
|
} else {
|
||||||
|
combinedDateTime = `${edit_data.value.date} ${edit_data.value.time}`
|
||||||
|
}
|
||||||
|
let data = {
|
||||||
|
...edit_data.value,
|
||||||
|
appointmentTime: combinedDateTime || '',
|
||||||
|
psnNo: socialCard.value?.data?.baseinfo.psn_no,
|
||||||
|
insutype: edit_data.value.insutype || socialCard.value?.data?.insuinfo[0].insutype,
|
||||||
|
insuBalance: socialCard.value?.data?.insuinfo[0].balc,
|
||||||
|
|
||||||
|
}
|
||||||
if (edit_data.value.id) {
|
if (edit_data.value.id) {
|
||||||
post('registration/edit', {
|
post(apiConfig.RegistrationEdit, {
|
||||||
data: data, mdtrtCertNo: socialCard.value?.mdtrtCertNo,
|
data: data, mdtrtCertNo: socialCard.value?.mdtrtCertNo,
|
||||||
mdtrtCertType: socialCard.value?.mdtrtCertType
|
mdtrtCertType: socialCard.value?.mdtrtCertType
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
|
@ -324,7 +319,7 @@ const save = () => {
|
||||||
close()
|
close()
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
post('registration/add', {
|
post(apiConfig.RegistrationAdd, {
|
||||||
data: data,
|
data: data,
|
||||||
mdtrtCertNo: socialCard.value?.mdtrtCertNo,
|
mdtrtCertNo: socialCard.value?.mdtrtCertNo,
|
||||||
mdtrtCertType: socialCard.value?.mdtrtCertType
|
mdtrtCertType: socialCard.value?.mdtrtCertType
|
||||||
|
|
@ -368,6 +363,9 @@ const socialCard: any = ref({
|
||||||
})
|
})
|
||||||
const quickShow = ref<any>(false)
|
const quickShow = ref<any>(false)
|
||||||
const init = (doctorId: any = "", id: any = null, show: any = false) => {
|
const init = (doctorId: any = "", id: any = null, show: any = false) => {
|
||||||
|
certTypeList.value = Object.entries(psnCertTypes)
|
||||||
|
.map(([id, name]) => ({id, name}))
|
||||||
|
.sort((a, b) => Number(a.id) - Number(b.id))
|
||||||
isShow.value = true
|
isShow.value = true
|
||||||
quickShow.value = show
|
quickShow.value = show
|
||||||
edit_data.value.organizationDoctorId = doctorId || ""
|
edit_data.value.organizationDoctorId = doctorId || ""
|
||||||
|
|
@ -376,7 +374,6 @@ const init = (doctorId: any = "", id: any = null, show: any = false) => {
|
||||||
if (id) {
|
if (id) {
|
||||||
post('registration/getById', {id: id}).then((res: any) => {
|
post('registration/getById', {id: id}).then((res: any) => {
|
||||||
edit_data.value = res
|
edit_data.value = res
|
||||||
edit_data.value.certType = Number(edit_data.value.certType)
|
|
||||||
time.value = edit_data.value.timeList[edit_data.value.timeList.length - 1]
|
time.value = edit_data.value.timeList[edit_data.value.timeList.length - 1]
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -388,31 +385,24 @@ const tableData = ref<any>([])
|
||||||
const multipleTable = ref<any>()
|
const multipleTable = ref<any>()
|
||||||
const socialCardUpdate = (e: any) => {
|
const socialCardUpdate = (e: any) => {
|
||||||
isShowCard.value = false
|
isShowCard.value = false
|
||||||
if (e) {
|
if (!e) return;
|
||||||
isShowCard.value = false
|
isShowCard.value = false
|
||||||
edit_data.value.gender = Number(e.data.baseinfo.gend)
|
edit_data.value.gender = Number(e.data.baseinfo.gend)
|
||||||
edit_data.value.name = e.data.baseinfo.psn_name
|
edit_data.value.name = e.data.baseinfo.psn_name
|
||||||
edit_data.value.certType = Number(e.data.baseinfo.psn_cert_type)
|
edit_data.value.certType = e.data.baseinfo.psn_cert_type
|
||||||
edit_data.value.certNo = e.data.baseinfo.certno
|
edit_data.value.certNo = e.data.baseinfo.certno
|
||||||
edit_data.value.age = Math.floor(e.data.baseinfo.age)
|
edit_data.value.age = Math.floor(e.data.baseinfo.age)
|
||||||
tableData.value = e.data.insuinfo
|
tableData.value = e.data.insuinfo
|
||||||
edit_data.value.type = 2
|
edit_data.value.type = 2
|
||||||
if (edit_data.value.certNo) {
|
if (!edit_data.value.certNo) return;
|
||||||
post('vip/vip/list', {
|
post('vip/vip/list', {
|
||||||
keyword: edit_data.value.certNo,
|
keyword: edit_data.value.certNo,
|
||||||
page: 1,
|
page: 1,
|
||||||
pageSize: 50
|
pageSize: 50
|
||||||
}).then((res: any) => {
|
}).then((res: any) => {
|
||||||
edit_data.value.name = res.list[0].name
|
edit_data.value.phone = res.list[0].phone
|
||||||
edit_data.value.gender = res.list[0].sex
|
})
|
||||||
edit_data.value.phone = res.list[0].phone
|
|
||||||
edit_data.value.certType = Number(res.list[0].certType)
|
|
||||||
edit_data.value.certNo = res.list[0].certNo
|
|
||||||
edit_data.value.memo = res.list[0].remark
|
|
||||||
edit_data.value.visitType = 1
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
if (tableData.value.length > 0) {
|
if (tableData.value.length > 0) {
|
||||||
height.value = 820
|
height.value = 820
|
||||||
|
|
@ -464,7 +454,12 @@ const changeLoading = (e: any) => {
|
||||||
}
|
}
|
||||||
const isBtnShow = ref(true)
|
const isBtnShow = ref(true)
|
||||||
const changeBtn = () => {
|
const changeBtn = () => {
|
||||||
|
if (edit_data.value.status == 1 || edit_data.value.status == 3 || edit_data.value.status == 0) return
|
||||||
isBtnShow.value = !isBtnShow.value
|
isBtnShow.value = !isBtnShow.value
|
||||||
|
if (isBtnShow.value) {
|
||||||
|
time.value = ''
|
||||||
|
timeList.value = []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const handleCurrentChange = (val: any) => {
|
const handleCurrentChange = (val: any) => {
|
||||||
edit_data.value.insutype = val.insutype
|
edit_data.value.insutype = val.insutype
|
||||||
|
|
@ -556,10 +551,8 @@ defineExpose({init})
|
||||||
margin-bottom: 2px !important;
|
margin-bottom: 2px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.small-btn {
|
.disabled {
|
||||||
width: 51px;
|
cursor: not-allowed;
|
||||||
height: 32px;
|
background: rgba(#4D6DE4,.5);
|
||||||
line-height: 32px;
|
|
||||||
margin-left: 5px;
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -7,10 +7,11 @@
|
||||||
>
|
>
|
||||||
<el-table-column prop="name" label="姓名" show-overflow-tooltip>
|
<el-table-column prop="name" label="姓名" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div style="display: flex;align-items: center;">
|
<div style="display: flex;align-items: center;position: relative">
|
||||||
<img style="width: 25px;height: 25px;margin-right: 10px"
|
<img style="width: 25px;height: 25px;margin-right: 10px"
|
||||||
:src="scope.row.gender === 1 ? '/static/images/member/man.png' :scope.row.gender === 2 ? '/static/images/member/women.png':'无'"
|
:src="scope.row.gender === 1 ? '/static/images/member/man.png' :scope.row.gender === 2 ? '/static/images/member/women.png':'无'"
|
||||||
alt="" srcset="">
|
alt="" srcset="">
|
||||||
|
|
||||||
<span>{{ scope.row.name }}</span>
|
<span>{{ scope.row.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -120,9 +120,9 @@
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<span class="default-btn" @click="save()">保存</span>
|
<span class="small-btn" @click="save()">保存</span>
|
||||||
<span class="default-btn" style="margin: 0 24px">取消</span>
|
<span class="small-btn" @click="exit()">取消</span>
|
||||||
<span class="default-btn" v-if="memberInfo.id" @click="deleteDetail">删除</span>
|
<span class="danger-btn" v-if="memberInfo.id" @click="deleteDetail">删除</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</Mask>
|
</Mask>
|
||||||
|
|
|
||||||
|
|
@ -115,9 +115,9 @@
|
||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<span class="default-btn" @click="save()">保存</span>
|
<span class="small-btn" @click="exit">取消</span>
|
||||||
<span class="default-btn" v-if="props.id" @click="deleteDetail" style="margin-left: 24px">删除</span>
|
<span class="small-btn" @click="save()">保存</span>
|
||||||
<span class="default-btn" @click="exit" style="margin-left: 24px">取消</span>
|
<span class="danger-btn" v-if="props.id" @click="deleteDetail">删除</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</Mask>
|
</Mask>
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,7 @@
|
||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
<div style="padding: 0 24px">
|
<div style="padding: 0 24px">
|
||||||
<div class="header" style="width: 100%;display: flex;justify-content: center;margin-bottom: 10px">
|
<div class="header" style="width: 100%;display: flex;justify-content: center;margin-bottom: 10px">
|
||||||
<el-button type="primary" style="margin-top:10px" round class="btn" @click="openCreateSearch"
|
<span style="margin-top:10px" class="btn small-btn" @click="openCreateSearch">一键建档</span>
|
||||||
plain>
|
|
||||||
一键建档
|
|
||||||
</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
<el-form :model="form" label-width="auto" :rules="formRules" ref="formRef">
|
<el-form :model="form" label-width="auto" :rules="formRules" ref="formRef">
|
||||||
<el-descriptions
|
<el-descriptions
|
||||||
|
|
@ -63,9 +60,9 @@
|
||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<el-button type="primary" @click="save()">保存</el-button>
|
<span class="small-btn" @click="save()">保存</span>
|
||||||
<el-button @click="close">取消</el-button>
|
<span class="small-btn" @click="close">取消</span>
|
||||||
<el-button v-if="props.id" @click="deleteDetail" type="danger">删除</el-button>
|
<span class="danger-btn" v-if="props.id" @click="deleteDetail">删除</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</Mask>
|
</Mask>
|
||||||
|
|
@ -77,7 +74,7 @@ import {post} from "@/utils/request.ts";
|
||||||
import {ElMessage} from "element-plus";
|
import {ElMessage} from "element-plus";
|
||||||
import Mask from "@/components/common/Mask.vue";
|
import Mask from "@/components/common/Mask.vue";
|
||||||
import ItemSearch from "@/components/settings/item/ItemSearch.vue";
|
import ItemSearch from "@/components/settings/item/ItemSearch.vue";
|
||||||
import UnitSelector from "@/components/inventory/UnitSelector.vue";
|
import UnitSelector from "@/components/UnitSelector.vue";
|
||||||
import {itemUnitList} from "@/utils/unitList.ts"
|
import {itemUnitList} from "@/utils/unitList.ts"
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
placeholder="请输入药品名称或者编号"
|
placeholder="请输入药品名称或者编号"
|
||||||
@keydown.enter="searchSocialItem"
|
@keydown.enter="searchSocialItem"
|
||||||
clearable/>
|
clearable/>
|
||||||
<span class="default-btn" @click="searchSocialItem">搜索</span>
|
<span class="small-btn" @click="searchSocialItem">搜索</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="search_result" style="width: 100%;padding: 0 12px">
|
<div class="search_result" style="width: 100%;padding: 0 12px">
|
||||||
<div class="result_table" style="width: 100%;height: 100%;box-sizing: border-box;padding-bottom: 20px">
|
<div class="result_table" style="width: 100%;height: 100%;box-sizing: border-box;padding-bottom: 20px">
|
||||||
|
|
@ -34,8 +34,8 @@
|
||||||
v-model:current-page="searchResult.pageNum" @current-change="changePage"/>
|
v-model:current-page="searchResult.pageNum" @current-change="changePage"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn">
|
<div class="btn">
|
||||||
<span class="default-btn" @click="confirm">确认</span>
|
<span class="small-btn" @click="confirm">确认</span>
|
||||||
<span class="default-btn" @click="close">关闭</span>
|
<span class="small-btn" @click="close">关闭</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -137,15 +137,15 @@ const close = () => {
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-bottom: 24px;
|
margin-bottom: 24px;
|
||||||
|
|
||||||
span {
|
|
||||||
line-height: 42px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input {
|
.input {
|
||||||
display: block;
|
display: block;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
.default-btn {
|
.default-btn {
|
||||||
margin-left: 24px;
|
margin-left: 24px;
|
||||||
}
|
}
|
||||||
|
|
@ -181,7 +181,6 @@ const close = () => {
|
||||||
|
|
||||||
:deep(.el-input__wrapper) {
|
:deep(.el-input__wrapper) {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 42px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="80">
|
<el-table-column label="操作" width="80">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span @click="removeTableRow(scope.row)" class="small-btn">删除</span>
|
<span @click="removeTableRow(scope.row)" style="color: #ff0000">删除</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
@ -101,7 +101,7 @@ import ItemSearch from "@/components/settings/item/ItemSearch.vue";
|
||||||
|
|
||||||
const createSearchRef = ref<any>('')
|
const createSearchRef = ref<any>('')
|
||||||
import {itemUnitList} from "@/utils/unitList.ts"
|
import {itemUnitList} from "@/utils/unitList.ts"
|
||||||
import UnitSelector from "@/components/inventory/UnitSelector.vue";
|
import UnitSelector from "@/components/UnitSelector.vue";
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
|
|
||||||
const isShow = ref<any>(false)
|
const isShow = ref<any>(false)
|
||||||
|
|
@ -225,7 +225,4 @@ defineExpose({init})
|
||||||
padding: 0 24px;
|
padding: 0 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.small-btn {
|
|
||||||
width: 50px;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -3,10 +3,13 @@
|
||||||
<template #default>
|
<template #default>
|
||||||
<div class="search_content_wrapper">
|
<div class="search_content_wrapper">
|
||||||
<div class="search_wrapper">
|
<div class="search_wrapper">
|
||||||
<span class="default-btn" @click="add">添加组套</span>
|
<span class="default-btn" @click="add">
|
||||||
|
<span class="iconfont icon-jia"></span>
|
||||||
|
添加组套
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<el-table :data="tableList">
|
<el-table border style="height: 100%" :data="tableList" :header-cell-style="{ backgroundColor: '#F1F5FB' }">
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="itemName"
|
prop="itemName"
|
||||||
label="组套名称">
|
label="组套名称">
|
||||||
|
|
@ -21,8 +24,8 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作">
|
<el-table-column label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button type="primary" link @click="editGroup(scope.row)">编辑</el-button>
|
<span class="edit" @click="editGroup(scope.row)">编辑</span>
|
||||||
<el-button type="primary" link @click="deleteGroup(scope.row)">删除</el-button>
|
<span class="delete" @click="deleteGroup(scope.row)">删除</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
@ -50,10 +53,11 @@ import {post} from '@/utils/request.ts'
|
||||||
import Mask from "@/components/common/Mask.vue";
|
import Mask from "@/components/common/Mask.vue";
|
||||||
import GroupAdd from "@/components/settings/item/group/GroupAdd.vue";
|
import GroupAdd from "@/components/settings/item/group/GroupAdd.vue";
|
||||||
import {ElMessage, ElMessageBox} from "element-plus";
|
import {ElMessage, ElMessageBox} from "element-plus";
|
||||||
|
|
||||||
let current_page = ref(1)
|
let current_page = ref(1)
|
||||||
const show = ref(false);
|
const show = ref(false);
|
||||||
const emit = defineEmits(["confirm"])
|
const emit = defineEmits(["confirm"])
|
||||||
const deleteGroup=(row: any)=>{
|
const deleteGroup = (row: any) => {
|
||||||
ElMessageBox.confirm('确定删除该组套?', '提示', {
|
ElMessageBox.confirm('确定删除该组套?', '提示', {
|
||||||
confirmButtonText: '确定',
|
confirmButtonText: '确定',
|
||||||
cancelButtonText: '取消',
|
cancelButtonText: '取消',
|
||||||
|
|
@ -110,81 +114,70 @@ const handleCurrentChange = (val: any) => {
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.search_bottom {
|
.search_bottom {
|
||||||
display: block;
|
display: block;
|
||||||
margin-top: 10px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.search_content_wrapper {
|
.search_content_wrapper {
|
||||||
background-color: #FFF;
|
background-color: #FFF;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: hidden;
|
display: flex;
|
||||||
margin: auto;
|
flex-direction: column;
|
||||||
margin-top: 20px;
|
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 10px;
|
padding: 24px;
|
||||||
}
|
.search_wrapper {
|
||||||
|
|
||||||
.search_wrapper {
|
|
||||||
position: relative;
|
|
||||||
width: 100%;
|
|
||||||
display: flex;
|
|
||||||
margin: 0 auto;
|
|
||||||
height: 60px;
|
|
||||||
|
|
||||||
span {
|
|
||||||
position: relative;
|
|
||||||
display: block;
|
|
||||||
width: 100px;
|
|
||||||
line-height: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input {
|
|
||||||
display: block;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
button {
|
|
||||||
width: 80px;
|
|
||||||
line-height: 40px;
|
|
||||||
color: #FFF;
|
|
||||||
margin-left: 10px;
|
|
||||||
height: 40px;
|
|
||||||
background-color: #409EFF;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
flex: 1;
|
|
||||||
//min-height: 0;
|
|
||||||
|
|
||||||
table {
|
|
||||||
//border-collapse: collapse;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
margin: 0 auto;
|
||||||
|
height: 60px;
|
||||||
|
|
||||||
|
.input {
|
||||||
|
display: block;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
width: 80px;
|
||||||
|
line-height: 40px;
|
||||||
|
color: #FFF;
|
||||||
|
margin-left: 10px;
|
||||||
|
height: 40px;
|
||||||
|
background-color: #409EFF;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
th,
|
.content {
|
||||||
td {
|
display: block;
|
||||||
//border: 1px solid #ccc;
|
width: 100%;
|
||||||
padding: 8px;
|
flex: 1;
|
||||||
text-align: left;
|
min-height: 0;
|
||||||
|
|
||||||
}
|
table {
|
||||||
|
//border-collapse: collapse;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
th {
|
th,
|
||||||
//background-color: #F9F9F9;
|
td {
|
||||||
}
|
//border: 1px solid #ccc;
|
||||||
|
padding: 8px;
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
/* 可选:为可点击的行添加鼠标悬停效果 */
|
}
|
||||||
tr:hover {
|
|
||||||
//background-color: #f5f5f5;
|
th {
|
||||||
|
//background-color: #F9F9F9;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 可选:为可点击的行添加鼠标悬停效果 */
|
||||||
|
tr:hover {
|
||||||
|
//background-color: #f5f5f5;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
:deep(.invalid) {
|
:deep(.invalid) {
|
||||||
color: #409EFF;
|
color: #409EFF;
|
||||||
}
|
}
|
||||||
|
|
@ -193,11 +186,21 @@ const handleCurrentChange = (val: any) => {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 400px;
|
height: 400px;
|
||||||
}
|
}
|
||||||
.bottom{
|
|
||||||
|
.bottom {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 0 24px;
|
padding: 0 24px;
|
||||||
}
|
}
|
||||||
|
.edit{
|
||||||
|
cursor: pointer;
|
||||||
|
color: #4d6de4;
|
||||||
|
margin-right: 10px
|
||||||
|
}
|
||||||
|
.delete{
|
||||||
|
cursor: pointer;
|
||||||
|
color: #ff0000;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import './assets/scss/main.scss'
|
||||||
import {createApp} from 'vue'
|
import {createApp} from 'vue'
|
||||||
import ElementPlus from 'element-plus'
|
import ElementPlus from 'element-plus'
|
||||||
import 'element-plus/dist/index.css'
|
import 'element-plus/dist/index.css'
|
||||||
import '../src/assets/iconfont/iconfont.css'
|
import '../public/static/iconfont/iconfont.css'
|
||||||
import {createPinia} from 'pinia'
|
import {createPinia} from 'pinia'
|
||||||
|
|
||||||
import App from './App.vue'
|
import App from './App.vue'
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import Auth from "@/components/manger/Auth.vue";
|
||||||
import {apiConfig} from "@/assets/config/apiConfig";
|
import {apiConfig} from "@/assets/config/apiConfig";
|
||||||
import type {Request, Response} from "@/utils/ws.ts";
|
import type {Request, Response} from "@/utils/ws.ts";
|
||||||
import {useWsStore} from "@/stores/wsStore.ts";
|
import {useWsStore} from "@/stores/wsStore.ts";
|
||||||
|
import {API} from "@/assets/config/API.ts";
|
||||||
|
|
||||||
const username = ref('')
|
const username = ref('')
|
||||||
const password = ref('')
|
const password = ref('')
|
||||||
|
|
@ -40,7 +41,7 @@ const handleLogin = async () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const loginCore=async ()=>{
|
const loginCore=async ()=>{
|
||||||
let token:any=await post(apiConfig.ManagerUserLogin, {username: username.value, password: password.value},{catch_error: true})
|
let token:any=await post(API.Common.ManagerUser.Login, {username: username.value, password: password.value},{catch_error: true})
|
||||||
localStorage.setItem('token', token)
|
localStorage.setItem('token', token)
|
||||||
try{
|
try{
|
||||||
await post(apiConfig.signIn, {mac: netWork.value.mac, ip: netWork.value.ip}, {catch_error: true})
|
await post(apiConfig.signIn, {mac: netWork.value.mac, ip: netWork.value.ip}, {catch_error: true})
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<template xmlns="http://www.w3.org/1999/html">
|
<template>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<chargeQueue @clickItem="clickItem" @getStatus="getStatus" ref="chargeQueueRef"></ChargeQueue>
|
<chargeQueue @clickItem="clickItem" @getStatus="getStatus" ref="chargeQueueRef"></ChargeQueue>
|
||||||
|
|
@ -338,13 +338,11 @@ const list = () => {
|
||||||
}
|
}
|
||||||
const getStatus = (status: any) => {
|
const getStatus = (status: any) => {
|
||||||
statusDisabled.value = status
|
statusDisabled.value = status
|
||||||
formData.value = {
|
initFormData()
|
||||||
patientInfo: {},
|
nextTick(() => {
|
||||||
diagnosisMedicalRecord: {},
|
patientCardRef.value?.clear()
|
||||||
goodsDetail: [],
|
recordsConsumptionRef.value?.clearList();
|
||||||
itemDetail: [],
|
})
|
||||||
patientRegistration: {}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
//退费
|
//退费
|
||||||
const refund = async () => {
|
const refund = async () => {
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
<span class="iconfont icon-RectangleCopy1"></span>
|
<span class="iconfont icon-RectangleCopy1"></span>
|
||||||
重置
|
重置
|
||||||
</div>
|
</div>
|
||||||
<div class="default-btn" @click="getList" style="margin-left: 24px">
|
<div class="default-btn" @click="getList">
|
||||||
<span class="iconfont icon-RectangleCopy"></span>
|
<span class="iconfont icon-RectangleCopy"></span>
|
||||||
搜索
|
搜索
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -91,12 +91,10 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import Mask from "@/components/common/Mask.vue";
|
|
||||||
import AddApply from "@/components/inventory/apply/AddApply.vue";
|
import AddApply from "@/components/inventory/apply/AddApply.vue";
|
||||||
import {nextTick, onMounted, ref} from "vue";
|
import {nextTick, onMounted, ref} from "vue";
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
import DetailApply from "@/components/inventory/apply/DetailApply.vue";
|
import DetailApply from "@/components/inventory/apply/DetailApply.vue";
|
||||||
import {Refresh,Search} from "@element-plus/icons-vue";
|
|
||||||
import {formatDateArray, getEndOfDay} from "@/utils/dateUtils.ts";
|
import {formatDateArray, getEndOfDay} from "@/utils/dateUtils.ts";
|
||||||
|
|
||||||
const is_add = ref(false)
|
const is_add = ref(false)
|
||||||
|
|
@ -175,16 +173,64 @@ const resetSearch= () => {
|
||||||
@use "@/assets/scss/base.scss";
|
@use "@/assets/scss/base.scss";
|
||||||
.container-wrapper {
|
.container-wrapper {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 24px;
|
padding: 24px 24px 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
height: 100%;
|
border-radius: 8px;
|
||||||
|
.top {
|
||||||
|
background: #fff;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
|
||||||
|
.search {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
.left {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-right: 24px;
|
||||||
|
.el-form-item {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.right {
|
||||||
|
display: flex;
|
||||||
|
.btn {
|
||||||
|
width: 120px;
|
||||||
|
height: 42px;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border-radius: 6px;
|
||||||
|
border: 1px solid #979797;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
margin-left: 24px;
|
||||||
|
cursor: pointer;
|
||||||
|
&:hover {
|
||||||
|
background: #4D6DE4;
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.addBtn {
|
||||||
|
span {
|
||||||
|
&:first-child{
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
.content {
|
.content {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
margin-top: base.$margin-base;
|
|
||||||
}
|
}
|
||||||
.bottom {
|
.bottom {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
@ -200,53 +246,7 @@ const resetSearch= () => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.top {
|
|
||||||
height: 110px;
|
|
||||||
background: #fff;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
|
|
||||||
.search {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
.left {
|
|
||||||
flex: 1;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-right: 24px;
|
|
||||||
.el-form-item {
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.right {
|
|
||||||
display: flex;
|
|
||||||
.btn {
|
|
||||||
width: 120px;
|
|
||||||
height: 42px;
|
|
||||||
background: #FFFFFF;
|
|
||||||
border-radius: 6px;
|
|
||||||
border: 1px solid #979797;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
margin-left: 24px;
|
|
||||||
cursor: pointer;
|
|
||||||
&:hover {
|
|
||||||
background: #4D6DE4;
|
|
||||||
color: #fff;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.addBtn {
|
|
||||||
span {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
:deep(.el-input__wrapper){
|
:deep(.el-input__wrapper){
|
||||||
height: 42px;
|
height: 42px;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
<span class="iconfont icon-RectangleCopy1"></span>
|
<span class="iconfont icon-RectangleCopy1"></span>
|
||||||
重置
|
重置
|
||||||
</div>
|
</div>
|
||||||
<div class="default-btn" @click="getCheck" style="margin-left: 24px">
|
<div class="default-btn" @click="getCheck">
|
||||||
<span class="iconfont icon-RectangleCopy"></span>
|
<span class="iconfont icon-RectangleCopy"></span>
|
||||||
搜索
|
搜索
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -175,11 +175,11 @@ const resetSearch = () => {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 24px;
|
padding: 24px 24px 0;
|
||||||
|
border-radius: 8px;
|
||||||
|
|
||||||
.content_list {
|
.content_list {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
margin-top: base.$margin-base;
|
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -197,10 +197,10 @@ const resetSearch = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
.top {
|
.top {
|
||||||
height: 110px;
|
|
||||||
background: #fff;
|
background: #fff;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
@ -244,8 +244,9 @@ const resetSearch = () => {
|
||||||
|
|
||||||
.addBtn {
|
.addBtn {
|
||||||
span {
|
span {
|
||||||
display: inline-block;
|
&:first-child{
|
||||||
margin-right: 24px;
|
margin-left: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@
|
||||||
<span class="iconfont icon-RectangleCopy1"></span>
|
<span class="iconfont icon-RectangleCopy1"></span>
|
||||||
重置
|
重置
|
||||||
</div>
|
</div>
|
||||||
<div class="default-btn" @click="searchGoods" style="margin-left: 24px">
|
<div class="default-btn" @click="searchGoods">
|
||||||
<span class="iconfont icon-RectangleCopy"></span>
|
<span class="iconfont icon-RectangleCopy"></span>
|
||||||
搜索
|
搜索
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -81,7 +81,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content_goods">
|
<div class="content_goods">
|
||||||
<el-table :data="tableData" style="height: 100%;padding: 0 24px;" @row-click="openMack"
|
<el-table :data="tableData" style="height: 100%;" @row-click="openMack"
|
||||||
:header-cell-style="{ backgroundColor: '#F1F5FB' }">
|
:header-cell-style="{ backgroundColor: '#F1F5FB' }">
|
||||||
<el-table-column fixed prop="name" label="名称" width="200" show-overflow-tooltip>
|
<el-table-column fixed prop="name" label="名称" width="200" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
|
|
@ -433,13 +433,13 @@ const props = {multiple: true}
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 24px 24px 0;
|
||||||
.top {
|
.top {
|
||||||
height: 144px;
|
|
||||||
padding: 24px 24px 0;
|
|
||||||
background: #fff;
|
background: #fff;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
@ -447,21 +447,18 @@ const props = {multiple: true}
|
||||||
|
|
||||||
.left {
|
.left {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin-right: 24px;
|
|
||||||
|
|
||||||
.el-form-item {
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.addBtn {
|
.addBtn {
|
||||||
span {
|
span {
|
||||||
display: inline-block;
|
&:first-child {
|
||||||
margin-right: 24px;
|
margin-left: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -514,24 +511,5 @@ const props = {multiple: true}
|
||||||
|
|
||||||
.btn-group {
|
.btn-group {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
.btn {
|
|
||||||
width: 120px;
|
|
||||||
height: 42px;
|
|
||||||
background: #FFFFFF;
|
|
||||||
border-radius: 6px;
|
|
||||||
border: 1px solid #979797;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
margin-left: 24px;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background: #4D6DE4;
|
|
||||||
color: #fff;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -66,7 +66,7 @@
|
||||||
<span class="iconfont icon-RectangleCopy1"></span>
|
<span class="iconfont icon-RectangleCopy1"></span>
|
||||||
重置
|
重置
|
||||||
</div>
|
</div>
|
||||||
<div class="default-btn" @click="init" style="margin-left: 24px">
|
<div class="default-btn" @click="init">
|
||||||
<span class="iconfont icon-RectangleCopy"></span>
|
<span class="iconfont icon-RectangleCopy"></span>
|
||||||
搜索
|
搜索
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -78,37 +78,37 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content_list">
|
<div class="content_list">
|
||||||
<el-table :data="tableData" style="width: 100%;height: 100%" @row-click="open_edit"
|
<el-table :data="tableData" style="width: 100%;height: 100%" @row-click="open_edit"
|
||||||
:header-cell-style="{ backgroundColor: '#F1F5FB' }">
|
:header-cell-style="{ backgroundColor: '#F1F5FB' }">
|
||||||
<el-table-column fixed label="采购单号" show-overflow-tooltip>
|
<el-table-column fixed label="采购单号" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div class="link">{{ scope.row.code }}</div>
|
<div class="link">{{ scope.row.code }}</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="货单号" prop="shippingCode" show-overflow-tooltip>
|
<el-table-column label="货单号" prop="shippingCode" show-overflow-tooltip>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="品种" prop="kindCount" show-overflow-tooltip>
|
<el-table-column label="品种" prop="kindCount" show-overflow-tooltip>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="入库金额" show-overflow-tooltip>
|
<el-table-column label="入库金额" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
¥{{ scope.row.totalPrice.toFixed(2) }}
|
¥{{ scope.row.totalPrice.toFixed(2) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="采购人" prop="managerUserName" show-overflow-tooltip></el-table-column>
|
<el-table-column label="采购人" prop="managerUserName" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column label="供应商" prop="supplierName" show-overflow-tooltip></el-table-column>
|
<el-table-column label="供应商" prop="supplierName" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column prop="purchaseDate" label="采购时间" show-overflow-tooltip>
|
<el-table-column prop="purchaseDate" label="采购时间" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ formatDate(scope.row.purchaseDate) }}
|
{{ formatDate(scope.row.purchaseDate) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- <el-table-column prop="createDatetime" label="入库时间">-->
|
<!-- <el-table-column prop="createDatetime" label="入库时间">-->
|
||||||
<!-- <template #default="scope">-->
|
<!-- <template #default="scope">-->
|
||||||
<!-- {{ formatDate(scope.row.purchaseDate) }}-->
|
<!-- {{ formatDate(scope.row.purchaseDate) }}-->
|
||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
<!-- </el-table-column>-->
|
<!-- </el-table-column>-->
|
||||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip>
|
<el-table-column label="备注" prop="remark" show-overflow-tooltip>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<div class="page_btn_list">
|
<div class="page_btn_list">
|
||||||
|
|
@ -124,7 +124,7 @@
|
||||||
</div>
|
</div>
|
||||||
<AddOrder ref="addOrderRef" @close="closeAddOrder"/>
|
<AddOrder ref="addOrderRef" @close="closeAddOrder"/>
|
||||||
<EditOrder ref="editOrderRef" @close="closeEditOrder" @updateOrderDetail="init"/>
|
<EditOrder ref="editOrderRef" @close="closeEditOrder" @updateOrderDetail="init"/>
|
||||||
<UpLoad v-model="show" @initAddOrderData =initAddOrderData></UpLoad>
|
<UpLoad v-model="show" @initAddOrderData=initAddOrderData></UpLoad>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -240,37 +240,37 @@ const resetSearch = () => {
|
||||||
init()
|
init()
|
||||||
}
|
}
|
||||||
const show = ref(false)
|
const show = ref(false)
|
||||||
const openUpload= ()=>{
|
const openUpload = () => {
|
||||||
show.value=true
|
show.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
const initAddOrderData = (initData:any)=>{
|
const initAddOrderData = (initData: any) => {
|
||||||
const data = {
|
const data = {
|
||||||
invoiceCode:initData.tag.invoice_code,
|
invoiceCode: initData.tag.invoice_code,
|
||||||
shippingCode:initData.tag.shipping_code,
|
shippingCode: initData.tag.shipping_code,
|
||||||
remark:initData.tag.remark,
|
remark: initData.tag.remark,
|
||||||
purchaseDate: initData.tag.purchase_date,
|
purchaseDate: initData.tag.purchase_date,
|
||||||
}
|
}
|
||||||
let goodsList = []
|
let goodsList = []
|
||||||
for (let i=0;i<initData.list.length;i++){
|
for (let i = 0; i < initData.list.length; i++) {
|
||||||
let item = initData.list[i]
|
let item = initData.list[i]
|
||||||
let goodsInfo = {
|
let goodsInfo = {
|
||||||
productionBatchCode:item.info.production_batch_code,
|
productionBatchCode: item.info.production_batch_code,
|
||||||
wholeNumber:item.info.whole_number,
|
wholeNumber: item.info.whole_number,
|
||||||
productionDate:item.info.production_date,
|
productionDate: item.info.production_date,
|
||||||
expiryDate:item.info.expiry_date,
|
expiryDate: item.info.expiry_date,
|
||||||
purchaseUnitPrice:item.info.purchase_unit_price,
|
purchaseUnitPrice: item.info.purchase_unit_price,
|
||||||
goodId:item.id,
|
goodId: item.id,
|
||||||
name:item.goods.name,
|
name: item.goods.name,
|
||||||
packagingUnit:item.goods.packagingUnit,
|
packagingUnit: item.goods.packagingUnit,
|
||||||
unitPrice:item.goods.unitPrice,
|
unitPrice: item.goods.unitPrice,
|
||||||
}
|
}
|
||||||
goodsList.push(goodsInfo)
|
goodsList.push(goodsInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
nextTick(()=>{
|
nextTick(() => {
|
||||||
addOrderRef.value?.init(data,goodsList)
|
addOrderRef.value?.init(data, goodsList)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
@ -279,17 +279,53 @@ const initAddOrderData = (initData:any)=>{
|
||||||
|
|
||||||
.container-wrapper {
|
.container-wrapper {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 24px;
|
padding: 24px 24px 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
border-radius: 8px;
|
||||||
|
|
||||||
|
.top {
|
||||||
|
background: #fff;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
|
||||||
|
.search {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.left {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-right: 24px;
|
||||||
|
|
||||||
|
.el-form-item {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.right {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.addBtn {
|
||||||
|
span {
|
||||||
|
&:first-child {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.content_list {
|
.content_list {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
margin-top: base.$margin-base;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom {
|
.bottom {
|
||||||
|
|
@ -361,63 +397,11 @@ const initAddOrderData = (initData:any)=>{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.top {
|
|
||||||
height: 110px;
|
|
||||||
background: #fff;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
|
|
||||||
.search {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
|
|
||||||
.left {
|
|
||||||
flex: 1;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-right: 24px;
|
|
||||||
|
|
||||||
.el-form-item {
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.right {
|
|
||||||
display: flex;
|
|
||||||
|
|
||||||
.btn {
|
|
||||||
width: 120px;
|
|
||||||
height: 42px;
|
|
||||||
background: #FFFFFF;
|
|
||||||
border-radius: 6px;
|
|
||||||
border: 1px solid #979797;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
margin-left: 24px;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background: #4D6DE4;
|
|
||||||
color: #fff;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.addBtn {
|
|
||||||
span{
|
|
||||||
display: inline-block;
|
|
||||||
margin-right: 24px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
:deep(.el-input__wrapper) {
|
:deep(.el-input__wrapper) {
|
||||||
height: 42px;
|
height: 42px;
|
||||||
width: 200px;
|
width: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-range-editor.el-input__wrapper) {
|
:deep(.el-range-editor.el-input__wrapper) {
|
||||||
height: 42px;
|
height: 42px;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
<span class="iconfont icon-RectangleCopy1"></span>
|
<span class="iconfont icon-RectangleCopy1"></span>
|
||||||
重置
|
重置
|
||||||
</div>
|
</div>
|
||||||
<div class="default-btn" @click="getSupplier" style="margin-left: 24px">
|
<div class="default-btn" @click="getSupplier">
|
||||||
<span class="iconfont icon-RectangleCopy"></span>
|
<span class="iconfont icon-RectangleCopy"></span>
|
||||||
搜索
|
搜索
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -33,18 +33,18 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<el-table :data="tableData" style="width: 100%;height: 100%" @row-click="editSupplier" :header-cell-style="{ backgroundColor: '#F1F5FB' }">
|
<el-table :data="tableData" style="width: 100%;height: 100%" @row-click="editSupplier" :header-cell-style="{ backgroundColor: '#F1F5FB' }">
|
||||||
<el-table-column label="供应商名称" prop="name" width="250">
|
<el-table-column label="供应商名称" prop="name" show-overflow-tooltip>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="启用状态" prop="turn" width="150">
|
<el-table-column label="启用状态" prop="turn" width="150" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tag type="success" v-if="scope.row.turn ==1">启用中</el-tag>
|
<el-tag type="success" v-if="scope.row.turn ==1">启用中</el-tag>
|
||||||
<el-tag type="info" v-else>已禁用</el-tag>
|
<el-tag type="info" v-else>已禁用</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="许可证号" prop="licenseCode"></el-table-column>
|
<el-table-column label="许可证号" prop="licenseCode" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column label="联系人" prop="contactName" width="100"></el-table-column>
|
<el-table-column label="联系人" prop="contactName" width="100" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column label="联系方式" prop="contactTel" width="150"></el-table-column>
|
<el-table-column label="联系方式" prop="contactTel" width="150" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column label="备注" prop="remark"/>
|
<el-table-column label="备注" prop="remark" show-overflow-tooltip/>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
|
|
@ -122,15 +122,15 @@ const resetSearch = () => {
|
||||||
@use "@/assets/scss/base.scss";
|
@use "@/assets/scss/base.scss";
|
||||||
.container-wrapper {
|
.container-wrapper {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 24px;
|
padding: 24px 24px 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
border-radius: 8px;
|
||||||
.content {
|
.content {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
margin-top: base.$margin-base;
|
|
||||||
}
|
}
|
||||||
.bottom {
|
.bottom {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
@ -147,10 +147,10 @@ const resetSearch = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
.top {
|
.top {
|
||||||
height: 110px;
|
|
||||||
background: #fff;
|
background: #fff;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
@ -189,7 +189,9 @@ const resetSearch = () => {
|
||||||
|
|
||||||
.addBtn {
|
.addBtn {
|
||||||
span {
|
span {
|
||||||
display: inline-block;
|
&:first-child{
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -407,7 +407,7 @@ const openFlowingWater = () => {
|
||||||
|
|
||||||
.left {
|
.left {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 430px;
|
width: 320px;
|
||||||
margin-right: 24px;
|
margin-right: 24px;
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
|
|
|
||||||
|
|
@ -40,10 +40,10 @@
|
||||||
import MedicalQueue from "@/components/outpatient/MedicalQueue.vue";
|
import MedicalQueue from "@/components/outpatient/MedicalQueue.vue";
|
||||||
import MedicalHistory from "@/components/outpatient/MedicalHistory.vue";
|
import MedicalHistory from "@/components/outpatient/MedicalHistory.vue";
|
||||||
import Case from "@/components/outpatient/Case.vue";
|
import Case from "@/components/outpatient/Case.vue";
|
||||||
import {ref, watch, nextTick, onMounted} from "vue";
|
import {ref, watch, nextTick} from "vue";
|
||||||
import Settlement from "@/components/outpatient/Settlement.vue";
|
import Settlement from "@/components/outpatient/Settlement.vue";
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
import {type Action, ElMessage, ElMessageBox} from "element-plus";
|
import {ElMessage} from "element-plus";
|
||||||
import {apiConfig} from "@/assets/config/apiConfig.ts";
|
import {apiConfig} from "@/assets/config/apiConfig.ts";
|
||||||
import PatientCard from "@/components/charge/PatientCard.vue";
|
import PatientCard from "@/components/charge/PatientCard.vue";
|
||||||
import ServiceDetail from "@/components/common/service/ServiceDetail.vue";
|
import ServiceDetail from "@/components/common/service/ServiceDetail.vue";
|
||||||
|
|
@ -52,8 +52,6 @@ import GoodsDetail from "@/components/common/goods/GoodsDetail.vue";
|
||||||
const curRegister = ref<any>()
|
const curRegister = ref<any>()
|
||||||
const registerId = ref()
|
const registerId = ref()
|
||||||
const patientId = ref()
|
const patientId = ref()
|
||||||
const itemDetail = ref([])
|
|
||||||
const goodsList = ref([])
|
|
||||||
const formData = ref<any>({
|
const formData = ref<any>({
|
||||||
diagType: 0,
|
diagType: 0,
|
||||||
itemDetail: [],
|
itemDetail: [],
|
||||||
|
|
@ -102,18 +100,18 @@ const save = () => {
|
||||||
if (!formData.value.diagnosisDetail || JSON.parse(formData.value.diagnosisDetail).length == 0) {
|
if (!formData.value.diagnosisDetail || JSON.parse(formData.value.diagnosisDetail).length == 0) {
|
||||||
ElMessage.error("请填写诊断信息")
|
ElMessage.error("请填写诊断信息")
|
||||||
} else {
|
} else {
|
||||||
post('medical/record/save', {data: data}).then((res: any) => {
|
post(apiConfig.MedicalRecordSave, {data: data}).then((res: any) => {
|
||||||
ElMessage.success("接诊完毕,请到收费页面收费")
|
ElMessage.success("接诊完毕,请到收费页面收费")
|
||||||
medicalQueueRef.value?.changeCurItemOrStatus(null, 2);
|
debugger
|
||||||
|
medicalQueueRef.value?.changeCurItemOrStatus(res, 3);
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const totalAmount = ref(0)
|
|
||||||
const medicalHistoryRef = ref()
|
const medicalHistoryRef = ref()
|
||||||
const patientCardRef = ref()
|
const patientCardRef = ref()
|
||||||
const patientRegistration = ref<any>({})// 当前挂号信息
|
const patientRegistration = ref<any>({})// 当前挂号信息
|
||||||
const clickItem = (item: any) => {
|
const clickItem = (item: any) => {
|
||||||
initFormData()
|
|
||||||
if (!item) {
|
if (!item) {
|
||||||
medicalHistoryRef.value?.clearList();
|
medicalHistoryRef.value?.clearList();
|
||||||
return
|
return
|
||||||
|
|
@ -126,7 +124,7 @@ const clickItem = (item: any) => {
|
||||||
initFormData()
|
initFormData()
|
||||||
}
|
}
|
||||||
if (item.status == 3) {
|
if (item.status == 3) {
|
||||||
post(apiConfig.RegistrationDetail, {
|
post(apiConfig.MedicalDetailByRegisId, {
|
||||||
regisId: item.id
|
regisId: item.id
|
||||||
}).then((res: any) => {
|
}).then((res: any) => {
|
||||||
formData.value = res.diagnosisMedicalRecord
|
formData.value = res.diagnosisMedicalRecord
|
||||||
|
|
@ -141,9 +139,7 @@ const clickItem = (item: any) => {
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
|
|
||||||
medicalHistoryRef.value?.init(patientId.value);
|
medicalHistoryRef.value?.init(patientId.value);
|
||||||
patientCardRef.value?.init(curRegister.value?.id)
|
patientCardRef.value?.init(curRegister.value?.id)
|
||||||
})
|
})
|
||||||
|
|
@ -152,7 +148,12 @@ const clickItem = (item: any) => {
|
||||||
const medicalQueueRef = ref();
|
const medicalQueueRef = ref();
|
||||||
const cancelReception = () => {
|
const cancelReception = () => {
|
||||||
post(apiConfig.RegistrationChangeStatus, {id: registerId.value, status: 1}).then((res: any) => {
|
post(apiConfig.RegistrationChangeStatus, {id: registerId.value, status: 1}).then((res: any) => {
|
||||||
medicalQueueRef.value?.changeCurItemOrStatus(res, 1);
|
nextTick(() => {
|
||||||
|
medicalQueueRef.value?.changeCurItemOrStatus(res, 1);
|
||||||
|
initFormData()
|
||||||
|
medicalHistoryRef.value?.clearList();
|
||||||
|
patientCardRef.value?.clear();
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const changeTab = (e: any) => {
|
const changeTab = (e: any) => {
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="middle">
|
<div class="middle" v-loading="listLoading">
|
||||||
<List :patientList="patientList" @rowClick="rowClick"></List>
|
<List :patientList="patientList" @rowClick="rowClick"></List>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
|
|
@ -91,8 +91,6 @@
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {nextTick, onMounted, ref} from 'vue'
|
import {nextTick, onMounted, ref} from 'vue'
|
||||||
import Picker from "@/components/Picker.vue";
|
|
||||||
import Mask from "@/components/common/Mask.vue";
|
|
||||||
import Edit from "@/components/registration/Edit.vue";
|
import Edit from "@/components/registration/Edit.vue";
|
||||||
import List from "@/components/registration/List.vue";
|
import List from "@/components/registration/List.vue";
|
||||||
import {post} from "@/utils/request";
|
import {post} from "@/utils/request";
|
||||||
|
|
@ -104,7 +102,6 @@ import {Search} from "@element-plus/icons-vue";
|
||||||
|
|
||||||
const dateName = ref<any>('挂号')
|
const dateName = ref<any>('挂号')
|
||||||
const selectDate = (date: any) => {
|
const selectDate = (date: any) => {
|
||||||
console.log(date, 'date')
|
|
||||||
dateName.value = getActionText(date)
|
dateName.value = getActionText(date)
|
||||||
}
|
}
|
||||||
const getActionText = (date: string) => {
|
const getActionText = (date: string) => {
|
||||||
|
|
@ -156,18 +153,26 @@ const handleDateChange = (date: any[]) => {
|
||||||
}
|
}
|
||||||
getPatientList()
|
getPatientList()
|
||||||
}
|
}
|
||||||
const getPatientList = () => {
|
const listLoading = ref(false)
|
||||||
|
const getPatientList = async () => {
|
||||||
|
listLoading.value = true
|
||||||
id.value = null
|
id.value = null
|
||||||
post('registration/list', {
|
try {
|
||||||
page: page.value,
|
const data: any = await post(apiConfig.RegistrationList, {
|
||||||
size: size.value,
|
page: page.value,
|
||||||
startDate: selectedDate.value[0],
|
size: size.value,
|
||||||
endDate: selectedDate.value[1],
|
startDate: selectedDate.value[0],
|
||||||
doctorId: doctorId.value,
|
endDate: selectedDate.value[1],
|
||||||
}).then((res: any) => {
|
doctorId: doctorId.value,
|
||||||
patientList.value = res.list
|
}, {catch_error:true})
|
||||||
total.value = res.total_count
|
patientList.value = data.list
|
||||||
})
|
total.value = data.total_count
|
||||||
|
}
|
||||||
|
catch (e:any) {
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
listLoading.value = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const total = ref(0)
|
const total = ref(0)
|
||||||
const size = ref(20)
|
const size = ref(20)
|
||||||
|
|
@ -209,9 +214,9 @@ const reset = () => {
|
||||||
const doctorId = ref(null)
|
const doctorId = ref(null)
|
||||||
const changeRole = (item: any, index: any) => {
|
const changeRole = (item: any, index: any) => {
|
||||||
isShowNum.value = index
|
isShowNum.value = index
|
||||||
if(index==-1){
|
if (index == -1) {
|
||||||
allList()
|
allList()
|
||||||
}else{
|
} else {
|
||||||
doctorId.value = item.id
|
doctorId.value = item.id
|
||||||
getPatientList()
|
getPatientList()
|
||||||
}
|
}
|
||||||
|
|
@ -236,12 +241,12 @@ const allList = () => {
|
||||||
|
|
||||||
.left {
|
.left {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 382px;
|
width: 320px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
.left-top {
|
.left-top {
|
||||||
height: 399px;
|
height: 299px;
|
||||||
background: #FFFFFF;
|
background: #FFFFFF;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
|
|
@ -289,6 +294,7 @@ const allList = () => {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.section_name {
|
.section_name {
|
||||||
|
|
@ -298,6 +304,7 @@ const allList = () => {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
|
|
|
||||||
|
|
@ -17,21 +17,41 @@
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<div class="title-btn">
|
<div class="title-btn">
|
||||||
<span class="default-btn" @click="initData()">查询</span>
|
<span class="default-btn" @click="initData()">
|
||||||
<span class="default-btn" @click="resetSearch">重置</span>
|
<span class="iconfont icon-RectangleCopy1"></span>
|
||||||
<span class="default-btn" @click="openDialog">新建项目</span>
|
查询
|
||||||
<span class="default-btn" @click="openGroupDialog">组套</span>
|
</span>
|
||||||
|
<span class="default-btn" @click="resetSearch">
|
||||||
|
<span class="iconfont icon-RectangleCopy"></span>
|
||||||
|
重置
|
||||||
|
</span>
|
||||||
|
<span class="default-btn" @click="openDialog">
|
||||||
|
<span class="iconfont icon-jia"></span>
|
||||||
|
新建项目
|
||||||
|
</span>
|
||||||
|
<span class="default-btn" @click="openGroupDialog">
|
||||||
|
<span class="iconfont icon-qunzutaozhuang"></span>
|
||||||
|
组套
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="table">
|
<div class="table">
|
||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
<el-table :data="tableData" @row-click="rowClick">
|
<el-table :data="tableData" @row-click="rowClick" :header-cell-style="{ backgroundColor: '#F1F5FB' }">
|
||||||
<el-table-column prop="itemSocialCode" label="医保码编码" width="200"
|
<el-table-column prop="itemSocialCode" label="医保码编码" width="200"
|
||||||
show-overflow-tooltip></el-table-column>
|
show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column prop="itemName" label="项目名称" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="itemName" label="项目名称" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column prop="unit" label="单位" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="unit" label="单位" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column prop="purchaseUnitPrice" label="原价" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="purchaseUnitPrice" label="原价" show-overflow-tooltip>
|
||||||
<el-table-column prop="unitPrice" label="售价" show-overflow-tooltip></el-table-column>
|
<template #default="scope">
|
||||||
|
{{ scope.row.purchaseUnitPrice ? scope.row.purchaseUnitPrice + '元' : '' }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="unitPrice" label="售价" show-overflow-tooltip>
|
||||||
|
<template #default="scope">
|
||||||
|
{{ scope.row.unitPrice ? scope.row.unitPrice + '元' : '' }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="createDatetime" label="创建时间" show-overflow-tooltip>
|
<el-table-column prop="createDatetime" label="创建时间" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ formatDate(scope.row.createDatetime) }}
|
{{ formatDate(scope.row.createDatetime) }}
|
||||||
|
|
@ -119,27 +139,14 @@ const loading= ref(true)
|
||||||
background: #fff;
|
background: #fff;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
.title-btn{
|
|
||||||
.default-btn{
|
|
||||||
margin-right: 24px;
|
|
||||||
&:last-child{
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
.title {
|
.title {
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 60px;
|
height: 60px;
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
.title-search {
|
.title-search {
|
||||||
padding: 10px;
|
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
margin-top: 10px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,35 +1,35 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container-wrapper" style="padding: 24px">
|
<div class="container-wrapper" style="padding: 24px 24px 0">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<div class="left">
|
<el-form :inline="true" :model="searchModel">
|
||||||
<el-form :inline="true" :model="searchModel">
|
<el-date-picker
|
||||||
<el-date-picker
|
v-model="selectedDate"
|
||||||
v-model="selectedDate"
|
type="daterange"
|
||||||
type="daterange"
|
range-separator="-"
|
||||||
range-separator="-"
|
@change="handleDateChange"
|
||||||
@change="handleDateChange"
|
start-placeholder="开始时间"
|
||||||
start-placeholder="开始时间"
|
end-placeholder="结束时间"
|
||||||
end-placeholder="结束时间"
|
/>
|
||||||
/>
|
<el-input placeholder="请输入内容" v-model="searchModel.managerName" style="width: 180px;"></el-input>
|
||||||
<el-input placeholder="请输入内容" v-model="searchModel.managerName" style="width: 180px;"></el-input>
|
<el-input placeholder="请输入内容" v-model="searchModel.message" style="width: 180px;"></el-input>
|
||||||
<el-input placeholder="请输入内容" v-model="searchModel.message" style="width: 180px;"></el-input>
|
<span class="default-btn" @click="getData">
|
||||||
<span class="default-btn" @click="getData">查询</span>
|
<span class="iconfont icon-RectangleCopy"></span>
|
||||||
</el-form>
|
查询
|
||||||
</div>
|
</span>
|
||||||
<div class="right">
|
</el-form>
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<el-table
|
<el-table
|
||||||
:data="tableData"
|
:data="tableData"
|
||||||
style="width: 100%;height: 100%"
|
style="width: 100%;height: 100%"
|
||||||
|
:header-cell-style="{backgroundColor: '#F1F5FB'}"
|
||||||
|
|
||||||
>
|
>
|
||||||
<el-table-column prop="managerName" label="用户名" width="100"></el-table-column>
|
<el-table-column prop="managerName" label="用户名" width="150" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column prop="managerUsername" label="用户名" width="100"></el-table-column>
|
<el-table-column prop="managerUsername" label="用户名" width="150" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column prop="message" label="操作" width="200"></el-table-column>
|
<el-table-column prop="message" label="操作" width="200" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column prop="createDatetime" label="时间" width="200"></el-table-column>
|
<el-table-column prop="createDatetime" label="时间" width="200" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column prop="params" label="请求参数">
|
<el-table-column prop="params" label="请求参数" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input v-model="scope.row.params" class="input-with-select" disabled>
|
<el-input v-model="scope.row.params" class="input-with-select" disabled>
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
|
|
@ -111,18 +111,9 @@ const copy = (text: any) => {
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
height: 60px;
|
|
||||||
line-height: 60px;
|
|
||||||
background: #fff;
|
background: #fff;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
|
margin-bottom: 24px;
|
||||||
.left {
|
|
||||||
flex: 1;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-right: 24px;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
|
|
|
||||||
|
|
@ -25,13 +25,22 @@
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<div class="title-btn">
|
<div class="title-btn">
|
||||||
<span class="default-btn" @click="init()">查询</span>
|
<span class="default-btn" @click="resetSearch">
|
||||||
<span class="default-btn" @click="resetSearch" style="margin: 0 24px">重置</span>
|
<span class="iconfont icon-RectangleCopy1"></span>
|
||||||
<span class="default-btn" @click="openDialog(null)">新增</span>
|
重置
|
||||||
|
</span>
|
||||||
|
<span class="default-btn" @click="init()">
|
||||||
|
<span class="iconfont icon-RectangleCopy"></span>
|
||||||
|
查询
|
||||||
|
</span>
|
||||||
|
<span class="default-btn" @click="openDialog(null)">
|
||||||
|
<span class="iconfont icon-jia"></span>
|
||||||
|
新增
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="table">
|
<div class="table">
|
||||||
<el-table :data="tableData" style="width: 100%;height: 100%" @row-click="rowClick">
|
<el-table :data="tableData" style="width: 100%;height: 100%" @row-click="rowClick" :header-cell-style="{ backgroundColor: '#F1F5FB' }">
|
||||||
<el-table-column prop="date" label="日期" width="180" show-overflow-tooltip>
|
<el-table-column prop="date" label="日期" width="180" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ formatDate(scope.row.memberInfo.createDatetime) }}
|
{{ formatDate(scope.row.memberInfo.createDatetime) }}
|
||||||
|
|
@ -49,7 +58,7 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="sectionNames" label="科室" show-overflow-tooltip>
|
<el-table-column prop="sectionNames" label="科室" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{scope.row.memberInfo.sectionNames}}
|
{{ scope.row.memberInfo.sectionNames }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="memo" label="备注" show-overflow-tooltip>
|
<el-table-column prop="memo" label="备注" show-overflow-tooltip>
|
||||||
|
|
@ -71,7 +80,7 @@
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<MemberEdit ref="memberEditRef" @close="init()"></MemberEdit>
|
<MemberEdit ref="memberEditRef" @close="init()"></MemberEdit>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
@ -79,7 +88,6 @@ import {onMounted, ref, nextTick} from "vue"
|
||||||
import MemberEdit from "@/components/settings/MemberEdit.vue";
|
import MemberEdit from "@/components/settings/MemberEdit.vue";
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
import {formatDate} from "@/utils/dateUtils.ts";
|
import {formatDate} from "@/utils/dateUtils.ts";
|
||||||
import {Plus} from "@element-plus/icons-vue";
|
|
||||||
import {apiConfig} from "@/assets/config/apiConfig.ts";
|
import {apiConfig} from "@/assets/config/apiConfig.ts";
|
||||||
|
|
||||||
const isShow = ref(false)
|
const isShow = ref(false)
|
||||||
|
|
@ -88,7 +96,7 @@ const memberEditRef = ref<any>(null)
|
||||||
const rowClick = (row: any) => {
|
const rowClick = (row: any) => {
|
||||||
openDialog(row.memberInfo.id)
|
openDialog(row.memberInfo.id)
|
||||||
}
|
}
|
||||||
const openDialog= (id:any) => {
|
const openDialog = (id: any) => {
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
memberEditRef.value?.init(id)
|
memberEditRef.value?.init(id)
|
||||||
})
|
})
|
||||||
|
|
@ -190,10 +198,12 @@ const resetSearch = () => {
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
:deep(.el-input__wrapper){
|
|
||||||
|
:deep(.el-input__wrapper) {
|
||||||
height: 42px;
|
height: 42px;
|
||||||
}
|
}
|
||||||
:deep(.el-select__wrapper){
|
|
||||||
|
:deep(.el-select__wrapper) {
|
||||||
height: 42px;
|
height: 42px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -18,15 +18,28 @@
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<div class="title-btn">
|
<div class="title-btn">
|
||||||
<span class="default-btn" @click="init()">查询</span>
|
<span class="default-btn" @click="resetSearch">
|
||||||
<span class="default-btn" @click="resetSearch" style="margin: 0 24px">重置</span>
|
<span class="iconfont icon-RectangleCopy1"></span>
|
||||||
<span class="default-btn" @click="openDialog">新增</span>
|
重置
|
||||||
|
</span>
|
||||||
|
<span class="default-btn" @click="init()">
|
||||||
|
<span class="iconfont icon-RectangleCopy"></span>
|
||||||
|
查询
|
||||||
|
</span>
|
||||||
|
<span class="default-btn" @click="openDialog">
|
||||||
|
<span class="iconfont icon-jia"></span>
|
||||||
|
新增
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="table">
|
<div class="table">
|
||||||
<el-table :data="tableData" style="width: 100%" @row-click="rowClick">
|
<el-table :data="tableData" style="width: 100%" @row-click="rowClick" :header-cell-style="{ backgroundColor: '#F1F5FB' }">
|
||||||
<el-table-column prop="name" label="科室类型" width="120" show-overflow-tooltip/>
|
<el-table-column prop="name" label="科室类型" width="120" show-overflow-tooltip/>
|
||||||
<el-table-column prop="bedCnt" label="病床数量" width="80" show-overflow-tooltip/>
|
<el-table-column prop="bedCnt" label="病床数量" width="80" show-overflow-tooltip align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ scope.row.bedCnt?scope.row.bedCnt+'个':'' }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="beginDate" label="开始日期" width="120" show-overflow-tooltip/>
|
<el-table-column prop="beginDate" label="开始日期" width="120" show-overflow-tooltip/>
|
||||||
<el-table-column prop="caty" label="类别" show-overflow-tooltip width="150">
|
<el-table-column prop="caty" label="类别" show-overflow-tooltip width="150">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
|
|
@ -35,17 +48,17 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="code" label="编码" width="180" show-overflow-tooltip/>
|
<el-table-column prop="code" label="编码" width="180" show-overflow-tooltip/>
|
||||||
<el-table-column prop="creationDate" label="创建日期" width="120" show-overflow-tooltip/>
|
<el-table-column prop="creationDate" label="创建日期" width="120" show-overflow-tooltip/>
|
||||||
<el-table-column prop="drPsncnt" label="医生人数" show-overflow-tooltip/>
|
<el-table-column prop="drPsncnt" label="医生人数" show-overflow-tooltip align="center"/>
|
||||||
<el-table-column prop="endDate" label="结束日期" width="120" show-overflow-tooltip/>
|
<el-table-column prop="endDate" label="结束日期" width="120" show-overflow-tooltip/>
|
||||||
<el-table-column prop="info" label="信息" show-overflow-tooltip/>
|
<el-table-column prop="info" label="信息" show-overflow-tooltip/>
|
||||||
<el-table-column prop="medServScp" label="医疗服务范围" width="150" show-overflow-tooltip/>
|
<el-table-column prop="medServScp" label="医疗服务范围" width="150" show-overflow-tooltip/>
|
||||||
<el-table-column prop="memo" label="备注" show-overflow-tooltip/>
|
<el-table-column prop="memo" label="备注" show-overflow-tooltip/>
|
||||||
<el-table-column prop="nursPsncnt" label="护士人数" show-overflow-tooltip/>
|
<el-table-column prop="nursPsncnt" label="护士人数" show-overflow-tooltip align="center"/>
|
||||||
<el-table-column prop="pharPsncnt" label="药剂师人数" width="100" show-overflow-tooltip/>
|
<el-table-column prop="pharPsncnt" label="药剂师人数" width="100" show-overflow-tooltip align="center"/>
|
||||||
<el-table-column prop="resperName" label="负责人姓名" width="100" show-overflow-tooltip/>
|
<el-table-column prop="resperName" label="负责人姓名" width="100" show-overflow-tooltip/>
|
||||||
<el-table-column prop="resperTel" label="负责人电话" width="200" show-overflow-tooltip/>
|
<el-table-column prop="resperTel" label="负责人电话" width="200" show-overflow-tooltip/>
|
||||||
<el-table-column prop="socialBedCnt" label="社会病床数量" width="200" show-overflow-tooltip/>
|
<el-table-column prop="socialBedCnt" label="社会病床数量" width="200" show-overflow-tooltip align="center"/>
|
||||||
<el-table-column prop="tecnPsncnt" label="技术人员人数" width="200" show-overflow-tooltip/>
|
<el-table-column prop="tecnPsncnt" label="技术人员人数" width="200" show-overflow-tooltip align="center"/>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
|
|
@ -191,7 +204,6 @@ const getDeptDisplayName = (code: string): string => {
|
||||||
height: 60px;
|
height: 60px;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.table {
|
.table {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue