Compare commits
22 Commits
bbe721f610
...
97e28097f0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
97e28097f0 | ||
|
|
301840eab7 | ||
|
|
8637d3f96c | ||
|
|
ff86b9fdcc | ||
|
|
bf5ba59e04 | ||
|
|
305256c90f | ||
|
|
43750266a0 | ||
|
|
30895c570a | ||
|
|
d6cab3c739 | ||
|
|
806166a361 | ||
|
|
2954b6f285 | ||
|
|
4d58cf23b6 | ||
|
|
ae08b03c63 | ||
|
|
fd10f9e0fc | ||
|
|
56f88d06b2 | ||
|
|
1b2a2a0f4f | ||
|
|
d6bdabc210 | ||
|
|
37d65dd416 | ||
|
|
2ffecbe1d2 | ||
|
|
8367b54f7f | ||
|
|
320c54c998 | ||
|
|
0b6dd119b3 |
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
VITE_APP_API_URL = 'http://127.0.0.1:7001/api'
|
VITE_APP_API_URL = 'https://dev-case.igandan.com/api'
|
||||||
|
|
||||||
VITE_APP_FILE_HOST = 'https://medical-case.oss-cn-beijing.aliyuncs.com'
|
VITE_APP_FILE_HOST = 'https://medical-case.oss-cn-beijing.aliyuncs.com'
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
VITE_APP_API_URL = 'https://case.igandan.com/api'
|
VITE_APP_API_URL = 'https://prod-case.igandan.com/api'
|
||||||
|
|
||||||
VITE_APP_FILE_HOST = 'https://medical-case.oss-cn-beijing.aliyuncs.com'
|
VITE_APP_FILE_HOST = 'https://medical-case.oss-cn-beijing.aliyuncs.com'
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
VITE_APP_API_URL = 'http://127.0.0.1:1024/api'
|
VITE_APP_API_URL = 'https://dev-case.igandan.com/api'
|
||||||
|
|
||||||
VITE_APP_FILE_HOST = 'https://medical-case.oss-cn-beijing.aliyuncs.com'
|
VITE_APP_FILE_HOST = 'https://medical-case.oss-cn-beijing.aliyuncs.com'
|
||||||
|
|
||||||
@ -9,4 +9,4 @@ VITE_APP_COOKIE_DOMAIN = '.igandan.com'
|
|||||||
|
|
||||||
VITE_APP_PROFILE = 'test'
|
VITE_APP_PROFILE = 'test'
|
||||||
|
|
||||||
VITE_APP_MODE = 'development'
|
VITE_APP_MODE = 'test'
|
||||||
@ -5,7 +5,8 @@
|
|||||||
* @Date: 2024-01-11 15:18:32
|
* @Date: 2024-01-11 15:18:32
|
||||||
* @Copyright gdxz
|
* @Copyright gdxz
|
||||||
*/
|
*/
|
||||||
import { postRequest, getRequest, download,uploadRequest } from '/@/lib/axios';
|
import { postRequest, getRequest, download,uploadRequest,delRequest,putRequest} from '/@/lib/axios';
|
||||||
|
|
||||||
|
|
||||||
export const manageApi = {
|
export const manageApi = {
|
||||||
|
|
||||||
@ -54,7 +55,12 @@ export const manageApi = {
|
|||||||
return getRequest(`/caseplatformCase/settlement/${caseId}`);
|
return getRequest(`/caseplatformCase/settlement/${caseId}`);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
delDoctor: (id) => {
|
||||||
|
return delRequest(`/caseplatformExpertWhite/delete/${id}`);
|
||||||
|
},
|
||||||
|
changeStatus: (id,params) => {
|
||||||
|
return putRequest(`/caseplatformExpertWhite/update/${id}`,params);
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 审核 @author HMM
|
* 审核 @author HMM
|
||||||
|
|||||||
27
src/api/system/activity/activity-api.js
Normal file
27
src/api/system/activity/activity-api.js
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* 部门
|
||||||
|
*
|
||||||
|
* @Author: 1024创新实验室-主任:卓大
|
||||||
|
* @Date: 2022-09-03 21:58:50
|
||||||
|
* @Wechat: zhuda1024
|
||||||
|
* @Email: lab1024@163.com
|
||||||
|
* @Copyright 1024创新实验室 ( https://1024lab.net ),Since 2012
|
||||||
|
*/
|
||||||
|
import { putRequest, postRequest,delRequest} from '/@/lib/axios';
|
||||||
|
|
||||||
|
export const activityApi = {
|
||||||
|
/**
|
||||||
|
* 分页查询 @author HMM
|
||||||
|
*/
|
||||||
|
queryPage : (param) => {
|
||||||
|
return postRequest('/caseplatformCase/activity/queryPage', param);
|
||||||
|
},
|
||||||
|
delActivity: (id) => {
|
||||||
|
return delRequest(`/caseplatformCase/activity/delete/${id}`);
|
||||||
|
},
|
||||||
|
changeStatus: (id,param) => {
|
||||||
|
return putRequest(`/caseplatformCase/activity/status/${id}`,param);
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
BIN
src/assets/images/login/login_bg.jpg
Normal file
BIN
src/assets/images/login/login_bg.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 317 KiB |
@ -9,7 +9,7 @@
|
|||||||
*
|
*
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div style="border: 1px solid #ccc">
|
<div style="border: 1px solid #ccc" class="myeditor">
|
||||||
<Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig" />
|
<Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig" />
|
||||||
<Editor
|
<Editor
|
||||||
style="overflow-y: hidden"
|
style="overflow-y: hidden"
|
||||||
@ -24,23 +24,59 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { shallowRef, onBeforeUnmount, watch, ref } from 'vue';
|
import { shallowRef, onBeforeUnmount, watch, ref } from 'vue';
|
||||||
import { FILE_FOLDER_TYPE_ENUM } from '/@/constants/support/file-const';
|
import { FILE_FOLDER_TYPE_ENUM } from '/@/constants/support/file-const';
|
||||||
import { fileApi } from '/@/api/support/file/file-api';
|
import { caseplatformCaseApi } from '/@/api/business/case/caseplatform-case-api';
|
||||||
import '@wangeditor/editor/dist/css/style.css';
|
import '@wangeditor/editor/dist/css/style.css';
|
||||||
import { Editor, Toolbar } from '@wangeditor/editor-for-vue';
|
import { Editor, Toolbar } from '@wangeditor/editor-for-vue';
|
||||||
import { smartSentry } from '/@/lib/smart-sentry';
|
import { smartSentry } from '/@/lib/smart-sentry';
|
||||||
|
import { SmartLoading } from '/@/components/framework/smart-loading';
|
||||||
//菜单
|
//菜单
|
||||||
|
import dayjs from 'dayjs';
|
||||||
|
import { FileUtil } from '/@/utils/fileutil';
|
||||||
const editorConfig = props.editorConfig;
|
const editorConfig = props.editorConfig;
|
||||||
|
console.log(editorConfig);
|
||||||
|
const getImg = (file) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
caseplatformCaseApi.getOssSign(1).then((res) => {
|
||||||
|
console.log(res.data);
|
||||||
|
let { accessid, dir, policy, signature, host } = res.data;
|
||||||
|
let filename = dayjs().format('YYYYMMDDHHmmss') + FileUtil.UUID() + '.' + 'png';
|
||||||
|
let formData = new FormData();
|
||||||
|
formData.append('OSSAccessKeyId', accessid);
|
||||||
|
formData.append('policy', policy);
|
||||||
|
formData.append('signature', signature);
|
||||||
|
formData.append('key', dir + filename);
|
||||||
|
formData.append('file', file, filename);
|
||||||
|
formData.append('success_action_status', 200);
|
||||||
|
caseplatformCaseApi
|
||||||
|
.ossUpload(host, formData)
|
||||||
|
.then((res) => {
|
||||||
|
console.log(host + dir + filename);
|
||||||
|
resolve(host + dir + filename);
|
||||||
|
SmartLoading.hide();
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
alert('上传失败');
|
||||||
|
SmartLoading.hide();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
//上传
|
//上传
|
||||||
let customUpload = {
|
let customUpload = {
|
||||||
async customUpload(file, insertFn) {
|
async customUpload(file, insertFn) {
|
||||||
try {
|
try {
|
||||||
const formData = new FormData();
|
SmartLoading.show();
|
||||||
formData.append('file', file);
|
// const formData = new FormData();
|
||||||
let res = await fileApi.uploadFile(formData, FILE_FOLDER_TYPE_ENUM.COMMON.value);
|
// formData.append('file', file);
|
||||||
let data = res.data;
|
// let res = await fileApi.uploadFile(formData, FILE_FOLDER_TYPE_ENUM.COMMON.value);
|
||||||
insertFn(data.fileUrl);
|
// let data = res.data;
|
||||||
|
getImg(file).then((data) => {
|
||||||
|
console.log(data);
|
||||||
|
insertFn(data);
|
||||||
|
});
|
||||||
|
//insertFn(data.fileUrl);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
smartSentry.captureError(error);
|
smartSentry.captureError(error);
|
||||||
}
|
}
|
||||||
@ -117,4 +153,8 @@
|
|||||||
.w-e-full-screen-container {
|
.w-e-full-screen-container {
|
||||||
z-index: 9999 !important;
|
z-index: 9999 !important;
|
||||||
}
|
}
|
||||||
|
.myeditor >>> button[data-tooltip="编辑图片"]{
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -11,7 +11,8 @@ import { message } from 'ant-design-vue';
|
|||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import { clearAllCoolies, getTokenFromCookie } from '/@/utils/cookie-util';
|
import { clearAllCoolies, getTokenFromCookie } from '/@/utils/cookie-util';
|
||||||
import { localClear } from '/@/utils/local-util';
|
import { localClear } from '/@/utils/local-util';
|
||||||
|
import { useRouter } from 'vue-router';
|
||||||
|
const router = useRouter();
|
||||||
// token的消息头
|
// token的消息头
|
||||||
const TOKEN_HEADER = 'x-access-token';
|
const TOKEN_HEADER = 'x-access-token';
|
||||||
|
|
||||||
@ -55,10 +56,11 @@ smartAxios.interceptors.response.use(
|
|||||||
clearAllCoolies();
|
clearAllCoolies();
|
||||||
localClear();
|
localClear();
|
||||||
//跳转到登录页面,直接使用页面刷新的策略
|
//跳转到登录页面,直接使用页面刷新的策略
|
||||||
setTimeout(() => {
|
|
||||||
location.href = '/';
|
router.push("/login");
|
||||||
}, 300);
|
|
||||||
return Promise.reject(response);
|
return Promise.reject(response);
|
||||||
|
}else if(res.code === 200){
|
||||||
|
return Promise.resolve(res);
|
||||||
}
|
}
|
||||||
message.error(res.msg);
|
message.error(res.msg);
|
||||||
return Promise.reject(response);
|
return Promise.reject(response);
|
||||||
@ -113,15 +115,22 @@ export const getRequest = (url, params) => {
|
|||||||
export const uploadRequest = (url, data) => {
|
export const uploadRequest = (url, data) => {
|
||||||
return request({ data, url, method: 'post', headers: { 'Content-Type': 'multipart/form-data' } });
|
return request({ data, url, method: 'post', headers: { 'Content-Type': 'multipart/form-data' } });
|
||||||
};
|
};
|
||||||
|
export const delRequest = (url, data) => {
|
||||||
|
return request({ data, url, method: 'delete'});
|
||||||
|
};
|
||||||
|
/**
|
||||||
/**
|
/**
|
||||||
* 文件下载
|
* 文件下载
|
||||||
*/
|
*/
|
||||||
export const download = function (fileName, url, params) {
|
export const download = function (fileName, url, params,header='application/json') {
|
||||||
request({
|
request({
|
||||||
method: 'get',
|
method: 'get',
|
||||||
url: url,
|
url: url,
|
||||||
params: params,
|
params: params,
|
||||||
responseType: 'blob',
|
responseType: 'blob',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': header,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
if (!data) {
|
if (!data) {
|
||||||
|
|||||||
@ -55,7 +55,7 @@ async function getLoginInfo() {
|
|||||||
//更新用户信息到pinia
|
//更新用户信息到pinia
|
||||||
useUserStore().setUserLoginInfo(res.data);
|
useUserStore().setUserLoginInfo(res.data);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
message.error(e);
|
//message.error(e);
|
||||||
smartSentry.captureError(e);
|
smartSentry.captureError(e);
|
||||||
initVue();
|
initVue();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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">
|
||||||
@ -38,6 +38,7 @@
|
|||||||
<div class="row">出院诊断照片:</div>
|
<div class="row">出院诊断照片:</div>
|
||||||
<div class="row flex" v-show="caseVO.mainDiagnose.mainDiagnoseImg.split(',').length > 0">
|
<div class="row flex" v-show="caseVO.mainDiagnose.mainDiagnoseImg.split(',').length > 0">
|
||||||
<imgCell
|
<imgCell
|
||||||
|
:type="'mainDiagnose'"
|
||||||
v-for="img in caseVO.mainDiagnose.mainDiagnoseImg.split(',')"
|
v-for="img in caseVO.mainDiagnose.mainDiagnoseImg.split(',')"
|
||||||
:src="img.indexOf('http') > -1 ? img : fileHost + img"
|
:src="img.indexOf('http') > -1 ? img : fileHost + img"
|
||||||
@openEditor="openEditor"
|
@openEditor="openEditor"
|
||||||
@ -98,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>
|
||||||
@ -161,7 +162,7 @@
|
|||||||
<a-row>
|
<a-row>
|
||||||
<a-checkbox value="-1" disabled
|
<a-checkbox value="-1" disabled
|
||||||
>其他(名称:<span class="dot other">{{ formatValue(dpm.content.dose.other.name) }}</span
|
>其他(名称:<span class="dot other">{{ formatValue(dpm.content.dose.other.name) }}</span
|
||||||
> 剂量:<span class="dot other">{{ formatValue(dpm.content.dose.other.name) }}</span
|
> 剂量:<span class="dot other">{{ formatValue(dpm.content.dose.other.dose) }}</span
|
||||||
>)</a-checkbox
|
>)</a-checkbox
|
||||||
>
|
>
|
||||||
</a-row>
|
</a-row>
|
||||||
@ -171,7 +172,10 @@
|
|||||||
<a-descriptions-item label="治疗图片 " :span="2" class="required">
|
<a-descriptions-item label="治疗图片 " :span="2" class="required">
|
||||||
<div class="row flex">
|
<div class="row flex">
|
||||||
<imgCell
|
<imgCell
|
||||||
v-for="img in dpm.dpmasImg.split(',')"
|
:type="'dpmas'"
|
||||||
|
:dpmasId="dpm.dpmasId"
|
||||||
|
:imgIndex="imgindex"
|
||||||
|
v-for="(img,imgindex) in dpm.dpmasImg.split(',')"
|
||||||
:src="img.indexOf('http') > -1 ? img : fileHost + img"
|
:src="img.indexOf('http') > -1 ? img : fileHost + img"
|
||||||
@openEditor="openEditor"
|
@openEditor="openEditor"
|
||||||
></imgCell>
|
></imgCell>
|
||||||
@ -182,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>
|
||||||
@ -200,9 +204,9 @@
|
|||||||
<a-descriptions-item label="首次治疗后直接胆红素">{{ caseVO.afterDb ? caseVO.afterDb : '--' }} umol/L</a-descriptions-item>
|
<a-descriptions-item label="首次治疗后直接胆红素">{{ caseVO.afterDb ? caseVO.afterDb : '--' }} umol/L</a-descriptions-item>
|
||||||
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后直接胆红素">{{ caseVO.lastDb ? caseVO.lastDb : '--' }} umol/L</a-descriptions-item>
|
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后直接胆红素">{{ caseVO.lastDb ? caseVO.lastDb : '--' }} umol/L</a-descriptions-item>
|
||||||
|
|
||||||
<a-descriptions-item label="首次治疗前间接胆红素">{{ caseVO.headIb ? caseVO.headIb : '--' }} umol/L</a-descriptions-item>
|
<!-- <a-descriptions-item label="首次治疗前间接胆红素">{{ caseVO.headIb ? caseVO.headIb : '--' }} umol/L</a-descriptions-item>
|
||||||
<a-descriptions-item label="首次治疗后间接胆红素">{{ caseVO.afterIb ? caseVO.afterIb : '--' }} umol/L</a-descriptions-item>
|
<a-descriptions-item label="首次治疗后间接胆红素">{{ caseVO.afterIb ? caseVO.afterIb : '--' }} umol/L</a-descriptions-item>
|
||||||
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后间接胆红素">{{ caseVO.lastIb ? caseVO.lastIb : '--' }} umol/L</a-descriptions-item>
|
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后间接胆红素">{{ caseVO.lastIb ? caseVO.lastIb : '--' }} umol/L</a-descriptions-item> -->
|
||||||
|
|
||||||
<a-descriptions-item label="首次治疗前丙氨酸氨基转移酶" class="required"
|
<a-descriptions-item label="首次治疗前丙氨酸氨基转移酶" class="required"
|
||||||
>{{ caseVO.headAlt ? caseVO.headAlt : '--' }} U/L</a-descriptions-item
|
>{{ caseVO.headAlt ? caseVO.headAlt : '--' }} U/L</a-descriptions-item
|
||||||
@ -227,36 +231,60 @@
|
|||||||
<a-descriptions-item label="首次治疗前白蛋白" class="required">{{ caseVO.headAlb ? caseVO.headAlb : '--' }} g/L</a-descriptions-item>
|
<a-descriptions-item label="首次治疗前白蛋白" class="required">{{ caseVO.headAlb ? caseVO.headAlb : '--' }} g/L</a-descriptions-item>
|
||||||
<a-descriptions-item label="首次治疗后白蛋白" class="required">{{ caseVO.afterAlb ? caseVO.afterAlb : '--' }} g/L</a-descriptions-item>
|
<a-descriptions-item label="首次治疗后白蛋白" class="required">{{ caseVO.afterAlb ? caseVO.afterAlb : '--' }} g/L</a-descriptions-item>
|
||||||
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后白蛋白" class="required">{{ caseVO.lastAlb ? caseVO.lastAlb : '--' }} g/L</a-descriptions-item>
|
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后白蛋白" class="required">{{ caseVO.lastAlb ? caseVO.lastAlb : '--' }} g/L</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="首次治疗前国际标准化比值 " class="required"
|
||||||
|
>{{ caseVO.headInr ? caseVO.headInr : '--' }}</a-descriptions-item
|
||||||
|
>
|
||||||
|
<a-descriptions-item label="首次治疗后国际标准化比值 " class="required"
|
||||||
|
>{{ caseVO.afterInr ? caseVO.afterInr : '--' }}</a-descriptions-item
|
||||||
|
>
|
||||||
|
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后国际标准化比值 " class="required"
|
||||||
|
>{{ caseVO.lastInr ? caseVO.lastInr : '--' }} </a-descriptions-item
|
||||||
|
>
|
||||||
|
|
||||||
<a-descriptions-item label="首次治疗前凝血酶原活动度">{{ caseVO.headPta ? caseVO.headPta : '--' }} %</a-descriptions-item>
|
<a-descriptions-item label="首次治疗前凝血酶原活动度">{{ caseVO.headPta ? caseVO.headPta : '--' }} %</a-descriptions-item>
|
||||||
<a-descriptions-item label="首次治疗后凝血酶原活动度">{{ caseVO.afterPta ? caseVO.afterPta : '--' }} %</a-descriptions-item>
|
<a-descriptions-item label="首次治疗后凝血酶原活动度">{{ caseVO.afterPta ? caseVO.afterPta : '--' }} %</a-descriptions-item>
|
||||||
<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"
|
|
||||||
>{{ caseVO.headInr ? caseVO.headInr : '--' }} INR</a-descriptions-item
|
|
||||||
>
|
|
||||||
<a-descriptions-item label="首次治疗后国际标准化比值 " class="required"
|
|
||||||
>{{ caseVO.afterInr ? caseVO.afterInr : '--' }} INR</a-descriptions-item
|
|
||||||
>
|
|
||||||
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后国际标准化比值 " class="required"
|
|
||||||
>{{ caseVO.lastInr ? caseVO.lastInr : '--' }} INR</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 : '--' }} mg/L</a-descriptions-item>
|
||||||
<a-descriptions-item label="首次治疗后C反应蛋白">{{ caseVO.afterCrp ? caseVO.afterCrp : '--' }} ng/L</a-descriptions-item>
|
<a-descriptions-item label="首次治疗后C反应蛋白">{{ caseVO.afterCrp ? caseVO.afterCrp : '--' }} mg/L</a-descriptions-item>
|
||||||
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后C反应蛋白">{{ caseVO.lastCrp ? caseVO.lastCrp : '--' }} ng/L</a-descriptions-item>
|
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后C反应蛋白">{{ caseVO.lastCrp ? caseVO.lastCrp : '--' }} mg/L</a-descriptions-item>
|
||||||
|
|
||||||
<a-descriptions-item label="首次治疗前白介素6">{{ caseVO.headIl6 ? caseVO.headIl6 : '--' }} {{formatIl6Unit(caseVO.il6Unit)}}</a-descriptions-item>
|
<a-descriptions-item label="首次治疗前白介素6">{{ caseVO.headIl6 ? caseVO.headIl6 : '--' }} {{formatIl6Unit(caseVO.il6Unit)}}</a-descriptions-item>
|
||||||
<a-descriptions-item label="首次治疗后白介素6">{{ caseVO.afterIl6 ? caseVO.afterIl6 : '--' }}{{formatIl6Unit(caseVO.il6Unit)}}</a-descriptions-item>
|
<a-descriptions-item label="首次治疗后白介素6">{{ caseVO.afterIl6 ? caseVO.afterIl6 : '--' }}{{formatIl6Unit(caseVO.il6Unit)}}</a-descriptions-item>
|
||||||
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后 白介素6">{{ caseVO.lastIl6 ? caseVO.lastIl6 : '--' }}{{formatIl6Unit(caseVO.il6Unit)}}</a-descriptions-item>
|
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后 白介素6">{{ caseVO.lastIl6 ? caseVO.lastIl6 : '--' }}{{formatIl6Unit(caseVO.il6Unit)}}</a-descriptions-item>
|
||||||
|
|
||||||
<a-descriptions-item label="首次治疗前肿瘤坏死因子α">{{ caseVO.headTnf ? caseVO.headTnf : '--' }} μg/L</a-descriptions-item>
|
<a-descriptions-item label="首次治疗前肿瘤坏死因子-α">{{ caseVO.headTnf ? caseVO.headTnf : '--' }} {{formatTnfUnit(caseVO.tnfUnit)}}</a-descriptions-item>
|
||||||
<a-descriptions-item label="首次治疗后肿瘤坏死因子α">{{ caseVO.afterTnf ? caseVO.afterTnf : '--' }} μg/L</a-descriptions-item>
|
<a-descriptions-item label="首次治疗后肿瘤坏死因子-α">{{ caseVO.afterTnf ? caseVO.afterTnf : '--' }} {{formatTnfUnit(caseVO.tnfUnit)}}</a-descriptions-item>
|
||||||
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后肿瘤坏死因子α">{{ caseVO.lastTnf ? caseVO.lastTnf : '--' }} μg/L</a-descriptions-item>
|
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后肿瘤坏死因子-α">{{ caseVO.lastTnf ? caseVO.lastTnf : '--' }}{{formatTnfUnit(caseVO.tnfUnit)}}</a-descriptions-item>
|
||||||
<a-descriptions-item label="图片 " :span="2" class="required">
|
<a-descriptions-item label="生化指标图片" :span="5" class="required">
|
||||||
<div class="row flex">
|
<div class="row flex">
|
||||||
<imgCell
|
<imgCell
|
||||||
v-for="img in caseVO.checkImg.split(',')"
|
:type="'bio'"
|
||||||
|
:imgIndex="index"
|
||||||
|
v-for="(img,index) in caseVO.bioImg.split(',')"
|
||||||
|
:src="img.indexOf('http') > -1 ? img : fileHost + img"
|
||||||
|
@openEditor="openEditor"
|
||||||
|
></imgCell>
|
||||||
|
</div>
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="凝血功能指标图片" :span="5" class="required">
|
||||||
|
<div class="row flex">
|
||||||
|
<imgCell
|
||||||
|
:type="'coa'"
|
||||||
|
:imgIndex="index"
|
||||||
|
v-for="(img,index) in caseVO.coaImg.split(',')"
|
||||||
|
:src="img.indexOf('http') > -1 ? img : fileHost + img"
|
||||||
|
@openEditor="openEditor"
|
||||||
|
></imgCell>
|
||||||
|
</div>
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="炎症因子指标图片" :span="5" v-if="caseVO.infImg">
|
||||||
|
<div class="row flex">
|
||||||
|
<imgCell
|
||||||
|
:type="'inf'"
|
||||||
|
:imgIndex="index"
|
||||||
|
v-for="(img,index) in caseVO.infImg.split(',')"
|
||||||
:src="img.indexOf('http') > -1 ? img : fileHost + img"
|
:src="img.indexOf('http') > -1 ? img : fileHost + img"
|
||||||
@openEditor="openEditor"
|
@openEditor="openEditor"
|
||||||
></imgCell>
|
></imgCell>
|
||||||
@ -267,7 +295,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 }}
|
||||||
@ -285,8 +313,8 @@
|
|||||||
</a-tabs>
|
</a-tabs>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<a-space v-if="caseVO.status == 0">
|
<a-space v-if="caseVO.status == 0">
|
||||||
<a-button @click="cancelExamine">审核拒绝</a-button>
|
<a-button @click="cancelExamine" v-privilege="'case-system:case:examine'">审核拒绝</a-button>
|
||||||
<a-button type="primary" @click="examine">审核通过</a-button>
|
<a-button type="primary" @click="examine" v-privilege="'case-system:case:examine'">审核通过</a-button>
|
||||||
</a-space>
|
</a-space>
|
||||||
</template>
|
</template>
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
@ -301,7 +329,7 @@
|
|||||||
:width="200"
|
:width="200"
|
||||||
:src="newSrc"
|
:src="newSrc"
|
||||||
/> -->
|
/> -->
|
||||||
<div class="save" @click="save">
|
<div class="save" @click="saveEditor">
|
||||||
<a-button type="primary" shape="round">
|
<a-button type="primary" shape="round">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<save-outlined />
|
<save-outlined />
|
||||||
@ -309,7 +337,7 @@
|
|||||||
保存
|
保存
|
||||||
</a-button>
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
<imgEditor ref="imgEditorRef" v-if="showEdit" @freshDetail="getDetail"></imgEditor>
|
<imgEditor ref="imgEditorRef" :dpmasId="current_dpmasId" :imgIndex="imgIndex" :caseId="current_caseId" :caseObj="caseVO" v-if="showEdit" @freshDetail="freshDetail" :imgType="imgType"></imgEditor>
|
||||||
</div>
|
</div>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
</template>
|
</template>
|
||||||
@ -322,6 +350,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);
|
||||||
@ -333,10 +362,11 @@ const fallbackImg =
|
|||||||
'data:image/png;base64,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';
|
'data:image/png;base64,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';
|
||||||
|
|
||||||
const activeKey = ref('1');
|
const activeKey = ref('1');
|
||||||
|
const imgIndex = ref(0);
|
||||||
const current_reason = ref();
|
const current_reason = ref();
|
||||||
const current_caseId = ref();
|
const current_caseId = ref();
|
||||||
|
const imgType = ref('');
|
||||||
|
const current_dpmasId = ref(0);
|
||||||
const caseVO = ref({
|
const caseVO = ref({
|
||||||
name: undefined,
|
name: undefined,
|
||||||
uid: undefined,
|
uid: undefined,
|
||||||
@ -564,7 +594,18 @@ const formatIl6Unit = (val) => {
|
|||||||
let arr=il6Unit.filter(item=>{
|
let arr=il6Unit.filter(item=>{
|
||||||
return item.value==val;
|
return item.value==val;
|
||||||
})
|
})
|
||||||
return arr[0].name
|
return arr[0].name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const formatTnfUnit = (val) => {
|
||||||
|
if(!val){
|
||||||
|
return 'μg/L'
|
||||||
|
}else{
|
||||||
|
if(val==1){
|
||||||
|
return 'μg/L'
|
||||||
|
}else if(val==2){
|
||||||
|
return 'pg/ml'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 审核拒绝
|
// 审核拒绝
|
||||||
@ -589,7 +630,10 @@ function cancelExamine() {
|
|||||||
cancelExamineVisible.value = true;
|
cancelExamineVisible.value = true;
|
||||||
}
|
}
|
||||||
// ------------------------ 表单 ------------------------
|
// ------------------------ 表单 ------------------------
|
||||||
|
const freshDetail=()=>{
|
||||||
|
showEdit.value=false;
|
||||||
|
getDetail(current_caseId.value)
|
||||||
|
}
|
||||||
async function getDetail(id) {
|
async function getDetail(id) {
|
||||||
SmartLoading.show();
|
SmartLoading.show();
|
||||||
try {
|
try {
|
||||||
@ -604,8 +648,11 @@ async function getDetail(id) {
|
|||||||
}
|
}
|
||||||
const openEditor = (data) => {
|
const openEditor = (data) => {
|
||||||
showEdit.value = true;
|
showEdit.value = true;
|
||||||
|
imgType.value = data.type;
|
||||||
|
imgIndex.value = data.imgIndex;
|
||||||
|
current_dpmasId.value = data.dpmasId;
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
imgEditorRef.value?.init(data);
|
imgEditorRef.value?.init(data.src);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const saveEditor = () => {
|
const saveEditor = () => {
|
||||||
@ -617,6 +664,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,
|
||||||
});
|
});
|
||||||
@ -671,7 +721,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;
|
||||||
|
|||||||
@ -69,7 +69,7 @@
|
|||||||
</a-button>
|
</a-button>
|
||||||
</a-popconfirm>
|
</a-popconfirm>
|
||||||
</span>
|
</span>
|
||||||
<span v-privilege="'case-system:case:excle'">
|
<span v-privilege="'case-system:case:exportExpertCaseExceli'">
|
||||||
<a-popconfirm title="确认导出结算excel" placement="bottom" ok-text="确认" cancel-text="取消" @confirm="exportSettlementExcel">
|
<a-popconfirm title="确认导出结算excel" placement="bottom" ok-text="确认" cancel-text="取消" @confirm="exportSettlementExcel">
|
||||||
<a-button class="smart-margin-left10" >
|
<a-button class="smart-margin-left10" >
|
||||||
<template #icon>
|
<template #icon>
|
||||||
@ -79,7 +79,7 @@
|
|||||||
</a-button>
|
</a-button>
|
||||||
</a-popconfirm>
|
</a-popconfirm>
|
||||||
</span>
|
</span>
|
||||||
<span v-privilege="'case-system:case:excle'">
|
<span v-privilege="'case-system:case:caseplatformCaseSettlementImport'">
|
||||||
<a-upload
|
<a-upload
|
||||||
class="smart-margin-left10"
|
class="smart-margin-left10"
|
||||||
name="file"
|
name="file"
|
||||||
@ -162,7 +162,7 @@
|
|||||||
<a-button type="link">结算</a-button>
|
<a-button type="link">结算</a-button>
|
||||||
</a-popconfirm>
|
</a-popconfirm>
|
||||||
</span>
|
</span>
|
||||||
<a-button type="link" :href="record.signLinkPc" v-if="record.signLinkPc && record.signStatus==1">协议地址</a-button>
|
<a-button type="link" :href="record.signLinkPc" v-if="record.signLinkPc && record.signStatus==1" v-privilege="'case-system:case:protocolAddress'">协议地址</a-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -3,7 +3,9 @@
|
|||||||
<div class="mask"></div>
|
<div class="mask"></div>
|
||||||
<div class="tool">
|
<div class="tool">
|
||||||
<eye-outlined style="color: #fff; font-size: 16px; cursor: pointer" @click="priviewImg" />
|
<eye-outlined style="color: #fff; font-size: 16px; cursor: pointer" @click="priviewImg" />
|
||||||
<form-outlined style="color: #fff; font-size: 16px; margin-left: 10px; cursor: pointer" @click="showeditor" />
|
<form-outlined style="color: #fff; font-size: 16px; margin-left: 10px; cursor: pointer" @click="showeditor" v-privilege="'case-system:case:mainDiagnose'" v-if="type=='mainDiagnose'"/>
|
||||||
|
<form-outlined style="color: #fff; font-size: 16px; margin-left: 10px; cursor: pointer" @click="showeditor" v-privilege="'case-system:case:checkPermission'" v-else-if="type=='dpmas'"/>
|
||||||
|
<form-outlined style="color: #fff; font-size: 16px; margin-left: 10px; cursor: pointer" @click="showeditor" v-privilege="'case-system:case:checkdataImg'" v-else/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<img class="viewimg" :src="src" alt="" />
|
<img class="viewimg" :src="src" alt="" />
|
||||||
@ -29,14 +31,32 @@ const props = defineProps({
|
|||||||
type: String,
|
type: String,
|
||||||
default: '',
|
default: '',
|
||||||
},
|
},
|
||||||
|
type:{
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
imgIndex:{
|
||||||
|
type: Number,
|
||||||
|
default: 0,
|
||||||
|
},
|
||||||
|
dpmasId:{
|
||||||
|
type: Number,
|
||||||
|
default: 0,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const emits = defineEmits(['openEditor']);
|
const emits = defineEmits(['openEditor']);
|
||||||
const visible = ref(false);
|
const visible = ref(false);
|
||||||
const priviewImg = (value) => {
|
const priviewImg = (value) => {
|
||||||
visible.value = value;
|
visible.value = value;
|
||||||
};
|
};
|
||||||
const showeditor = () => {
|
const showeditor = () => {
|
||||||
emits('openEditor', props.src);
|
emits('openEditor', {
|
||||||
|
src:props.src,
|
||||||
|
type:props.type,
|
||||||
|
imgIndex:props.imgIndex,
|
||||||
|
dpmasId:props.dpmasId
|
||||||
|
});
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="less" >
|
<style lang="less" >
|
||||||
|
|||||||
@ -1,21 +1,46 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="tui-image-editor" ></div>
|
<div id="tui-image-editor"></div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<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/dist/tui-image-editor';
|
||||||
import { caseplatformCaseApi } from '/@/api/business/case/caseplatform-case-api';
|
import { caseplatformCaseApi } from '/@/api/business/case/caseplatform-case-api';
|
||||||
const prosp=defineProps({
|
import { FileUtil } from '/@/utils/fileutil';
|
||||||
imgsrc:{
|
import dayjs from 'dayjs';
|
||||||
type:String,
|
import { SmartLoading } from '/@/components/framework/smart-loading';
|
||||||
default:''
|
const props = defineProps({
|
||||||
}
|
imgsrc: {
|
||||||
})
|
type: String,
|
||||||
const emit=defineEmits(['freshDetail'])
|
default: '',
|
||||||
|
},
|
||||||
|
imgIndex: {
|
||||||
|
type: Number,
|
||||||
|
default: 0,
|
||||||
|
},
|
||||||
|
imgType: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
dpmasId: {
|
||||||
|
type: Number,
|
||||||
|
default: 0,
|
||||||
|
},
|
||||||
|
caseId: {
|
||||||
|
type: Number,
|
||||||
|
default: 0,
|
||||||
|
},
|
||||||
|
caseObj: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const uploadImgSrc = ref('');
|
||||||
|
|
||||||
|
const emit = defineEmits(['freshDetail']);
|
||||||
// tui-image-editor语言配置,汉化文字
|
// tui-image-editor语言配置,汉化文字
|
||||||
const locale_zh = {
|
const locale_zh = {
|
||||||
ZoomIn: '放大',
|
ZoomIn: '放大',
|
||||||
@ -171,44 +196,142 @@ const customTheme = {
|
|||||||
'colorpicker.title.color': '#fff',
|
'colorpicker.title.color': '#fff',
|
||||||
};
|
};
|
||||||
const instance = ref(null);
|
const instance = ref(null);
|
||||||
const HandleMainDiagnoseImg=()=>{
|
const HandleMainDiagnoseImg = () => {
|
||||||
caseplatformCaseApi.updateMainDiagnose({
|
let obj = props.caseObj.mainDiagnose;
|
||||||
caseId:current_caseId.value,
|
obj.mainDiagnoseImg = uploadImgSrc.value;
|
||||||
mainDiagnose:JSON.stringify(caseVO.value.mainDiagnose)
|
|
||||||
}).then(res=>{
|
caseplatformCaseApi
|
||||||
message.success('保存成功')
|
.updateMainDiagnose({
|
||||||
})
|
caseId: props.caseId,
|
||||||
|
mainDiagnose: JSON.stringify(obj),
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
emit('freshDetail');
|
||||||
|
SmartLoading.hide();
|
||||||
|
message.success('保存成功');
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
SmartLoading.hide();
|
||||||
|
message.error('保存失败');
|
||||||
|
});
|
||||||
};
|
};
|
||||||
const HandleDpmasImg=(dmpsId)=>{
|
const HandleDpmasImg = () => {
|
||||||
caseplatformCaseApi.updateDpmas({
|
let dpmasList = props.caseObj.dpmas;
|
||||||
caseId:current_caseId.value,
|
let dpmasIndex = 0;
|
||||||
dmpsId:dmpsId,
|
for (let i = 0; i < dpmasList.length; i++) {
|
||||||
dpmasImg:dpmasImg
|
if (dpmasList[i].dpmasId == props.dpmasId) {
|
||||||
}).then(res=>{
|
dpmasIndex = i;
|
||||||
message.success('保存成功')
|
break;
|
||||||
})
|
}
|
||||||
|
}
|
||||||
|
console.log(dpmasList[dpmasIndex].dpmasImg);
|
||||||
|
let newImgList = dpmasList[dpmasIndex].dpmasImg.split(',');
|
||||||
|
newImgList[props.imgIndex] = uploadImgSrc.value;
|
||||||
|
let dpmasImg = '';
|
||||||
|
newImgList.forEach((item) => {
|
||||||
|
if (dpmasImg) {
|
||||||
|
dpmasImg += ',' + item;
|
||||||
|
} else {
|
||||||
|
dpmasImg = item;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
caseplatformCaseApi
|
||||||
|
.updateDpmas({
|
||||||
|
caseId: props.caseId,
|
||||||
|
dmpsId: props.dpmasId,
|
||||||
|
dpmasImg: dpmasImg,
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
emit('freshDetail');
|
||||||
|
SmartLoading.hide();
|
||||||
|
message.success('保存成功');
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
SmartLoading.hide();
|
||||||
|
message.error('保存失败');
|
||||||
|
});
|
||||||
};
|
};
|
||||||
const HandleCheckImg=(dmpsId)=>{
|
const HandleCheckImg = () => {
|
||||||
caseplatformCaseApi.updatecheck({
|
let newImgList=[];
|
||||||
caseId:current_caseId.value,
|
if(props.imgType=='bio'){
|
||||||
dmpsId:dmpsId,
|
newImgList = props.caseObj.bioImg.split(',');
|
||||||
checkImg:checkImg
|
}else if(props.imgType=='coa'){
|
||||||
}).then(res=>{
|
newImgList = props.caseObj.coaImg.split(',');
|
||||||
message.success('保存成功')
|
}else if(props.imgType=='inf'){
|
||||||
})
|
newImgList = props.caseObj.infImg.split(',');
|
||||||
|
}
|
||||||
|
console.log(newImgList);
|
||||||
|
newImgList[props.imgIndex] = uploadImgSrc.value;
|
||||||
|
let img = '';
|
||||||
|
newImgList.forEach((item) => {
|
||||||
|
if (img) {
|
||||||
|
img += ',' + item;
|
||||||
|
} else {
|
||||||
|
img = item;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
let postData={
|
||||||
|
caseId: props.caseId,
|
||||||
|
}
|
||||||
|
if(props.imgType=='bio'){
|
||||||
|
postData.bioImg=img;
|
||||||
|
|
||||||
|
}else if(props.imgType=='coa'){
|
||||||
|
postData.coaImg=img;
|
||||||
|
}else if(props.imgType=='inf'){
|
||||||
|
postData.infImg=img;
|
||||||
|
}
|
||||||
|
caseplatformCaseApi
|
||||||
|
.updateCheck(postData)
|
||||||
|
.then((res) => {
|
||||||
|
emit('freshDetail');
|
||||||
|
SmartLoading.hide();
|
||||||
|
message.success('保存成功');
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
SmartLoading.hide();
|
||||||
|
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 getOss=()=>{
|
const getImg = (file) => {
|
||||||
caseplatformCaseApi.getOssSign(1).then(res=>{
|
return new Promise((resolve, reject) => {
|
||||||
let { accessid, dir,policy,signature,host} = res;
|
caseplatformCaseApi.getOssSign(1).then((res) => {
|
||||||
let imgUrl = file;
|
console.log(res.data);
|
||||||
})
|
let { accessid, dir, policy, signature, host } = res.data;
|
||||||
}
|
let filename = dayjs().format('YYYYMMDDHHmmss') + FileUtil.UUID() + '.' + 'png';
|
||||||
|
let formData = new FormData();
|
||||||
|
formData.append('OSSAccessKeyId', accessid);
|
||||||
|
formData.append('policy', policy);
|
||||||
|
formData.append('signature', signature);
|
||||||
|
formData.append('key', dir + filename);
|
||||||
|
formData.append('file', file, filename);
|
||||||
|
formData.append('success_action_status', 200);
|
||||||
|
caseplatformCaseApi
|
||||||
|
.ossUpload(host, formData)
|
||||||
|
.then((res) => {
|
||||||
|
console.log(host + dir + filename);
|
||||||
|
resolve(host + dir + filename);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
message.error('上传失败');
|
||||||
|
SmartLoading.hide();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
SmartLoading.hide();
|
||||||
|
};
|
||||||
|
const blobToFile = (blob, name) => {
|
||||||
|
return new File([blob], name, { type: blob.type });
|
||||||
|
};
|
||||||
|
|
||||||
const save = () => {
|
const save = () => {
|
||||||
|
SmartLoading.show();
|
||||||
instance.value.resetZoom();
|
instance.value.resetZoom();
|
||||||
const base64String = instance.value.toDataURL(); // base64 文件
|
const base64String = instance.value.toDataURL(); // base64 文件
|
||||||
const data = window.atob(base64String.split(',')[1]);
|
const data = window.atob(base64String.split(',')[1]);
|
||||||
@ -218,10 +341,26 @@ const save = () => {
|
|||||||
}
|
}
|
||||||
const blob = new Blob([ia], { type: 'image/png' }); // blob 文件
|
const blob = new Blob([ia], { type: 'image/png' }); // blob 文件
|
||||||
//下面懒得弄组件直接用当前时间弄得文件名,如果后台写了这里可以随便,也可以使用uuid进行生成
|
//下面懒得弄组件直接用当前时间弄得文件名,如果后台写了这里可以随便,也可以使用uuid进行生成
|
||||||
const file = new File([blob], new Date().getTime() + '.jpeg', { type: blob.type });
|
// const file = new File([blob], new Date().getTime() + '.jpeg', { type: blob.type });
|
||||||
fileToBase64(file).then((res) => {
|
// fileToBase64(file).then((res) => {
|
||||||
newSrc.value = res;
|
// newSrc.value = res;
|
||||||
});
|
// });
|
||||||
|
let file = blobToFile(blob, new Date().getTime() + '.png');
|
||||||
|
console.log(file);
|
||||||
|
getImg(file)
|
||||||
|
.then((res) => {
|
||||||
|
uploadImgSrc.value = res;
|
||||||
|
if (props.imgType === 'mainDiagnose') {
|
||||||
|
HandleMainDiagnoseImg();
|
||||||
|
} else if (props.imgType === 'dpmas') {
|
||||||
|
HandleDpmasImg();
|
||||||
|
} else if (props.imgType === 'bio' || props.imgType === 'coa' || props.imgType === 'inf') {
|
||||||
|
HandleCheckImg();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
SmartLoading.hide();
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const fileToBase64 = (file) => {
|
const fileToBase64 = (file) => {
|
||||||
@ -233,12 +372,15 @@ const fileToBase64 = (file) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
const init = (src) => {
|
const init = (src) => {
|
||||||
|
// console.log(ImageEditor);
|
||||||
instance.value = new ImageEditor(document.querySelector('#tui-image-editor'), {
|
instance.value = new ImageEditor(document.querySelector('#tui-image-editor'), {
|
||||||
|
|
||||||
includeUI: {
|
includeUI: {
|
||||||
loadImage: {
|
loadImage: {
|
||||||
path: src,
|
path: src+'?time='+new Date().getTime(),
|
||||||
name: '编辑图片',
|
name: '编辑图片',
|
||||||
},
|
},
|
||||||
|
|
||||||
menu: ['draw', 'text'], // 底部菜单按钮列表 隐藏镜像flip和遮罩mask
|
menu: ['draw', 'text'], // 底部菜单按钮列表 隐藏镜像flip和遮罩mask
|
||||||
initMenu: 'draw', // 默认打开的菜单项
|
initMenu: 'draw', // 默认打开的菜单项
|
||||||
menuBarPosition: 'bottom', // 菜单所在的位置
|
menuBarPosition: 'bottom', // 菜单所在的位置
|
||||||
@ -246,10 +388,9 @@ const init = (src) => {
|
|||||||
theme: customTheme, // 自定义样式
|
theme: customTheme, // 自定义样式
|
||||||
},
|
},
|
||||||
cssMaxWidth: 1000, // canvas 最大宽度
|
cssMaxWidth: 1000, // canvas 最大宽度
|
||||||
cssMaxHeight: 600, //
|
cssMaxHeight: 800
|
||||||
usageStatistics: false,
|
})
|
||||||
});
|
|
||||||
|
|
||||||
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'; // 隐藏文字对齐选项
|
||||||
@ -272,8 +413,7 @@ onBeforeUnmount(() => {
|
|||||||
instance.value = null;
|
instance.value = null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
defineExpose({init,save})
|
defineExpose({ init, save });
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
@ -346,7 +486,7 @@ defineExpose({init,save})
|
|||||||
top: 14px;
|
top: 14px;
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
color:#fff;
|
color: #fff;
|
||||||
font-size: 17px;
|
font-size: 17px;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -102,41 +102,28 @@
|
|||||||
<span>{{ text ? text.substring(0, 11) : '--' }}</span>
|
<span>{{ text ? text.substring(0, 11) : '--' }}</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="column.dataIndex === 'signStatus'">
|
<template v-if="column.dataIndex === 'status'">
|
||||||
<a-tag :color="text == 1 ? 'success' : 'error'">{{ text == 1 ? '已签署' : '未签署' }}</a-tag>
|
<a-tag :color="text == 1 ? 'success' : 'error'">{{ text == 1 ? '正常' : '失效' }}</a-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="column.dataIndex === 'caseType'">
|
<template v-if="column.dataIndex === 'caseType'">
|
||||||
<a-tag :color="$smartEnumPlugin.getColorByValue('CASETYPE', item)" v-for="item in formatJson(record.caseType)">{{
|
<a-tag :color="$smartEnumPlugin.getColorByValue('CASETYPE', item)" v-for="item in formatJson(record.caseType)">{{
|
||||||
$smartEnumPlugin.getDescByValue('CASETYPE', item)
|
$smartEnumPlugin.getDescByValue('CASETYPE', item)
|
||||||
}}</a-tag>
|
}}</a-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="column.dataIndex === 'status'">
|
<!-- <template v-if="column.dataIndex === 'status'">
|
||||||
<a-tag :color="$smartEnumPlugin.getColorByValue('CASESTATUS', text)">{{ $smartEnumPlugin.getDescByValue('CASESTATUS', text) }}</a-tag>
|
<a-tag :color="$smartEnumPlugin.getColorByValue('CASESTATUS', text)">{{ $smartEnumPlugin.getDescByValue('CASESTATUS', text) }}</a-tag>
|
||||||
</template>
|
</template> -->
|
||||||
<template v-if="column.dataIndex === 'settlementFlag'">
|
<template v-if="column.dataIndex === 'settlementFlag'">
|
||||||
<a-tag :color="$smartEnumPlugin.getColorByValue('CASESettlementFlag', text)">{{
|
<a-tag :color="$smartEnumPlugin.getColorByValue('CASESettlementFlag', text)">{{
|
||||||
$smartEnumPlugin.getDescByValue('CASESettlementFlag', text)
|
$smartEnumPlugin.getDescByValue('CASESettlementFlag', text)
|
||||||
}}</a-tag>
|
}}</a-tag>
|
||||||
</template>
|
</template>
|
||||||
<!-- <template v-if="column.dataIndex === 'action'">
|
<template v-if="column.dataIndex === 'action'">
|
||||||
<div class="smart-table-operate">
|
<div class="smart-table-operate">
|
||||||
<a-button @click="showForm(record.id)" type="link" v-privilege="'case-system:case:select'">查看</a-button>
|
<a-button @click="delDoctor(record.id)" type="link" danger>删除</a-button>
|
||||||
<span v-privilege="'case-system:case:examine'">
|
<a-button @click="changeStatus(record.id,record.status)" type="link" >{{record.status==1?'白名单失效':'白名单正常'}}</a-button>
|
||||||
<a-popconfirm title="请选择审核结果" placement="topRight" ok-text="审核通过" cancel-text="审核不通过"
|
|
||||||
@confirm="confirmExamine(record)" @cancel="cancelExamine(record)" v-if="record.status == 0">
|
|
||||||
<a-button type="link">审核</a-button>
|
|
||||||
</a-popconfirm>
|
|
||||||
</span>
|
|
||||||
<a-button v-if="record.status == 2" @click="showReason(record.reason)" type="link" v-privilege="'case-system:case:reason'">原因</a-button>
|
|
||||||
<span v-privilege="'case-system:case:settlement'">
|
|
||||||
<a-popconfirm title="确认结算?" placement="topRight" ok-text="结算" cancel-text="取消"
|
|
||||||
@confirm="settlement(record.id)" v-if="record.status == 1 && record.settlementFlag == 0">
|
|
||||||
<a-button type="link">结算</a-button>
|
|
||||||
</a-popconfirm>
|
|
||||||
</span>
|
|
||||||
<a-button type="link" :href="record.signLinkPc" v-if="record.signLinkPc && record.signStatus==1">协议地址</a-button>
|
|
||||||
</div>
|
</div>
|
||||||
</template> -->
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</a-table>
|
</a-table>
|
||||||
<!---------- 表格 end ----------->
|
<!---------- 表格 end ----------->
|
||||||
@ -197,16 +184,31 @@ const columns = ref([
|
|||||||
dataIndex: 'name',
|
dataIndex: 'name',
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: '白名单状态',
|
||||||
|
dataIndex: 'status',
|
||||||
|
ellipsis: true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: '手机号',
|
title: '手机号',
|
||||||
dataIndex: 'mobile',
|
dataIndex: 'mobile',
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '省份',
|
||||||
|
dataIndex: 'prov',
|
||||||
|
ellipsis: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '医院',
|
title: '医院',
|
||||||
dataIndex: 'hospitalName',
|
dataIndex: 'hospitalName',
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: '科室',
|
||||||
|
dataIndex: 'department',
|
||||||
|
ellipsis: true,
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: '创建时间',
|
title: '创建时间',
|
||||||
@ -215,12 +217,12 @@ const columns = ref([
|
|||||||
width: 100,
|
width: 100,
|
||||||
},
|
},
|
||||||
|
|
||||||
// {
|
{
|
||||||
// title: '操作',
|
title: '操作',
|
||||||
// dataIndex: 'action',
|
dataIndex: 'action',
|
||||||
// fixed: 'right',
|
fixed: 'right',
|
||||||
// width: 155,
|
width: 155,
|
||||||
// },
|
},
|
||||||
]);
|
]);
|
||||||
const uploadMethod=(file)=>{
|
const uploadMethod=(file)=>{
|
||||||
SmartLoading.show();
|
SmartLoading.show();
|
||||||
@ -248,6 +250,25 @@ const uploadMethod=(file)=>{
|
|||||||
message.error(`上传失败`);
|
message.error(`上传失败`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const delDoctor=(id)=>{
|
||||||
|
Modal.confirm({
|
||||||
|
title: '确认删除?',
|
||||||
|
content: '确定要删除该医生吗?',
|
||||||
|
okText: '确认',
|
||||||
|
cancelText: '取消',
|
||||||
|
onOk(){
|
||||||
|
SmartLoading.show();
|
||||||
|
manageApi.delDoctor(id).then((res)=>{
|
||||||
|
message.success(`删除成功`);
|
||||||
|
queryData();
|
||||||
|
SmartLoading.hide();
|
||||||
|
}).catch((err)=>{
|
||||||
|
smartSentry.captureError(err);
|
||||||
|
SmartLoading.hide();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
// ---------------------------- 查询数据表单和方法 ----------------------------
|
// ---------------------------- 查询数据表单和方法 ----------------------------
|
||||||
|
|
||||||
const queryFormState = {
|
const queryFormState = {
|
||||||
@ -293,7 +314,16 @@ async function queryData() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const changeStatus=(id,status)=>{
|
||||||
|
manageApi.changeStatus(id,{
|
||||||
|
status:status==1?2:1
|
||||||
|
}).then((res)=>{
|
||||||
|
message.success(`操作成功`);
|
||||||
|
queryData();
|
||||||
|
}).catch((err)=>{
|
||||||
|
smartSentry.captureError(err);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
689
src/views/system/activity/form.vue
Normal file
689
src/views/system/activity/form.vue
Normal file
@ -0,0 +1,689 @@
|
|||||||
|
<!--
|
||||||
|
* 病例表
|
||||||
|
*
|
||||||
|
* @Author: HMM
|
||||||
|
* @Date: 2024-01-11 15:18:32
|
||||||
|
* @Copyright gdxz
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<div class="con">
|
||||||
|
<a-drawer :title="'查看'" width="75%" :visible="visibleFlag" @cancel="onClose" @close="onClose" :maskClosable="true" :destroyOnClose="true">
|
||||||
|
<a-tabs v-model:activeKey="activeKey">
|
||||||
|
<a-tab-pane key="1" tab="基本信息">
|
||||||
|
<a-descriptions title="" bordered>
|
||||||
|
<a-descriptions-item label="患者姓名 " class="required">{{ caseVO.name ? caseVO.name : '--' }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="患者ID " class="required">{{ caseVO.uid ? caseVO.uid : '--' }}</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="入院时间 " :span="2" class="required">{{
|
||||||
|
caseVO.admissionTime ? caseVO.admissionTime : '--'
|
||||||
|
}}</a-descriptions-item>
|
||||||
|
|
||||||
|
<a-descriptions-item label="治疗类型(多选) " :span="3" class="required">
|
||||||
|
<a-checkbox-group v-model:value="caseVO.caseType">
|
||||||
|
<a-checkbox v-for="item in caseTypeOption" :key="item.name" :value="item.value" disabled>{{ item.name }}</a-checkbox>
|
||||||
|
</a-checkbox-group>
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="主要诊断" :span="3" class="required">
|
||||||
|
<div class="row">类型(多选):</div>
|
||||||
|
<div class="row">
|
||||||
|
<a-checkbox-group v-model:value="caseVO.mainDiagnose.select">
|
||||||
|
<a-checkbox v-for="item in diagnoseOption" :key="item.name" :value="item.value" disabled>{{ item.name }}</a-checkbox>
|
||||||
|
</a-checkbox-group>
|
||||||
|
</div>
|
||||||
|
<div class="row" v-if="caseVO.mainDiagnose.otherValue">其他:</div>
|
||||||
|
<div class="row" v-if="caseVO.mainDiagnose.otherValue">
|
||||||
|
{{ caseVO.mainDiagnose.otherValue }}
|
||||||
|
</div>
|
||||||
|
<div class="row">出院诊断照片:</div>
|
||||||
|
<div class="row flex" v-show="caseVO.mainDiagnose.mainDiagnoseImg.split(',').length > 0">
|
||||||
|
<imgCell
|
||||||
|
v-for="img in caseVO.mainDiagnose.mainDiagnoseImg.split(',')"
|
||||||
|
:src="img.indexOf('http') > -1 ? img : fileHost + img"
|
||||||
|
@openEditor="openEditor"
|
||||||
|
></imgCell>
|
||||||
|
</div>
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="患病原因" :span="3" class="required">
|
||||||
|
<div class="row">类型(多选):</div>
|
||||||
|
<div class="row">
|
||||||
|
<a-checkbox-group v-model:value="caseVO.diseaseCause.select">
|
||||||
|
<a-checkbox v-for="item in patientSickOption" :key="item.name" :value="item.value" disabled>{{ item.name }}</a-checkbox>
|
||||||
|
</a-checkbox-group>
|
||||||
|
</div>
|
||||||
|
<div class="row" v-if="caseVO.diseaseCause.otherValue">其他:</div>
|
||||||
|
<div class="row" v-if="caseVO.diseaseCause.otherValue">{{ caseVO.diseaseCause.otherValue }}</div>
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="诱因" :span="3" v-if="caseVO.seductionReason">
|
||||||
|
<div class="row" v-if="caseVO.seductionReason.inside">肝内类型(多选):</div>
|
||||||
|
<div class="row" v-if="caseVO.seductionReason.inside">
|
||||||
|
<a-checkbox-group v-model:value="caseVO.seductionReason.inside.select">
|
||||||
|
<a-checkbox v-for="item in ganneiOption" :key="item.name" :value="item.value" disabled>{{ item.name }}</a-checkbox>
|
||||||
|
</a-checkbox-group>
|
||||||
|
</div>
|
||||||
|
<div class="row" v-if="caseVO.seductionReason.inside && caseVO.seductionReason.inside.otherValue">肝内其他:</div>
|
||||||
|
<div class="row" v-if="caseVO.seductionReason.inside && caseVO.seductionReason.inside.otherValue">
|
||||||
|
{{ caseVO.seductionReason.inside.otherValue }}
|
||||||
|
</div>
|
||||||
|
<div class="row" v-if="caseVO.seductionReason.outside">肝外类型(多选):</div>
|
||||||
|
<div class="row" v-if="caseVO.seductionReason.inside">
|
||||||
|
<a-checkbox-group v-model:value="caseVO.seductionReason.outside.select">
|
||||||
|
<a-checkbox v-for="item in ganwaiOption" :key="item.name" :value="item.value" disabled>{{ item.name }}</a-checkbox>
|
||||||
|
</a-checkbox-group>
|
||||||
|
</div>
|
||||||
|
<div class="row" v-if="caseVO.seductionReason.outside && caseVO.seductionReason.outside.otherValue">肝外其他:</div>
|
||||||
|
<div class="row" v-if="caseVO.seductionReason.outside && caseVO.seductionReason.outside.otherValue">
|
||||||
|
{{ caseVO.seductionReason.outside.otherValue }}
|
||||||
|
</div>
|
||||||
|
</a-descriptions-item>
|
||||||
|
</a-descriptions>
|
||||||
|
</a-tab-pane>
|
||||||
|
<a-tab-pane key="2" tab="临床资料" force-render>
|
||||||
|
<!-- <span style="font-size: 15px; color: rgb(131, 130, 130)">
|
||||||
|
<exclamation-circle-outlined style="color: chocolate; margin-bottom: 20px" /> 文字/图片(至少上传一项)</span
|
||||||
|
> -->
|
||||||
|
<a-descriptions title="" bordered>
|
||||||
|
<a-descriptions-item label="临床摘要" :span="3" style="white-space: pre-wrap" class="required">
|
||||||
|
<div class="row" v-html="caseVO.abstractStr ? caseVO.abstractStr : '--'"></div>
|
||||||
|
</a-descriptions-item>
|
||||||
|
</a-descriptions>
|
||||||
|
</a-tab-pane>
|
||||||
|
<a-tab-pane key="3" tab="DPMAS">
|
||||||
|
<a-descriptions
|
||||||
|
:column="2"
|
||||||
|
:title="'第' + (index + 1) + '次治疗'"
|
||||||
|
bordered
|
||||||
|
v-for="(dpm, index) in caseVO.dpmas"
|
||||||
|
style="margin-bottom: 20px"
|
||||||
|
>
|
||||||
|
|
||||||
|
<a-descriptions-item label="治疗时间 " :span="2" class="required">
|
||||||
|
{{ dpm.treatTime }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="治疗内容 " :span="2" class="required" v-if="dpm">
|
||||||
|
<div class="row">1、模式(单选):</div>
|
||||||
|
<div class="desc">
|
||||||
|
|
||||||
|
<a-radio-group v-model:value="dpm.content.mode.select">
|
||||||
|
<a-radio :value="cell.value" disabled v-for="cell in moshiOption">{{ cell.name }}</a-radio>
|
||||||
|
</a-radio-group>
|
||||||
|
</div>
|
||||||
|
<div class="desc" v-if="dpm.content.mode.otherValue">其他:</div>
|
||||||
|
<div class="desc" v-if="dpm.content.mode.otherValue">{{ dpm.content.mode.otherValue }}</div>
|
||||||
|
<div class="row">
|
||||||
|
2、血浆吸附处理量:<span class="dot">{{ dpm.content.plasma.handle }}</span
|
||||||
|
>ml,血浆置换量:<span class="dot">{{ dpm.content.plasma.replace }}</span
|
||||||
|
>ml
|
||||||
|
</div>
|
||||||
|
<div class="row">3、抗凝剂量(选填)</div>
|
||||||
|
<div class="desc">
|
||||||
|
<a-checkbox-group v-model:value="dpm.content.dose.select">
|
||||||
|
<a-row>
|
||||||
|
<a-checkbox value="1"
|
||||||
|
disabled
|
||||||
|
>肝素(首剂<span class="dot">
|
||||||
|
{{ formatValue(dpm.content.dose.heparin.firstDose) }}
|
||||||
|
</span
|
||||||
|
>(<a-radio-group style="margin-left: 8px;" v-model:value="dpm.content.dose.heparin.firstDoseUnit">
|
||||||
|
<a-radio value="1" disabled>IU</a-radio><a-radio value="2" disabled>mg</a-radio></a-radio-group>) ,追加<span class="dot">{{ formatValue(dpm.content.dose.heparin.append) }}</span
|
||||||
|
>(<a-radio-group style="margin-left: 8px;" v-model:value="dpm.content.dose.heparin.appendUnit">
|
||||||
|
<a-radio value="1" disabled>IU</a-radio>
|
||||||
|
<a-radio value="2" disabled>mg</a-radio>
|
||||||
|
</a-radio-group>))</a-checkbox
|
||||||
|
>
|
||||||
|
</a-row>
|
||||||
|
<a-row>
|
||||||
|
<a-checkbox value="2" disabled
|
||||||
|
>低分子肝素<span class="dot">{{ formatValue(dpm.content.dose.lowHeparin.value) }}</span
|
||||||
|
>(IU)</a-checkbox
|
||||||
|
>
|
||||||
|
</a-row>
|
||||||
|
<a-row>
|
||||||
|
<a-checkbox value="3" disabled
|
||||||
|
>枸橼酸(血液流速<span class="dot">{{ formatValue(dpm.content.dose.citricAcid.bloodFlowRate) }}</span
|
||||||
|
>ml/min,枸橼酸钠流速<span class="dot">{{ formatValue(dpm.content.dose.citricAcid.citricAcidFlowRate) }}</span
|
||||||
|
>ml/h,钙剂(<span>
|
||||||
|
<a-radio-group style="margin-left: 8px;" v-model:value="dpm.content.dose.citricAcid.calciumAgent.select">
|
||||||
|
<a-radio :value="1" disabled>10%葡萄糖酸钙</a-radio>
|
||||||
|
<a-radio :value="2" disabled>5%氯化钙</a-radio>
|
||||||
|
</a-radio-group> </span
|
||||||
|
>)<span class="dot">{{ formatValue(dpm.content.dose.citricAcid.calciumAgent.value) }}</span
|
||||||
|
>ml/h)</a-checkbox
|
||||||
|
>
|
||||||
|
</a-row>
|
||||||
|
<a-row>
|
||||||
|
<a-checkbox value="4" disabled
|
||||||
|
>甲磺酸萘莫司他(维持量:<span class="dot">{{ formatValue(dpm.content.dose.nafamostat.value) }}</span
|
||||||
|
>mg/h)</a-checkbox
|
||||||
|
>
|
||||||
|
|
||||||
|
</a-row>
|
||||||
|
<a-row>
|
||||||
|
<a-checkbox value="-1" disabled
|
||||||
|
>其他(名称:<span class="dot other">{{ formatValue(dpm.content.dose.other.name) }}</span
|
||||||
|
> 剂量:<span class="dot other">{{ formatValue(dpm.content.dose.other.name) }}</span
|
||||||
|
>)</a-checkbox
|
||||||
|
>
|
||||||
|
</a-row>
|
||||||
|
</a-checkbox-group>
|
||||||
|
</div>
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="治疗图片 " :span="2" class="required">
|
||||||
|
<div class="row flex">
|
||||||
|
<imgCell
|
||||||
|
v-for="img in dpm.dpmasImg.split(',')"
|
||||||
|
:src="img.indexOf('http') > -1 ? img : fileHost + img"
|
||||||
|
@openEditor="openEditor"
|
||||||
|
></imgCell>
|
||||||
|
</div>
|
||||||
|
</a-descriptions-item>
|
||||||
|
</a-descriptions>
|
||||||
|
</a-tab-pane>
|
||||||
|
<a-tab-pane key="4" tab="实验室检测">
|
||||||
|
<a-descriptions title="" bordered :column="caseVO.dpmas.length>1?3:2">
|
||||||
|
<a-descriptions-item label="首次治疗前检测时间 " :span="3" class="required">
|
||||||
|
{{ caseVO.headTime }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="首次治疗后检测时间 " :span="3" class="required">
|
||||||
|
{{ caseVO.afterTime }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="最后一次治疗后检测时间 " :span="3" class="required" v-if="caseVO.dpmas.length>1">
|
||||||
|
{{ caseVO.lastTime }}
|
||||||
|
</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 v-if="caseVO.dpmas.length>1" label="最后一次治疗后总胆红素" class="required"
|
||||||
|
>{{ caseVO.lastTb ? caseVO.lastTb : '--' }} umol/L</a-descriptions-item
|
||||||
|
>
|
||||||
|
|
||||||
|
<a-descriptions-item label="首次治疗前直接胆红素">{{ caseVO.headDb ? caseVO.headDb : '--' }} umol/L</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="首次治疗后直接胆红素">{{ caseVO.afterDb ? caseVO.afterDb : '--' }} umol/L</a-descriptions-item>
|
||||||
|
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后直接胆红素">{{ caseVO.lastDb ? caseVO.lastDb : '--' }} umol/L</a-descriptions-item>
|
||||||
|
|
||||||
|
<a-descriptions-item label="首次治疗前间接胆红素">{{ caseVO.headIb ? caseVO.headIb : '--' }} umol/L</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="首次治疗后间接胆红素">{{ caseVO.afterIb ? caseVO.afterIb : '--' }} umol/L</a-descriptions-item>
|
||||||
|
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后间接胆红素">{{ caseVO.lastIb ? caseVO.lastIb : '--' }} umol/L</a-descriptions-item>
|
||||||
|
|
||||||
|
<a-descriptions-item label="首次治疗前丙氨酸氨基转移酶" class="required"
|
||||||
|
>{{ caseVO.headAlt ? caseVO.headAlt : '--' }} U/L</a-descriptions-item
|
||||||
|
>
|
||||||
|
<a-descriptions-item label="首次治疗后丙氨酸氨基转移酶" class="required"
|
||||||
|
>{{ caseVO.afterAlt ? caseVO.afterAlt : '--' }} U/L</a-descriptions-item
|
||||||
|
>
|
||||||
|
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后丙氨酸氨基转移酶" class="required"
|
||||||
|
>{{ caseVO.lastAlt ? caseVO.lastAlt : '--' }} U/L</a-descriptions-item
|
||||||
|
>
|
||||||
|
|
||||||
|
<a-descriptions-item label="首次治疗前天门冬氨酸氨基转移酶" class="required"
|
||||||
|
>{{ caseVO.headAst ? caseVO.headAst : '--' }} U/L</a-descriptions-item
|
||||||
|
>
|
||||||
|
<a-descriptions-item label="首次治疗后天门冬氨酸氨基转移酶" class="required"
|
||||||
|
>{{ caseVO.afterAst ? caseVO.afterAst : '--' }} U/L</a-descriptions-item
|
||||||
|
>
|
||||||
|
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后天门冬氨酸氨基转移酶" class="required"
|
||||||
|
>{{ caseVO.lastAst ? caseVO.lastAst : '--' }} U/L</a-descriptions-item
|
||||||
|
>
|
||||||
|
|
||||||
|
<a-descriptions-item label="首次治疗前白蛋白" class="required">{{ caseVO.headAlb ? caseVO.headAlb : '--' }} g/L</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="首次治疗后白蛋白" class="required">{{ caseVO.afterAlb ? caseVO.afterAlb : '--' }} g/L</a-descriptions-item>
|
||||||
|
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后白蛋白" class="required">{{ caseVO.lastAlb ? caseVO.lastAlb : '--' }} g/L</a-descriptions-item>
|
||||||
|
|
||||||
|
<a-descriptions-item label="首次治疗前凝血酶原活动度">{{ caseVO.headPta ? caseVO.headPta : '--' }} %</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="首次治疗后凝血酶原活动度">{{ caseVO.afterPta ? caseVO.afterPta : '--' }} %</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"
|
||||||
|
>{{ caseVO.headInr ? caseVO.headInr : '--' }} INR</a-descriptions-item
|
||||||
|
>
|
||||||
|
<a-descriptions-item label="首次治疗后国际标准化比值 " class="required"
|
||||||
|
>{{ caseVO.afterInr ? caseVO.afterInr : '--' }} INR</a-descriptions-item
|
||||||
|
>
|
||||||
|
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后国际标准化比值 " class="required"
|
||||||
|
>{{ caseVO.lastInr ? caseVO.lastInr : '--' }} INR</a-descriptions-item
|
||||||
|
>
|
||||||
|
|
||||||
|
<a-descriptions-item label="首次治疗前C反应蛋白">{{ caseVO.headCrp ? caseVO.headCrp : '--' }} ng/L</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="首次治疗后C反应蛋白">{{ caseVO.afterCrp ? caseVO.afterCrp : '--' }} ng/L</a-descriptions-item>
|
||||||
|
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后C反应蛋白">{{ caseVO.lastCrp ? caseVO.lastCrp : '--' }} ng/L</a-descriptions-item>
|
||||||
|
|
||||||
|
<a-descriptions-item label="首次治疗前白介素6">{{ caseVO.headIl6 ? caseVO.headIl6 : '--' }} {{formatIl6Unit(caseVO.il6Unit)}}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="首次治疗后白介素6">{{ caseVO.afterIl6 ? caseVO.afterIl6 : '--' }}{{formatIl6Unit(caseVO.il6Unit)}}</a-descriptions-item>
|
||||||
|
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后 白介素6">{{ caseVO.lastIl6 ? caseVO.lastIl6 : '--' }}{{formatIl6Unit(caseVO.il6Unit)}}</a-descriptions-item>
|
||||||
|
|
||||||
|
<a-descriptions-item label="首次治疗前肿瘤坏死因子α">{{ caseVO.headTnf ? caseVO.headTnf : '--' }} μg/L</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="首次治疗后肿瘤坏死因子α">{{ caseVO.afterTnf ? caseVO.afterTnf : '--' }} μg/L</a-descriptions-item>
|
||||||
|
<a-descriptions-item v-if="caseVO.dpmas.length>1" label="最后一次治疗后肿瘤坏死因子α">{{ caseVO.lastTnf ? caseVO.lastTnf : '--' }} μg/L</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="图片 " :span="2" class="required">
|
||||||
|
<div class="row flex">
|
||||||
|
<imgCell
|
||||||
|
v-for="img in caseVO.checkImg.split(',')"
|
||||||
|
:src="img.indexOf('http') > -1 ? img : fileHost + img"
|
||||||
|
@openEditor="openEditor"
|
||||||
|
></imgCell>
|
||||||
|
</div>
|
||||||
|
</a-descriptions-item>
|
||||||
|
</a-descriptions>
|
||||||
|
</a-tab-pane>
|
||||||
|
<a-tab-pane key="5" tab="疾病转归">
|
||||||
|
<a-descriptions title="" bordered :column="4">
|
||||||
|
<a-descriptions-item label="出院时间 " :span="3" class="required">
|
||||||
|
{{ caseVO.dischargeTime }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="出院天数 " :span="3" class="required">
|
||||||
|
{{ caseVO.day }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="出院情况 " :span="6" class="required">
|
||||||
|
{{ caseVO.dischargeSituation }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="出院状态(单选)" :span="6" class="required">
|
||||||
|
<a-radio-group v-model:value="caseVO.dischargeStatus">
|
||||||
|
<a-radio :value="item.value" disabled v-for="item in hospitalOption">{{ item.name }}</a-radio>
|
||||||
|
</a-radio-group>
|
||||||
|
</a-descriptions-item>
|
||||||
|
</a-descriptions>
|
||||||
|
</a-tab-pane>
|
||||||
|
</a-tabs>
|
||||||
|
<template #footer>
|
||||||
|
<a-space v-if="caseVO.status == 0">
|
||||||
|
<a-button @click="cancelExamine">审核拒绝</a-button>
|
||||||
|
<a-button type="primary" @click="examine">审核通过</a-button>
|
||||||
|
</a-space>
|
||||||
|
</template>
|
||||||
|
</a-drawer>
|
||||||
|
|
||||||
|
<a-modal v-model:visible="cancelExamineVisible" title="输入原因" @ok="submitCancelExamine">
|
||||||
|
<a-textarea v-model:value="current_reason" placeholder="输入不通过原因" :auto-size="{ minRows: 2, maxRows: 8 }" />
|
||||||
|
</a-modal>
|
||||||
|
</div>
|
||||||
|
<a-modal v-model:visible="showEdit" title="编辑图片" width="100%" wrap-class-name="my-full-modal" @ok="handleOk">
|
||||||
|
<div class="editorcon">
|
||||||
|
<!-- <a-image
|
||||||
|
:width="200"
|
||||||
|
:src="newSrc"
|
||||||
|
/> -->
|
||||||
|
<div class="save" @click="save">
|
||||||
|
<a-button type="primary" shape="round">
|
||||||
|
<template #icon>
|
||||||
|
<save-outlined />
|
||||||
|
</template>
|
||||||
|
保存
|
||||||
|
</a-button>
|
||||||
|
</div>
|
||||||
|
<imgEditor ref="imgEditorRef" v-if="showEdit"></imgEditor>
|
||||||
|
</div>
|
||||||
|
</a-modal>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import { nextTick, ref } from 'vue';
|
||||||
|
import { message, Modal } from 'ant-design-vue';
|
||||||
|
import _ from 'lodash';
|
||||||
|
import { SmartLoading } from '/@/components/framework/smart-loading';
|
||||||
|
import { caseplatformCaseApi } from '/@/api/business/case/caseplatform-case-api';
|
||||||
|
import { smartSentry } from '/@/lib/smart-sentry';
|
||||||
|
// import imgCell from './imgCell.vue';
|
||||||
|
// import imgEditor from './imgEditor.vue';
|
||||||
|
// import {il6Unit, caseTypeOption, diagnoseOption, patientSickOption, ganneiOption, ganwaiOption, moshiOption, kangningOption, hospitalOption } from './data';
|
||||||
|
// // ---------------- -------- 事件 ------------------------
|
||||||
|
const imgEditorRef = ref(null);
|
||||||
|
const showEdit = ref(false);
|
||||||
|
const emits = defineEmits(['reloadList']);
|
||||||
|
const cancelExamineVisible = ref(false);
|
||||||
|
const fileHost = import.meta.env.VITE_APP_FILE_HOST;
|
||||||
|
const fallbackImg =
|
||||||
|
'data:image/png;base64,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';
|
||||||
|
|
||||||
|
const activeKey = ref('1');
|
||||||
|
|
||||||
|
const current_reason = ref();
|
||||||
|
const current_caseId = ref();
|
||||||
|
|
||||||
|
const caseVO = ref({
|
||||||
|
name: undefined,
|
||||||
|
uid: undefined,
|
||||||
|
sex: undefined,
|
||||||
|
age: undefined,
|
||||||
|
admissionTime: undefined,
|
||||||
|
caseType: undefined,
|
||||||
|
mainDiagnose: {
|
||||||
|
select: [],
|
||||||
|
otherValue: '',
|
||||||
|
mainDiagnoseImg: '',
|
||||||
|
},
|
||||||
|
diseaseCause: {
|
||||||
|
select: [],
|
||||||
|
otherValue: '',
|
||||||
|
},
|
||||||
|
seductionReason: {
|
||||||
|
//基本信息结束
|
||||||
|
inside: {
|
||||||
|
select: [],
|
||||||
|
otherValue: '',
|
||||||
|
},
|
||||||
|
outside: {
|
||||||
|
select: [],
|
||||||
|
otherValue: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
abstractStr: undefined,
|
||||||
|
dpmas: [
|
||||||
|
{
|
||||||
|
treatTime: '',
|
||||||
|
content: {
|
||||||
|
mode: {
|
||||||
|
// 模式
|
||||||
|
select: '',
|
||||||
|
otherValue: '',
|
||||||
|
},
|
||||||
|
plasma: {
|
||||||
|
// 血浆
|
||||||
|
handle: '',
|
||||||
|
replace: '',
|
||||||
|
},
|
||||||
|
dose: {
|
||||||
|
// 抗凝剂量
|
||||||
|
select: [],
|
||||||
|
heparin: {
|
||||||
|
// 肝素
|
||||||
|
firstDose: '', //首剂
|
||||||
|
append: '', //追加
|
||||||
|
},
|
||||||
|
lowHeparin: {
|
||||||
|
// 低分子肝素
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
citricAcid: {
|
||||||
|
// 枸橼酸
|
||||||
|
bloodFlowRate: '', //血液流速
|
||||||
|
citricAcidFlowRate: '', //枸橼酸钠流速
|
||||||
|
calciumAgent: {
|
||||||
|
// 钙剂
|
||||||
|
select: '',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
nafamostat: {
|
||||||
|
// 甲磺酸萘莫司他
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
other: {
|
||||||
|
// 其他
|
||||||
|
name: '',
|
||||||
|
dose: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
dpmasImg: '',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
headTime: undefined,
|
||||||
|
afterTime: undefined,
|
||||||
|
lastTime: undefined,
|
||||||
|
headTb: undefined,
|
||||||
|
afterTb: undefined,
|
||||||
|
lastTb: undefined,
|
||||||
|
headAlb: undefined,
|
||||||
|
afterAlb: undefined,
|
||||||
|
lastAlb: undefined,
|
||||||
|
headDb: undefined,
|
||||||
|
afterDb: undefined,
|
||||||
|
lastDb: undefined,
|
||||||
|
headPta: undefined,
|
||||||
|
afterPta: undefined,
|
||||||
|
lastPta: undefined,
|
||||||
|
headIb: undefined,
|
||||||
|
afterIb: undefined,
|
||||||
|
lastIb: undefined,
|
||||||
|
headInr: undefined,
|
||||||
|
afterInr: undefined,
|
||||||
|
lastInr: undefined,
|
||||||
|
headAlt: undefined,
|
||||||
|
afterAlt: undefined,
|
||||||
|
lastAlt: undefined,
|
||||||
|
headIl6: undefined,
|
||||||
|
afterIl6: undefined,
|
||||||
|
lastIl6: undefined,
|
||||||
|
headAst: undefined,
|
||||||
|
afterAst: undefined,
|
||||||
|
lastAst: undefined,
|
||||||
|
headTnf: undefined,
|
||||||
|
afterTnf: undefined,
|
||||||
|
lastTnf: undefined,
|
||||||
|
headCrp: undefined,
|
||||||
|
afterCrp: undefined,
|
||||||
|
lastCrp: undefined,
|
||||||
|
checkImg: '',
|
||||||
|
dischargeSituation: '',
|
||||||
|
dischargeTime: '',
|
||||||
|
dischargeStatus: '',
|
||||||
|
day: null,
|
||||||
|
});
|
||||||
|
// ------------------------ 显示与隐藏 ------------------------
|
||||||
|
// 是否显示
|
||||||
|
const visibleFlag = ref(false);
|
||||||
|
|
||||||
|
function show(id) {
|
||||||
|
getDetail(id);
|
||||||
|
current_caseId.value = id;
|
||||||
|
visibleFlag.value = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onClose() {
|
||||||
|
visibleFlag.value = false;
|
||||||
|
activeKey.value = '1';
|
||||||
|
}
|
||||||
|
const formatJson = (obj) => {
|
||||||
|
for (const key in obj) {
|
||||||
|
if (key == 'mainDiagnose' || key == 'diseaseCause' || key == 'caseType') {
|
||||||
|
obj[key] = JSON.parse(obj[key]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key == 'seductionReason') {
|
||||||
|
obj.seductionReason = JSON.parse(obj.seductionReason);
|
||||||
|
}
|
||||||
|
if (key == 'dpmas') {
|
||||||
|
for (let index = 0; index < obj.dpmas.length; index++) {
|
||||||
|
const element = obj.dpmas[index];
|
||||||
|
element.content = JSON.parse(element.content);
|
||||||
|
if(!element.content.dose){
|
||||||
|
element.content.dose={
|
||||||
|
// 抗凝剂量
|
||||||
|
select: [],
|
||||||
|
heparin: {
|
||||||
|
// 肝素
|
||||||
|
firstDose: '', //首剂
|
||||||
|
append: '', //追加
|
||||||
|
},
|
||||||
|
lowHeparin: {
|
||||||
|
// 低分子肝素
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
citricAcid: {
|
||||||
|
// 枸橼酸
|
||||||
|
bloodFlowRate: '', //血液流速
|
||||||
|
citricAcidFlowRate: '', //枸橼酸钠流速
|
||||||
|
calciumAgent: {
|
||||||
|
// 钙剂
|
||||||
|
select: '',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
nafamostat: {
|
||||||
|
// 甲磺酸萘莫司他
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
other: {
|
||||||
|
// 其他
|
||||||
|
name: '',
|
||||||
|
dose: '',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 审核通过
|
||||||
|
async function examine() {
|
||||||
|
Modal.confirm({
|
||||||
|
title: '提示',
|
||||||
|
content: '确定要审核通过吗?',
|
||||||
|
okText: '确认',
|
||||||
|
okType: 'danger',
|
||||||
|
onOk() {
|
||||||
|
SmartLoading.show();
|
||||||
|
try {
|
||||||
|
console.log(current_caseId.value);
|
||||||
|
caseplatformCaseApi.examine(current_caseId.value, 1);
|
||||||
|
message.success('操作成功');
|
||||||
|
} catch (e) {
|
||||||
|
console.log(e);
|
||||||
|
} finally {
|
||||||
|
SmartLoading.hide();
|
||||||
|
visibleFlag.value = false;
|
||||||
|
emits('reloadList');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
cancelText: '取消',
|
||||||
|
onCancel() {},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//格式化之
|
||||||
|
const formatValue = (val) => {
|
||||||
|
if (!val) {
|
||||||
|
return '--';
|
||||||
|
} else {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const formatIl6Unit = (val) => {
|
||||||
|
if(!val){
|
||||||
|
return 'ng/l'
|
||||||
|
}else{
|
||||||
|
let arr=il6Unit.filter(item=>{
|
||||||
|
return item.value==val;
|
||||||
|
})
|
||||||
|
return arr[0].name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 审核拒绝
|
||||||
|
async function submitCancelExamine() {
|
||||||
|
SmartLoading.show();
|
||||||
|
try {
|
||||||
|
await caseplatformCaseApi.cancelExamine({ caseId: current_caseId.value, reason: current_reason.value });
|
||||||
|
message.success('操作成功');
|
||||||
|
} catch (e) {
|
||||||
|
console.log(e);
|
||||||
|
} finally {
|
||||||
|
cancelExamineVisible.value = false;
|
||||||
|
current_reason.value = undefined;
|
||||||
|
current_caseId.value = undefined;
|
||||||
|
visibleFlag.value = false;
|
||||||
|
SmartLoading.hide();
|
||||||
|
emits('reloadList');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function cancelExamine() {
|
||||||
|
cancelExamineVisible.value = true;
|
||||||
|
}
|
||||||
|
// ------------------------ 表单 ------------------------
|
||||||
|
|
||||||
|
async function getDetail(id) {
|
||||||
|
SmartLoading.show();
|
||||||
|
try {
|
||||||
|
let queryResult = await caseplatformCaseApi.getDetail(id);
|
||||||
|
caseVO.value = formatJson(queryResult.data);
|
||||||
|
console.log(caseVO.value);
|
||||||
|
} catch (err) {
|
||||||
|
smartSentry.captureError(err);
|
||||||
|
} finally {
|
||||||
|
SmartLoading.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const openEditor = (data) => {
|
||||||
|
showEdit.value = true;
|
||||||
|
nextTick(() => {
|
||||||
|
imgEditorRef.value?.init(data);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const saveEditor = () => {
|
||||||
|
imgEditorRef.value?.save();
|
||||||
|
};
|
||||||
|
const handleOk = () => {
|
||||||
|
showEdit.value = false;
|
||||||
|
};
|
||||||
|
defineExpose({
|
||||||
|
show,
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<style lang="less" scoped>
|
||||||
|
:deep(.ant-image) {
|
||||||
|
margin: 0 0 10px 10px;
|
||||||
|
}
|
||||||
|
:deep(th.required:after) {
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 4px;
|
||||||
|
color: #ff4d4f;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: SimSun, sans-serif;
|
||||||
|
line-height: 1;
|
||||||
|
content: '*';
|
||||||
|
}
|
||||||
|
.imgbox {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.desc {
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
.desc .dot,
|
||||||
|
.row .dot {
|
||||||
|
// text-decoration: underline;
|
||||||
|
color: #1890ff;
|
||||||
|
font-size: 16px;
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 30px;
|
||||||
|
line-height: 25px;
|
||||||
|
border-bottom:1px solid #1890ff;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.row .other,.desc .other {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
:deep(.ant-radio-disabled.ant-radio-inner::after) {
|
||||||
|
background: #1890ff;
|
||||||
|
}
|
||||||
|
:deep(.ant-radio-disabled.ant-radio-inner) {
|
||||||
|
border-color: #1890ff;
|
||||||
|
}
|
||||||
|
:deep(.ant-descriptions-item-content) {
|
||||||
|
padding: 16px 13px !important;
|
||||||
|
}
|
||||||
|
:deep(.ant-checkbox-wrapper + .ant-checkbox-wrapper) {
|
||||||
|
margin-left: 0 !important;
|
||||||
|
}
|
||||||
|
.row :deep(p) {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
:deep(.ant-descriptions-item-label){
|
||||||
|
max-width: 140px;
|
||||||
|
}
|
||||||
|
:deep(.ant-checkbox-checked .ant-checkbox-inner),:deep(.ant-radio-checked .ant-radio-inner){
|
||||||
|
background-color: #1890ff;
|
||||||
|
border-color: #1890ff;
|
||||||
|
}
|
||||||
|
:deep(.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner::after),:deep(.ant-radio-disabled.ant-radio-checked .ant-radio-inner::after){
|
||||||
|
border-color:#fff;
|
||||||
|
}
|
||||||
|
:deep(.ant-checkbox-disabled + span),:deep(.ant-radio-disabled + span){
|
||||||
|
color:#333;
|
||||||
|
}
|
||||||
|
:deep(.ant-radio-disabled .ant-radio-inner::after) {
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
.flex{
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
352
src/views/system/activity/list.vue
Normal file
352
src/views/system/activity/list.vue
Normal file
@ -0,0 +1,352 @@
|
|||||||
|
<!--
|
||||||
|
* 病例表
|
||||||
|
*
|
||||||
|
* @Author: HMM
|
||||||
|
* @Date: 2024-01-11 15:18:32
|
||||||
|
* @Copyright gdxz
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<!---------- 查询表单form begin ----------->
|
||||||
|
<a-form class="smart-query-form" style="border-radius: 10px; padding: 10px 10px">
|
||||||
|
<a-row class="smart-query-form-row">
|
||||||
|
<a-form-item label="" class="smart-query-form-item">
|
||||||
|
<a-input style="width: 200px" v-model:value="queryForm.expertName" placeholder="请输入姓名" />
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="" class="smart-query-form-item">
|
||||||
|
<a-range-picker :valueFormat="dateFormat" v-model:value="queryForm.createTime" :disabled-date="disabledDate"/>
|
||||||
|
</a-form-item>
|
||||||
|
|
||||||
|
<!-- <a-form-item label="" class="smart-query-form-item">
|
||||||
|
<a-select style="width: 150px;" @change="provChange" placeholder="选择省份" v-model:value="queryForm.provId"
|
||||||
|
:allowClear="true">
|
||||||
|
<a-select-option :value="prov.id" v-for="prov in provList">{{ prov.name }}</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="" class="smart-query-form-item">
|
||||||
|
<a-select style="width: 150px;" placeholder="选择市区" @change="cityChange" v-model:value="queryForm.cityId"
|
||||||
|
:allowClear="true">
|
||||||
|
<a-select-option :value="city.id" v-for="city in cityList">{{ city.name }}</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="" class="smart-query-form-item">
|
||||||
|
<a-select style="width: 250px;" placeholder="选择医院" v-model:value="queryForm.hospitalUuid"
|
||||||
|
:allowClear="true">
|
||||||
|
<a-select-option :value="hospital.uuid" v-for="hospital in hospitalList">{{ hospital.name
|
||||||
|
}}</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item> -->
|
||||||
|
|
||||||
|
<a-form-item class="smart-query-form-item">
|
||||||
|
<a-button type="primary" @click="queryData">
|
||||||
|
<template #icon>
|
||||||
|
<SearchOutlined />
|
||||||
|
</template>
|
||||||
|
查询
|
||||||
|
</a-button>
|
||||||
|
|
||||||
|
|
||||||
|
</a-form-item>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
<!---------- 查询表单form end ----------->
|
||||||
|
|
||||||
|
<a-card size="small" :bordered="false" :hoverable="true" style="border-radius: 10px">
|
||||||
|
<!---------- 表格操作行 begin ----------->
|
||||||
|
<a-row class="smart-table-btn-block">
|
||||||
|
<div class="smart-table-operate-block">
|
||||||
|
<a-typography-title :level="5">活动申请</a-typography-title>
|
||||||
|
<!-- <a-button @click="showForm()" type="primary" size="small">
|
||||||
|
<template #icon>
|
||||||
|
<PlusOutlined />
|
||||||
|
</template>
|
||||||
|
新建
|
||||||
|
</a-button> -->
|
||||||
|
</div>
|
||||||
|
<div class="smart-table-setting-block">
|
||||||
|
<TableOperator v-model="columns" :tableId="null" :refresh="queryData" />
|
||||||
|
</div>
|
||||||
|
</a-row>
|
||||||
|
<!---------- 表格操作行 end ----------->
|
||||||
|
|
||||||
|
<!---------- 表格 begin ----------->
|
||||||
|
<a-table size="small" :dataSource="tableData" :columns="columns" rowKey="id" bordered :loading="tableLoading" :pagination="false">
|
||||||
|
<template #bodyCell="{ text, record, column }">
|
||||||
|
<template v-if="column.dataIndex === 'createTime'">
|
||||||
|
<span>{{ text.substring(0, 11) }}</span>
|
||||||
|
</template>
|
||||||
|
<template v-if="column.dataIndex === 'status'">
|
||||||
|
<a-tag :color="text == 1?'success':'error'" >{{text == 1?'审核通过':'待审核'}}</a-tag>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template v-if="column.dataIndex === 'expertProvName'">
|
||||||
|
<span>{{record.expertProvName+record.expertCityName }}</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
|
||||||
|
<template v-if="column.dataIndex === 'action'">
|
||||||
|
<div class="smart-table-operate">
|
||||||
|
<!-- <a-button @click="delActivity(record.id)" type="link" danger>删除</a-button> -->
|
||||||
|
<a-button @click="handleStatus(record.id)" type="link" success v-if="record.status==2">审核通过</a-button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</a-table>
|
||||||
|
<!---------- 表格 end ----------->
|
||||||
|
|
||||||
|
<div class="smart-query-table-page">
|
||||||
|
<a-pagination
|
||||||
|
showSizeChanger
|
||||||
|
showQuickJumper
|
||||||
|
show-less-items
|
||||||
|
:pageSizeOptions="PAGE_SIZE_OPTIONS"
|
||||||
|
:defaultPageSize="queryForm.pageSize"
|
||||||
|
v-model:current="queryForm.pageNum"
|
||||||
|
v-model:pageSize="queryForm.pageSize"
|
||||||
|
:total="total"
|
||||||
|
@change="queryData"
|
||||||
|
|
||||||
|
@showSizeChange="queryData"
|
||||||
|
:show-total="(total) => `共${total}条`"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- <manageForm ref="formRef" @reloadList="queryData" /> -->
|
||||||
|
|
||||||
|
|
||||||
|
</a-card>
|
||||||
|
<br />
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import dayjs from 'dayjs';
|
||||||
|
import { reactive, ref, onMounted } from 'vue';
|
||||||
|
import { message, Modal } from 'ant-design-vue';
|
||||||
|
import { SmartLoading } from '/@/components/framework/smart-loading';
|
||||||
|
import { activityApi } from '/@/api/system/activity/activity-api';
|
||||||
|
import { PAGE_SIZE_OPTIONS } from '/@/constants/common-const';
|
||||||
|
import { smartSentry } from '/@/lib/smart-sentry';
|
||||||
|
import TableOperator from '/@/components/support/table-operator/index.vue';
|
||||||
|
import SmartEnumSelect from '/@/components/framework/smart-enum-select/index.vue';
|
||||||
|
import manageForm from './form.vue';
|
||||||
|
import { areaApi } from '/@/api/business/area/area-api';
|
||||||
|
import { statisticsApi } from '/@/api/business/case/statistics-api';
|
||||||
|
import { employeeApi } from '/@/api/system/employee/employee-api';
|
||||||
|
// ---------------------------- 表格列 ----------------------------
|
||||||
|
const dateFormat = 'YYYY-MM-DD HH:mm:ss'
|
||||||
|
const headers=reactive({
|
||||||
|
'Content-Type': 'multipart/form-data'
|
||||||
|
});
|
||||||
|
|
||||||
|
function showReason(reason) {
|
||||||
|
showReasonVisible.value = true;
|
||||||
|
show_reason.value = reason;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const columns = ref([
|
||||||
|
{
|
||||||
|
title: '姓名',
|
||||||
|
dataIndex: 'expertName',
|
||||||
|
ellipsis: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '手机号',
|
||||||
|
dataIndex: 'expertMobile',
|
||||||
|
ellipsis: true,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
title: '地区',
|
||||||
|
dataIndex: 'expertProvName',
|
||||||
|
ellipsis: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '医院',
|
||||||
|
dataIndex: 'expertHospitalName',
|
||||||
|
ellipsis: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '申请状态',
|
||||||
|
dataIndex: 'status',
|
||||||
|
ellipsis: true,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
title: '创建时间',
|
||||||
|
dataIndex: 'createTime',
|
||||||
|
ellipsis: true,
|
||||||
|
width: 100,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
dataIndex: 'action',
|
||||||
|
fixed: 'right',
|
||||||
|
width: 155,
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
|
const handleChange = (info) => {
|
||||||
|
console.log(info);
|
||||||
|
if (info.file.status !== 'uploading') {
|
||||||
|
console.log(info.file, info.fileList);
|
||||||
|
}
|
||||||
|
if (info.file.status === 'done') {
|
||||||
|
message.success(`上传成功`);
|
||||||
|
queryData();
|
||||||
|
} else if (info.file.status === 'error') {
|
||||||
|
message.error(`上传失败`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const handleStatus=(id)=>{
|
||||||
|
activityApi.changeStatus(id,{
|
||||||
|
status:1
|
||||||
|
}).then((res)=>{
|
||||||
|
message.success(`审核成功`);
|
||||||
|
queryData();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const delActivity=(id)=>{
|
||||||
|
Modal.confirm({
|
||||||
|
title: '确认删除?',
|
||||||
|
content: '确定要删除该记录?',
|
||||||
|
okText: '确认',
|
||||||
|
cancelText: '取消',
|
||||||
|
onOk(){
|
||||||
|
SmartLoading.show();
|
||||||
|
activityApi.delActivity(id).then((res)=>{
|
||||||
|
message.success(`删除成功`);
|
||||||
|
queryData();
|
||||||
|
SmartLoading.hide();
|
||||||
|
}).catch((err)=>{
|
||||||
|
smartSentry.captureError(err);
|
||||||
|
SmartLoading.hide();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// ---------------------------- 查询数据表单和方法 ----------------------------
|
||||||
|
|
||||||
|
const queryFormState = {
|
||||||
|
name: undefined, //name
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
};
|
||||||
|
const formatJson = (obj) => {
|
||||||
|
if (!obj) return [];
|
||||||
|
return JSON.parse(obj);
|
||||||
|
};
|
||||||
|
// 查询表单form
|
||||||
|
const queryForm = reactive({ ...queryFormState });
|
||||||
|
// 表格加载loading
|
||||||
|
const tableLoading = ref(false);
|
||||||
|
// 表格数据
|
||||||
|
const tableData = ref([]);
|
||||||
|
// 总数
|
||||||
|
const total = ref(0);
|
||||||
|
|
||||||
|
// 重置查询条件
|
||||||
|
function resetQuery() {
|
||||||
|
let pageSize = queryForm.pageSize;
|
||||||
|
Object.assign(queryForm, queryFormState);
|
||||||
|
queryForm.pageSize = pageSize;
|
||||||
|
queryData();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询数据
|
||||||
|
async function queryData() {
|
||||||
|
tableLoading.value = true;
|
||||||
|
try {
|
||||||
|
let queryResult = await activityApi.queryPage(queryForm);
|
||||||
|
tableData.value = queryResult.data.list;
|
||||||
|
total.value = queryResult.data.total;
|
||||||
|
} catch (e) {
|
||||||
|
smartSentry.captureError(e);
|
||||||
|
} finally {
|
||||||
|
tableLoading.value = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function provChange(e) {
|
||||||
|
console.log(e);
|
||||||
|
queryForm.cityId = undefined;
|
||||||
|
queryForm.hospitalUuid = undefined;
|
||||||
|
cityList.value = [];
|
||||||
|
hospitalList.value = [];
|
||||||
|
if (e) {
|
||||||
|
getCity(e);
|
||||||
|
getHospitalList({ provId: e });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function cityChange(e) {
|
||||||
|
console.log(e);
|
||||||
|
queryForm.hospitalUuid = undefined;
|
||||||
|
hospitalList.value = [];
|
||||||
|
if (e) {
|
||||||
|
getHospitalList({ cityId: e });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const provList = ref();
|
||||||
|
|
||||||
|
// 查询数据
|
||||||
|
async function getProvList() {
|
||||||
|
SmartLoading.show();
|
||||||
|
try {
|
||||||
|
let queryResult = await employeeApi.getRoleProv();
|
||||||
|
provList.value = queryResult.data;
|
||||||
|
} catch (e) {
|
||||||
|
smartSentry.captureError(e);
|
||||||
|
} finally {
|
||||||
|
SmartLoading.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const cityList = ref();
|
||||||
|
|
||||||
|
// 查询数据
|
||||||
|
async function getCity(parent) {
|
||||||
|
SmartLoading.show();
|
||||||
|
try {
|
||||||
|
let queryResult = await areaApi.cityList(parent);
|
||||||
|
cityList.value = queryResult.data;
|
||||||
|
} catch (e) {
|
||||||
|
smartSentry.captureError(e);
|
||||||
|
} finally {
|
||||||
|
SmartLoading.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const hospitalList = ref();
|
||||||
|
|
||||||
|
// 查询数据
|
||||||
|
async function getHospitalList(param) {
|
||||||
|
SmartLoading.show();
|
||||||
|
try {
|
||||||
|
let queryResult = await statisticsApi.getHospitalList(param);
|
||||||
|
hospitalList.value = queryResult.data;
|
||||||
|
} catch (e) {
|
||||||
|
smartSentry.captureError(e);
|
||||||
|
} finally {
|
||||||
|
SmartLoading.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getProvList();
|
||||||
|
queryData();
|
||||||
|
});
|
||||||
|
|
||||||
|
// ---------------------------- 添加/修改 ----------------------------
|
||||||
|
const formRef = ref();
|
||||||
|
|
||||||
|
const showForm=(data)=> {
|
||||||
|
formRef.value.show(data);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@ -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);
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
.login-container {
|
.login-container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background: url(/@/assets/images/login/login-bg.jpg) no-repeat center;
|
background: url(/@/assets/images/login/login_bg.jpg) no-repeat center;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -26,7 +26,7 @@
|
|||||||
padding: 14px 42px;
|
padding: 14px 42px;
|
||||||
position: relative;
|
position: relative;
|
||||||
left: 18%;
|
left: 18%;
|
||||||
top: 2vh;
|
top: 15vh;
|
||||||
}
|
}
|
||||||
.login-title {
|
.login-title {
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
|
|||||||
@ -10,7 +10,7 @@
|
|||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div class="login-container">
|
<div class="login-container">
|
||||||
<div class="name">欢迎使用<br>人工肝病例登记系统</div>
|
<!-- <div class="name">欢迎使用<br>人工肝病例登记系统</div> -->
|
||||||
<div class="box-item login">
|
<div class="box-item login">
|
||||||
<div class="login-title">账号登录</div>
|
<div class="login-title">账号登录</div>
|
||||||
<a-form ref="formRef" class="login-form" :model="loginForm" :rules="rules">
|
<a-form ref="formRef" class="login-form" :model="loginForm" :rules="rules">
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<a-card class="employee-container" style="border-radius: 10px;">
|
<a-card class="employee-container" style="border-radius: 10px;">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<a-row justify="space-around">
|
<a-row justify="space-around">
|
||||||
<a-col :span="12"><a-typography-title :level="5">投稿说明</a-typography-title></a-col>
|
<a-col :span="12"><a-typography-title :level="5">操作说明</a-typography-title></a-col>
|
||||||
<a-col :span="12" style="justify-content: end; display: flex;">
|
<a-col :span="12" style="justify-content: end; display: flex;">
|
||||||
<a-space>
|
<a-space>
|
||||||
<a-button type="primary" @click="save(2)" v-privilege="'case-support:config:update'">保存</a-button>
|
<a-button type="primary" @click="save(2)" v-privilege="'case-support:config:update'">保存</a-button>
|
||||||
@ -105,7 +105,7 @@ const dealRef = ref();
|
|||||||
const privacyRef = ref();
|
const privacyRef = ref();
|
||||||
|
|
||||||
const rubricToolbarConfig = {
|
const rubricToolbarConfig = {
|
||||||
toolbarKeys : ['bold', 'underline', 'italic', 'through', 'code', 'sub', 'sup', 'clearStyle', 'color', 'bgColor', 'fontSize', 'fontFamily', 'indent', 'delIndent', 'justifyLeft', 'justifyRight', 'justifyCenter', 'justifyJustify', 'lineHeight', 'insertImage', 'deleteImage', 'editImage', 'divider', 'insertLink', 'editLink', 'unLink', 'viewLink', 'codeBlock', 'blockquote', 'headerSelect', 'redo', 'undo', 'fullScreen', 'enter', 'bulletedList', 'numberedList' ]
|
toolbarKeys : ['bold', 'underline', 'italic', 'through', 'code', 'sub', 'sup', 'clearStyle', 'color', 'bgColor', 'fontSize', 'fontFamily', 'indent', 'delIndent', 'justifyLeft', 'justifyRight', 'justifyCenter', 'justifyJustify', 'lineHeight', 'insertImage', 'deleteImage', 'editImage', 'divider', 'insertLink', 'editLink', 'unLink', 'viewLink', 'codeBlock', 'blockquote', 'headerSelect', 'redo', 'undo', 'fullScreen', 'enter', 'bulletedList', 'numberedList','uploadImage' ]
|
||||||
}
|
}
|
||||||
|
|
||||||
const dealToolbarConfig = {
|
const dealToolbarConfig = {
|
||||||
@ -113,7 +113,7 @@ const dealToolbarConfig = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const privacyToolbarConfig = {
|
const privacyToolbarConfig = {
|
||||||
toolbarKeys : ['bold', 'underline', 'italic', 'through', 'code', 'sub', 'sup', 'clearStyle', 'color', 'bgColor', 'fontSize', 'fontFamily', 'indent', 'delIndent', 'justifyLeft', 'justifyRight', 'justifyCenter', 'justifyJustify', 'lineHeight', 'insertImage', 'deleteImage', 'editImage', 'divider', 'insertLink', 'editLink', 'unLink', 'viewLink', 'codeBlock', 'blockquote', 'headerSelect', 'redo', 'undo', 'fullScreen', 'enter', 'bulletedList', 'numberedList' ]
|
toolbarKeys : ['bold', 'underline', 'italic', 'through', 'code', 'sub', 'sup', 'clearStyle', 'color', 'bgColor', 'fontSize', 'fontFamily', 'indent', 'delIndent', 'justifyLeft', 'justifyRight', 'justifyCenter', 'justifyJustify', 'lineHeight', 'insertImage', 'deleteImage', 'editImage', 'divider', 'insertLink', 'editLink', 'unLink', 'viewLink', 'codeBlock', 'blockquote', 'headerSelect', 'redo', 'undo', 'fullScreen', 'enter', 'bulletedList', 'numberedList']
|
||||||
}
|
}
|
||||||
|
|
||||||
const rubricForm = reactive({
|
const rubricForm = reactive({
|
||||||
@ -233,4 +233,5 @@ onMounted(()=>{
|
|||||||
.fform{
|
.fform{
|
||||||
width: 30vw;
|
width: 30vw;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
@ -8,14 +8,21 @@
|
|||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),Since 2012
|
* @Copyright 1024创新实验室 ( https://1024lab.net ),Since 2012
|
||||||
*/
|
*/
|
||||||
import { resolve } from 'path';
|
import { resolve } from 'path';
|
||||||
|
import { defineConfig } from 'vite'
|
||||||
import vue from '@vitejs/plugin-vue';
|
import vue from '@vitejs/plugin-vue';
|
||||||
|
|
||||||
const pathResolve = (dir) => {
|
const pathResolve = (dir) => {
|
||||||
return resolve(__dirname, '.', dir);
|
return resolve(__dirname, '.', dir);
|
||||||
};
|
};
|
||||||
export default {
|
|
||||||
base: process.env.NODE_ENV === 'production' ? '/' : '/',
|
export default defineConfig(({ mode }) =>{
|
||||||
root: process.cwd(),
|
let base='';
|
||||||
|
if(mode==='test' || mode==='production'){
|
||||||
|
base='/admin/web';
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
base:base,
|
||||||
|
root: process.cwd(),
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: [
|
alias: [
|
||||||
// 国际化替换
|
// 国际化替换
|
||||||
@ -88,4 +95,5 @@ export default {
|
|||||||
__INTLIFY_PROD_DEVTOOLS__: false,
|
__INTLIFY_PROD_DEVTOOLS__: false,
|
||||||
'process.env': process.env,
|
'process.env': process.env,
|
||||||
},
|
},
|
||||||
};
|
}
|
||||||
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user