This commit is contained in:
zoujiandong 2025-07-10 20:46:56 +08:00
parent d6bdabc210
commit 1b2a2a0f4f
4 changed files with 189 additions and 162 deletions

View File

@ -16,7 +16,7 @@
<a-descriptions-item label="性别 " class="required">{{ $smartEnumPlugin.getDescByValue('GENDER_ENUM', caseVO.sex) }}</a-descriptions-item> <a-descriptions-item label="性别 " class="required">{{ $smartEnumPlugin.getDescByValue('GENDER_ENUM', caseVO.sex) }}</a-descriptions-item>
<a-descriptions-item label="年龄 " class="required">{{ caseVO.age ? caseVO.age : '--' }}</a-descriptions-item> <a-descriptions-item label="年龄 " class="required">{{ caseVO.age ? caseVO.age : '--' }}</a-descriptions-item>
<a-descriptions-item label="入院时间 " :span="2" class="required">{{ <a-descriptions-item label="入院时间 " :span="2" class="required">{{
caseVO.admissionTime ? caseVO.admissionTime : '--' caseVO.admissionTime ? formateDate(caseVO.admissionTime) : '--'
}}</a-descriptions-item> }}</a-descriptions-item>
<a-descriptions-item label="治疗类型(多选) " :span="3" class="required"> <a-descriptions-item label="治疗类型(多选) " :span="3" class="required">
@ -99,7 +99,7 @@
> >
<a-descriptions-item label="治疗时间 " :span="2" class="required"> <a-descriptions-item label="治疗时间 " :span="2" class="required">
{{ dpm.treatTime }} {{ formateDate(dpm.treatTime) }}
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item label="治疗内容 " :span="2" class="required" v-if="dpm"> <a-descriptions-item label="治疗内容 " :span="2" class="required" v-if="dpm">
<div class="row">1模式单选</div> <div class="row">1模式单选</div>
@ -186,13 +186,13 @@
<a-tab-pane key="4" tab="实验室检测"> <a-tab-pane key="4" tab="实验室检测">
<a-descriptions title="" bordered :column="caseVO.dpmas.length>1?3:2"> <a-descriptions title="" bordered :column="caseVO.dpmas.length>1?3:2">
<a-descriptions-item label="首次治疗前检测时间 " :span="3" class="required"> <a-descriptions-item label="首次治疗前检测时间 " :span="3" class="required">
{{ caseVO.headTime }} {{ formateDate(caseVO.headTime) }}
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item label="首次治疗后检测时间 " :span="3" class="required"> <a-descriptions-item label="首次治疗后检测时间 " :span="3" class="required">
{{ caseVO.afterTime }} {{ formateDate(caseVO.afterTime) }}
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item label="最后一次治疗后检测时间 " :span="3" class="required" v-if="caseVO.dpmas.length>1"> <a-descriptions-item label="最后一次治疗后检测时间 " :span="3" class="required" v-if="caseVO.dpmas.length>1">
{{ caseVO.lastTime }} {{ formateDate(caseVO.lastTime)}}
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item label="首次治疗前总胆红素" class="required">{{ caseVO.headTb ? caseVO.headTb : '--' }} umol/L</a-descriptions-item> <a-descriptions-item label="首次治疗前总胆红素" class="required">{{ caseVO.headTb ? caseVO.headTb : '--' }} umol/L</a-descriptions-item>
<a-descriptions-item label="首次治疗后总胆红素" class="required">{{ caseVO.afterTb ? caseVO.afterTb : '--' }} umol/L</a-descriptions-item> <a-descriptions-item label="首次治疗后总胆红素" class="required">{{ caseVO.afterTb ? caseVO.afterTb : '--' }} umol/L</a-descriptions-item>
@ -237,13 +237,13 @@
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后凝血酶原活动度">{{ caseVO.lastPta ? caseVO.lastPta : '--' }} %</a-descriptions-item> <a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后凝血酶原活动度">{{ caseVO.lastPta ? caseVO.lastPta : '--' }} %</a-descriptions-item>
<a-descriptions-item label="首次治疗前国际标准化比值 " class="required" <a-descriptions-item label="首次治疗前国际标准化比值 " class="required"
>{{ caseVO.headInr ? caseVO.headInr : '--' }} INR</a-descriptions-item >{{ caseVO.headInr ? caseVO.headInr : '--' }}</a-descriptions-item
> >
<a-descriptions-item label="首次治疗后国际标准化比值 " class="required" <a-descriptions-item label="首次治疗后国际标准化比值 " class="required"
>{{ caseVO.afterInr ? caseVO.afterInr : '--' }} INR</a-descriptions-item >{{ caseVO.afterInr ? caseVO.afterInr : '--' }}</a-descriptions-item
> >
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后国际标准化比值 " class="required" <a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后国际标准化比值 " class="required"
>{{ caseVO.lastInr ? caseVO.lastInr : '--' }} INR</a-descriptions-item >{{ caseVO.lastInr ? caseVO.lastInr : '--' }} </a-descriptions-item
> >
<a-descriptions-item label="首次治疗前C反应蛋白">{{ caseVO.headCrp ? caseVO.headCrp : '--' }} ng/L</a-descriptions-item> <a-descriptions-item label="首次治疗前C反应蛋白">{{ caseVO.headCrp ? caseVO.headCrp : '--' }} ng/L</a-descriptions-item>
@ -273,7 +273,7 @@
<a-tab-pane key="5" tab="疾病转归"> <a-tab-pane key="5" tab="疾病转归">
<a-descriptions title="" bordered :column="4"> <a-descriptions title="" bordered :column="4">
<a-descriptions-item label="出院时间 " :span="3" class="required"> <a-descriptions-item label="出院时间 " :span="3" class="required">
{{ caseVO.dischargeTime }} {{ formateDate(caseVO.dischargeTime) }}
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item label="出院天数 " :span="3" class="required"> <a-descriptions-item label="出院天数 " :span="3" class="required">
{{ caseVO.day }} {{ caseVO.day }}
@ -328,6 +328,7 @@ import { caseplatformCaseApi } from '/@/api/business/case/caseplatform-case-api'
import { smartSentry } from '/@/lib/smart-sentry'; import { smartSentry } from '/@/lib/smart-sentry';
import imgCell from './imgCell.vue'; import imgCell from './imgCell.vue';
import imgEditor from './imgEditor.vue'; import imgEditor from './imgEditor.vue';
import dayjs from 'dayjs';
import {il6Unit, caseTypeOption, diagnoseOption, patientSickOption, ganneiOption, ganwaiOption, moshiOption, kangningOption, hospitalOption } from './data'; import {il6Unit, caseTypeOption, diagnoseOption, patientSickOption, ganneiOption, ganwaiOption, moshiOption, kangningOption, hospitalOption } from './data';
// ---------------- -------- ------------------------ // ---------------- -------- ------------------------
const imgEditorRef = ref(null); const imgEditorRef = ref(null);
@ -630,6 +631,9 @@ const saveEditor = () => {
const handleOk = () => { const handleOk = () => {
showEdit.value = false; showEdit.value = false;
}; };
const formateDate=(val)=>{
return dayjs(val).format('YYYY-MM-DD')
};
defineExpose({ defineExpose({
show, show,
}); });
@ -684,7 +688,7 @@ defineExpose({
margin: 0; margin: 0;
} }
:deep(.ant-descriptions-item-label){ :deep(.ant-descriptions-item-label){
max-width: 140px; max-width: 160px;
} }
:deep(.ant-checkbox-checked .ant-checkbox-inner),:deep(.ant-radio-checked .ant-radio-inner){ :deep(.ant-checkbox-checked .ant-checkbox-inner),:deep(.ant-radio-checked .ant-radio-inner){
background-color: #1890ff; background-color: #1890ff;

View File

@ -4,26 +4,26 @@
<script setup> <script setup>
import { message, Modal } from 'ant-design-vue'; import { message, Modal } from 'ant-design-vue';
import { ref,onBeforeUnmount} from 'vue'; import { ref, onBeforeUnmount, nextTick } from 'vue';
import 'tui-image-editor/dist/tui-image-editor.css'; import 'tui-image-editor/dist/tui-image-editor.css';
import 'tui-color-picker/dist/tui-color-picker.css'; import 'tui-color-picker/dist/tui-color-picker.css';
import ImageEditor from 'tui-image-editor'; import ImageEditor from 'tui-image-editor';
import { caseplatformCaseApi } from '/@/api/business/case/caseplatform-case-api'; import { caseplatformCaseApi } from '/@/api/business/case/caseplatform-case-api';
import { FileUtil } from '/@/utils/fileutil' import { FileUtil } from '/@/utils/fileutil';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import { SmartLoading } from '/@/components/framework/smart-loading'; import { SmartLoading } from '/@/components/framework/smart-loading';
const props = defineProps({ const props = defineProps({
imgsrc: { imgsrc: {
type: String, type: String,
default:'' default: '',
}, },
imgIndex: { imgIndex: {
type: Number, type: Number,
default:0 default: 0,
}, },
imgType: { imgType: {
type: String, type: String,
default:'' default: '',
}, },
dpmasId: { dpmasId: {
type: Number, type: Number,
@ -36,11 +36,11 @@ const props=defineProps({
caseObj: { caseObj: {
type: Object, type: Object,
default: () => {}, default: () => {},
} },
}) });
const uploadImgSrc = ref(''); const uploadImgSrc = ref('');
const emit=defineEmits(['freshDetail']) const emit = defineEmits(['freshDetail']);
// tui-image-editor // tui-image-editor
const locale_zh = { const locale_zh = {
ZoomIn: '放大', ZoomIn: '放大',
@ -200,17 +200,20 @@ const HandleMainDiagnoseImg=()=>{
let obj = props.caseObj.mainDiagnose; let obj = props.caseObj.mainDiagnose;
obj.mainDiagnoseImg = uploadImgSrc.value; obj.mainDiagnoseImg = uploadImgSrc.value;
caseplatformCaseApi.updateMainDiagnose({ caseplatformCaseApi
.updateMainDiagnose({
caseId: props.caseId, caseId: props.caseId,
mainDiagnose:JSON.stringify(obj) mainDiagnose: JSON.stringify(obj),
}).then(res=>{ })
emit('freshDetail') .then((res) => {
emit('freshDetail');
SmartLoading.hide(); SmartLoading.hide();
message.success('保存成功'); message.success('保存成功');
}).catch(err=>{ })
.catch((err) => {
SmartLoading.hide(); SmartLoading.hide();
message.error('保存失败'); message.error('保存失败');
}) });
}; };
const HandleDpmasImg = () => { const HandleDpmasImg = () => {
let dpmasList = props.caseObj.dpmas; let dpmasList = props.caseObj.dpmas;
@ -221,67 +224,71 @@ const HandleDpmasImg=()=>{
break; break;
} }
} }
console.log(dpmasList[dpmasIndex].dpmasImg) console.log(dpmasList[dpmasIndex].dpmasImg);
let newImgList = dpmasList[dpmasIndex].dpmasImg.split(','); let newImgList = dpmasList[dpmasIndex].dpmasImg.split(',');
newImgList[props.imgIndex] = uploadImgSrc.value; newImgList[props.imgIndex] = uploadImgSrc.value;
let dpmasImg = ''; let dpmasImg = '';
newImgList.forEach(item=>{ newImgList.forEach((item) => {
if (dpmasImg) { if (dpmasImg) {
dpmasImg += ',' + item; dpmasImg += ',' + item;
} else { } else {
dpmasImg=item dpmasImg = item;
} }
}) });
caseplatformCaseApi.updateDpmas({ caseplatformCaseApi
.updateDpmas({
caseId: props.caseId, caseId: props.caseId,
dmpsId: props.dpmasId, dmpsId: props.dpmasId,
dpmasImg:dpmasImg dpmasImg: dpmasImg,
}).then(res=>{ })
emit('freshDetail') .then((res) => {
emit('freshDetail');
SmartLoading.hide(); SmartLoading.hide();
message.success('保存成功'); message.success('保存成功');
})
}).catch(err=>{ .catch((err) => {
SmartLoading.hide(); SmartLoading.hide();
message.error('保存失败'); message.error('保存失败');
}) });
}; };
const HandleCheckImg = () => { const HandleCheckImg = () => {
let newImgList = props.caseObj.checkImg.split(','); let newImgList = props.caseObj.checkImg.split(',');
console.log(newImgList) console.log(newImgList);
newImgList[props.imgIndex] = uploadImgSrc.value; newImgList[props.imgIndex] = uploadImgSrc.value;
let checkImg = ''; let checkImg = '';
newImgList.forEach(item=>{ newImgList.forEach((item) => {
if (checkImg) { if (checkImg) {
checkImg += ',' + item; checkImg += ',' + item;
} else { } else {
checkImg=item checkImg = item;
} }
}) });
caseplatformCaseApi.updateCheck({ caseplatformCaseApi
.updateCheck({
caseId: props.caseId, caseId: props.caseId,
checkImg:checkImg checkImg: checkImg,
}).then(res=>{ })
emit('freshDetail') .then((res) => {
emit('freshDetail');
SmartLoading.hide(); SmartLoading.hide();
message.success('保存成功'); message.success('保存成功');
})
}).catch(err=>{ .catch((err) => {
SmartLoading.hide(); SmartLoading.hide();
message.error('保存失败'); message.error('保存失败');
}) });
}; };
const getImageFormat = (imageUrl) => { const getImageFormat = (imageUrl) => {
console.log(imageUrl) console.log(imageUrl);
var parts = imageUrl.split('.'); var parts = imageUrl.split('.');
return parts[parts.length - 1]; return parts[parts.length - 1];
}; };
const getImg = (file) => { const getImg = (file) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
caseplatformCaseApi.getOssSign(1).then(res=>{ caseplatformCaseApi.getOssSign(1).then((res) => {
console.log(res.data) console.log(res.data);
let { accessid, dir, policy, signature, host } = res.data; let { accessid, dir, policy, signature, host } = res.data;
let filename = dayjs().format('YYYYMMDDHHmmss') + FileUtil.UUID() + '.' + 'png'; let filename = dayjs().format('YYYYMMDDHHmmss') + FileUtil.UUID() + '.' + 'png';
let formData = new FormData(); let formData = new FormData();
@ -291,22 +298,23 @@ const getImg=(file)=>{
formData.append('key', dir + filename); formData.append('key', dir + filename);
formData.append('file', file, filename); formData.append('file', file, filename);
formData.append('success_action_status', 200); formData.append('success_action_status', 200);
caseplatformCaseApi.ossUpload(host,formData).then(res => { caseplatformCaseApi
.ossUpload(host, formData)
.then((res) => {
console.log(host + dir + filename); console.log(host + dir + filename);
resolve(host + dir + filename); resolve(host + dir + filename);
})
}).catch((err) => { .catch((err) => {
message.error('上传失败') message.error('上传失败');
SmartLoading.hide(); SmartLoading.hide();
}) });
}) });
}) });
SmartLoading.hide(); SmartLoading.hide();
};
}
const blobToFile = (blob, name) => { const blobToFile = (blob, name) => {
return new File([blob], name, { type: blob.type }); return new File([blob], name, { type: blob.type });
} };
const save = () => { const save = () => {
SmartLoading.show(); SmartLoading.show();
@ -324,8 +332,9 @@ const save = () => {
// newSrc.value = res; // newSrc.value = res;
// }); // });
let file = blobToFile(blob, new Date().getTime() + '.png'); let file = blobToFile(blob, new Date().getTime() + '.png');
console.log(file) console.log(file);
getImg(file).then(res=>{ getImg(file)
.then((res) => {
uploadImgSrc.value = res; uploadImgSrc.value = res;
if (props.imgType === 'mainDiagnose') { if (props.imgType === 'mainDiagnose') {
HandleMainDiagnoseImg(); HandleMainDiagnoseImg();
@ -334,10 +343,10 @@ const save = () => {
} else if (props.imgType === 'check') { } else if (props.imgType === 'check') {
HandleCheckImg(); HandleCheckImg();
} }
}).catch(err=>{
SmartLoading.hide();
}) })
.catch((err) => {
SmartLoading.hide();
});
}; };
const fileToBase64 = (file) => { const fileToBase64 = (file) => {
@ -355,6 +364,7 @@ const init = (src) => {
path: src, path: src,
name: '编辑图片', name: '编辑图片',
}, },
menu: ['draw', 'text'], // flipmask menu: ['draw', 'text'], // flipmask
initMenu: 'draw', // initMenu: 'draw', //
menuBarPosition: 'bottom', // menuBarPosition: 'bottom', //
@ -362,10 +372,14 @@ const init = (src) => {
theme: customTheme, // theme: customTheme, //
}, },
cssMaxWidth: 1000, // canvas cssMaxWidth: 1000, // canvas
cssMaxHeight: 600, // cssMaxHeight: 600
usageStatistics: false, })
setTimeout(() => {
instance.value.setBrush({
color: '#000000',
width: 12,
}); });
},1000);
document.getElementsByClassName('tui-image-editor-main')[0].style.top = '45px'; // document.getElementsByClassName('tui-image-editor-main')[0].style.top = '45px'; //
//document.getElementsByClassName('tie-btn-reset tui-image-editor-item help')[0].style.display = 'none'; // //document.getElementsByClassName('tie-btn-reset tui-image-editor-item help')[0].style.display = 'none'; //
document.getElementsByClassName('tie-text-align-button')[0].style.display = 'none'; // document.getElementsByClassName('tie-text-align-button')[0].style.display = 'none'; //
@ -388,8 +402,7 @@ onBeforeUnmount(() => {
instance.value = null; instance.value = null;
} }
}); });
defineExpose({init,save}) defineExpose({ init, save });
</script> </script>
<style> <style>

View File

@ -161,7 +161,7 @@ const columns = ref([
ellipsis: true, ellipsis: true,
}, },
{ {
title: '审核状态', title: '申请状态',
dataIndex: 'status', dataIndex: 'status',
ellipsis: true, ellipsis: true,
}, },

View File

@ -31,7 +31,11 @@
<p class="hint">初始密码默认为随机</p> <p class="hint">初始密码默认为随机</p>
</a-form-item> </a-form-item>
<a-form-item label="性别" name="gender"> <a-form-item label="性别" name="gender">
<smart-enum-select style="width: 100%" v-model:value="form.gender" placeholder="请选择性别" enum-name="GENDER_ENUM" /> <a-select v-model:value="form.gender" placeholder="请选择性别">
<a-select-option value="1"></a-select-option>
<a-select-option value="2"></a-select-option>
</a-select>
<!-- <smart-enum-select style="width: 100%" v-model:value="form.gender" placeholder="请选择性别" enum-name="GENDER_ENUM" /> -->
</a-form-item> </a-form-item>
<a-form-item label="状态" name="disabledFlag"> <a-form-item label="状态" name="disabledFlag">
<a-select v-model:value="form.disabledFlag" placeholder="请选择状态"> <a-select v-model:value="form.disabledFlag" placeholder="请选择状态">
@ -79,6 +83,10 @@ import { smartSentry } from '/@/lib/smart-sentry';
} }
// //
async function showDrawer(rowData) { async function showDrawer(rowData) {
if(rowData.gender){
rowData.gender=rowData.gender.toString();
}
Object.assign(form, formDefault); Object.assign(form, formDefault);
if (rowData && !_.isEmpty(rowData)) { if (rowData && !_.isEmpty(rowData)) {
Object.assign(form, rowData); Object.assign(form, rowData);
@ -153,6 +161,7 @@ import { smartSentry } from '/@/lib/smart-sentry';
// //
async function onSubmit(keepAdding) { async function onSubmit(keepAdding) {
let validateFormRes = await validateForm(formRef.value); let validateFormRes = await validateForm(formRef.value);
if (!validateFormRes) { if (!validateFormRes) {
message.error('参数验证错误,请仔细填写表单数据!'); message.error('参数验证错误,请仔细填写表单数据!');
@ -168,6 +177,7 @@ import { smartSentry } from '/@/lib/smart-sentry';
async function addEmployee(keepAdding) { async function addEmployee(keepAdding) {
try { try {
console.log(form);
let { data } = await employeeApi.addEmployee(form); let { data } = await employeeApi.addEmployee(form);
message.success('添加成功'); message.success('添加成功');
emit('show-account', form.loginName, data); emit('show-account', form.loginName, data);