@@ -124,6 +137,7 @@ import useUserStore from '@/store/modules/user';
import History from './components/history';
import Template from './components/template';
import TemplateEdit from './components/templateEdit.vue';
+import CreateTemplate from './components/createTemplate.vue';
const userStore = useUserStore();
// 移除未使用的变量
@@ -249,12 +263,20 @@ const newEmr = () => {
};
const saveAsModel = async () => {
- try {
- currentOperate.value = 'addTemplate';
- await emrComponentRef.value?.submit();
- } catch (error) {
- ElMessage.error('存为模版失败');
+ if (!currentSelectTemplate.value || !currentSelectTemplate.value.id) {
+ ElMessage.warning('请先选择病历模板');
+ return;
}
+ const emrFormData = emrComponentRef.value?.formData || {};
+ createTemplateVisible.value = true;
+ nextTick(() => {
+ createTemplateRef.value?.initData({
+ definitionId: currentSelectTemplate.value.id,
+ templateType: '全院',
+ isEdit: false,
+ contextJson: emrFormData,
+ });
+ });
};
const editForm = ref({
id: '',
@@ -728,9 +750,24 @@ const templateRef = ref(null);
const handleTemplateClick = async (data) => {
try {
newEmr();
- editForm.value = data;
+ editForm.value = {
+ ...data,
+ id: '',
+ recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
+ };
nextTick(() => {
- emrComponentRef.value?.setFormData(JSON.parse(editForm.value.contextJson));
+ if (data.contextJson) {
+ let parsedData = typeof data.contextJson === 'string' ? JSON.parse(data.contextJson) : data.contextJson;
+ if (Array.isArray(parsedData)) {
+ parsedData = parsedData.reduce((acc, item) => {
+ if (item.fieldKey) {
+ acc[item.fieldKey] = item.recordName;
+ }
+ return acc;
+ }, {});
+ }
+ emrComponentRef.value?.setFormData(parsedData);
+ }
});
} catch (error) {
ElMessage.error('设置模板数据失败');
@@ -738,57 +775,32 @@ const handleTemplateClick = async (data) => {
}
};
const templateEdit = (data) => {
- editTemplateForm.value = data;
+ editTemplateForm.value = JSON.parse(JSON.stringify(data));
templateEditVisible.value = true;
};
// ====dialog
const templateEditVisible = ref(false);
+const createTemplateVisible = ref(false);
+const createTemplateRef = ref(null);
const templateEditSubmitOk = async () => {
- try {
- // 根据是否存在ID来决定是新增还是编辑
- if (!editTemplateForm.value.id) {
- // 新增模板
- const addResult = await addTemplate(editTemplateForm.value);
- if (addResult && addResult.code === 200) {
- ElMessage.success('模板新增成功');
- // 刷新模板列表
- if (templateRef.value && typeof templateRef.value.queryList === 'function') {
- // 在模板操作后,需要清除缓存并重新加载
- templateRef.value.queryList();
- }
- // 关闭模板编辑弹窗
- templateEditVisible.value = false;
- // 清空模板编辑表单
- Object.assign(editTemplateForm.value, {
- id: '',
- name: '',
- displayOrder: 0,
- contextJson: '',
- definitionId: '',
- useRange: 2,
- organizationId: userStore.orgId,
- userId: '',
- useRanges: [1],
- remark: '',
- });
- } else {
- ElMessage.error('模板新增失败');
- console.error('模板新增失败:', addResult);
- }
- } else {
- // 编辑模板 - 暂不实现编辑功能,只支持新增
- ElMessage.warning('暂不支持编辑模板');
+ if (templateRef.value) {
+ if (templateRef.value.clearCache) {
+ templateRef.value.clearCache();
}
- } catch (error) {
- console.error('处理模板编辑提交失败:', error);
- ElMessage.error('处理模板编辑提交失败: ' + (error.message || '未知错误'));
- } finally {
- // 无论成功失败都刷新列表
- historyRef.value?.queryList();
- // 模板查询已经在模板组件内部通过防抖和缓存优化,这里不再重复调用
- // templateRef.value?.queryList();
+ templateRef.value.queryList();
}
};
+
+// 新增模板成功后的回调
+const createTemplateSubmitOk = () => {
+ if (templateRef.value) {
+ if (templateRef.value.clearCache) {
+ templateRef.value.clearCache();
+ }
+ templateRef.value.queryList();
+ }
+ ElMessage.success('保存模板成功');
+};
// onBeforeMount(() => {});
// 监听患者信息变化,实现联动显示
watch(