diff --git a/src/api/liswork/micro/index.ts b/src/api/liswork/micro/index.ts index f0d50b4..3382b75 100644 --- a/src/api/liswork/micro/index.ts +++ b/src/api/liswork/micro/index.ts @@ -131,4 +131,52 @@ export function getmediumList(data?: Object) { method: 'get', params: data }) +} +//获取培养基字典 +export function getbactmediumList(data?: Object) { + return request({ + url: '/lisworkgerm/getbactmedium', + method: 'get', + params: data + }) +} +//新增培养基 +export function insertmedium(data?: Object) { + return request({ + url: '/lisworkgerm/insertmedium', + method: 'post', + data + }) +} +//修改培养基 +export function updatemedium(data?: Object) { + return request({ + url: '/lisworkgerm/updatemedium', + method: 'post', + data + }) +} +//删除培养基 +export function deletemedium(data?: Object) { + return request({ + url: '/lisworkgerm/deletemedium', + method: 'delete', + params: data + }) +} +//删除培养基 Array +export function deletemediums(data?: Object) { + return request({ + url: '/lisworkgerm/deletemedium', + method: 'delete', + data + }) +} +//微生物报告审核 +export function cbebCheck(data?: Object) { + return request({ + url: '/lisworkgerm/check', + method: 'get', + params: data + }) } \ No newline at end of file diff --git a/src/api/login.js b/src/api/login.js index c1a9d19..97c0dfa 100644 --- a/src/api/login.js +++ b/src/api/login.js @@ -1,12 +1,13 @@ import request from '@/utils/request' // 登录方法 -export function login(username, password, code, uuid) { +export function login(username, password, code, uuid,loginParam) { const data = { username, password, code, - uuid + uuid, + loginParam } return request({ url: '/login', @@ -28,6 +29,17 @@ export function loginAnonymous(data) { }) } +export function getLocalconfig(data) { + return request({ + url: '/getLocalconfig', + headers: { + isToken: false + }, + method: 'get', + params: data, + timeout: 20000 + }) +} // 注册方法 export function register(data) { return request({ diff --git a/src/assets/images/logo_new.png b/src/assets/images/logo_new.png new file mode 100644 index 0000000..74849a2 Binary files /dev/null and b/src/assets/images/logo_new.png differ diff --git a/src/assets/images/profile.jpg b/src/assets/images/profile.jpg index b3a940b..bcc14d3 100644 Binary files a/src/assets/images/profile.jpg and b/src/assets/images/profile.jpg differ diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss index 10bf9a5..2123427 100644 --- a/src/assets/styles/index.scss +++ b/src/assets/styles/index.scss @@ -286,4 +286,21 @@ aside { width: 3.125rem; } } +} + +.next_box { + display: flex; + align-items: center; + justify-content: space-between; + + .jtIcon { + width: 2.5rem; + height: 2rem; + line-height: 2rem; + font-size: 1rem; + text-align: center; + background-color: #1f6dd3; + color: #fff; + cursor: pointer; + } } \ No newline at end of file diff --git a/src/assets/styles/ruoyi.scss b/src/assets/styles/ruoyi.scss index c8a4094..7e7c07d 100644 --- a/src/assets/styles/ruoyi.scss +++ b/src/assets/styles/ruoyi.scss @@ -395,6 +395,9 @@ cursor: pointer; } + .el-table--default .cell { + padding: 0 0 0 .3125rem !important; + } // 表格input宽度,表格select宽度 .full-width-input .el-input__inner .el-select__inner { @@ -411,6 +414,7 @@ box-shadow: none; background: transparent !important; padding: 0 !important; + padding-left: .3125rem !important; outline: none; &:hover { @@ -422,6 +426,7 @@ box-shadow: none; background: transparent !important; padding: 0 !important; + padding-left: .3125rem !important; outline: none; &:hover { diff --git a/src/components/Ballpit/index.vue b/src/components/Ballpit/index.vue new file mode 100644 index 0000000..e69de29 diff --git a/src/components/SelectTable/index.vue b/src/components/SelectTable/index.vue index 850b02e..e03c36e 100644 --- a/src/components/SelectTable/index.vue +++ b/src/components/SelectTable/index.vue @@ -113,7 +113,7 @@ const visibleChange = (val: any) => { currentIndex.value = filterData.value.findIndex(item => item[props.value!] === props.data); if (currentIndex.value >= 0) { tableRef.value.setCurrentRow(filterData.value[currentIndex.value]); - tableRef.value.setScrollTop(currentIndex.value * 25); + tableRef.value.setScrollTop(currentIndex.value * 30); } }, 10); } @@ -235,7 +235,7 @@ const handleKeydown = (e: any) => { tableRef.value.setCurrentRow(filterData.value[currentIndex.value]); // 滚动到当前行 - tableRef.value.setScrollTop(currentIndex.value * 25); + tableRef.value.setScrollTop(currentIndex.value * 30); // 回车确认 if (e.key === "Enter") { diff --git a/src/components/elTable/index.vue b/src/components/elTable/index.vue index bfe57ab..ee6aef4 100644 --- a/src/components/elTable/index.vue +++ b/src/components/elTable/index.vue @@ -26,7 +26,10 @@ - \ No newline at end of file diff --git a/src/views/liswork/micro/labresult/pyj.vue b/src/views/liswork/micro/labresult/pyj.vue new file mode 100644 index 0000000..ae3a80a --- /dev/null +++ b/src/views/liswork/micro/labresult/pyj.vue @@ -0,0 +1,210 @@ + + + + + \ No newline at end of file diff --git a/src/views/liswork/micro/labresult/zbReport.vue b/src/views/liswork/micro/labresult/zbReport.vue index a6031e1..241ff3f 100644 --- a/src/views/liswork/micro/labresult/zbReport.vue +++ b/src/views/liswork/micro/labresult/zbReport.vue @@ -127,7 +127,6 @@ - @@ -144,34 +143,15 @@ - - -
-

{{ reasonText }}

- - - - -
+ + -
- 确认 - 取消 -
-
+ + + + + @@ -184,6 +164,9 @@ import { } from '@/api/liswork/micro/index'; import { check2, uncheck2, unconfirmlog, checkuser, deleteresult, queryXmVal, setinputmdl, } from "@/api/liswork/work/LisWork"; import { useCommonStore } from "@/store/modules/commonStore"; +import CheckUser from "../../work/components/CheckUser.vue"; +import Unconfirmlog from "../../work/components/unconfirmlog.vue"; +import UploadWarning from "../../work/components/uploadwarning.vue"; // @ts-ignore import ProjectDetails from "@/components/projectDetails/index.vue"; import projectsJg from "@/components/projectsjg/index.vue"; @@ -223,14 +206,15 @@ const { labPat, labPatKey, labResutsData, dictData } = toRefs(props); const emits = defineEmits([ 'fetchLabResults', 'changeStatus', - 'previewHandle' + 'previewHandle', + 'update:labPatKey' ]); const activeName2 = ref('first') const textarea = ref('') const columns = ref([ - { label: "细菌/结果", prop: "zhxmdh", align: 'center', visible: true, headerSlot: 'xmdh', width: 150 }, + { label: "细菌/结果", prop: "zhxmdh", visible: true, headerSlot: 'xmdh', width: 150 }, { label: "菌落计数", prop: "od", align: 'center', visible: true, slot: 'od' }, { label: "检验结果", prop: "csjg", align: 'center', visible: true, slot: 'csjg' }, { label: "阴阳性", prop: "jgbz", align: 'center', visible: true, slot: 'jgbz', showOverflowTooltip: false }, @@ -292,18 +276,36 @@ const handleColumnDragEnd = (data: any) => { columns.value = data.columns; } -const unCheckshow = ref(false); const reasonText = ref(''); const warningMsgdata = ref(''); -const showuploadwarning = ref(false); +const checktitle = ref(''); +const checkUserRef = ref(); +const runnextstepname = ref(-1); const handleCheck = (checkType: number) => { - // yhdh = checkuserid.value - switch (checkType) { - // case 1: // 初审 - // check1({ ...labPatKey.value, jyrq: labPat.value.jyrq, yhdh: props.labPat.yhdh }).then((res: any) => { - // emits("changeStatus", props.labPat); - // }) - // break; + runnextstepname.value = checkType + labPatKey.value.problemId = 0; + if (!labPatKey.value.yhdh) { + checktitle.value = '审核人工号密码验证' + checkUserRef.value.open() + } else { + proceedCheck(checkType) + } +}; + +const handleCheckUserConfirm = (info: { yhdh: string, mm: string }) => { + checkuser({ yhdh: info.yhdh, mm: info.mm }).then((response: any) => { + if (response.code == 0) { + emits('update:labPatKey', { + ...labPatKey.value, + yhdh: info.yhdh + }); + proceedCheck(runnextstepname.value) + } + }) +} + +const proceedCheck = (type: number) => { + switch (type) { case 2: // 审核 labPatKey.value.problemId = 0 shHandleCheck() @@ -315,96 +317,34 @@ const handleCheck = (checkType: number) => { default: break; } -}; - +} +const uploadwarningRef = ref(); const shHandleCheck = () => { check2({ ...labPatKey.value, jyrq: labPat.value.jyrq, yhdh: props.labPat.yhdh }).then((res: any) => { emits("changeStatus", props.labPat); if (res.code == "4" && res.problemId === 4) { labPatKey.value.problemId = res.problemId; warningMsgdata.value = res.msg; - showuploadwarning.value = true; + uploadwarningRef.value.open(); } }) }; +const unconfirmlogRef = ref(); const unShHandle = () => { uncheck2({ ...labPatKey.value, jyrq: labPat.value.jyrq, yhdh: props.labPat.yhdh }).then((res: any) => { if (res.code == "4") { labPatKey.value.problemId = res.problemId; reasonText.value = res.msg; - unCheckshow.value = true; + unconfirmlogRef.value.open(); } emits("changeStatus", props.labPat); }) }; -const uncheckFormRef = ref(); -const uncheckForm = ref({ - reason: '', - yhdh: '', - mm: '', -}) -// 取消审核原因 -const unconfirmlogConfirm = async () => { - if (labPatKey.value.problemId == 4) { - // if (!uncheckForm.value.inputValue) return ElMessage.warning("请输入操作原因") - } else if (labPatKey.value.problemId == 6) { - const valid = await uncheckFormRef.value.validate().catch(() => { }); - if (!valid) return false; - } - - unconfirmlog({ ...labPatKey.value, jyrq: labPat.value.jyrq, ...uncheckForm.value }).then((response: any) => { - if (response.code == "0") { - unCheckshow.value = false; - unShHandle(); - } - }) -}; - -const checkuserid = ref() -const checkShow = ref(false); -const ruleForm = ref({ - yhdh: '', - mm: '' -}); - -const rules = ref( - { - yhdh: [{ required: true, message: "请输入用户工号", trigger: "blur" }, - { min: 3, max: 20, message: "长度在 3 到 20 个字符", trigger: "blur" } - ], - mm: [{ required: true, message: "请输入密码", trigger: "blur" }, - { min: 6, max: 20, message: "长度在 6 到 20 个字符", trigger: "blur" } - ] - } -); -const unconfirmlogCancel = () => { - unCheckshow.value = false; - uncheckForm.value.reason = ''; - uncheckForm.value.yhdh = ''; - uncheckForm.value.mm = ''; - uncheckFormRef.value.resetFields(); -} -const ruleFormRef = ref(); -const submitForm = () => { - ruleFormRef.value.validate((valid: boolean) => { - if (valid) { - checkuser(ruleForm.value).then((res: any) => { - if (res.code == 0) { - checkuserid.value = ruleForm.value.yhdh - checkShow.value = false; - ElMessage.success("验证成功"); - } - }) - } else { - return false; - } - }); -} const itemDictRef = ref(); const openItemDictDialog = () => { @@ -664,7 +604,7 @@ const ymColumns = ref([ { label: "Mic", prop: "mic", align: 'center', visible: true, width: 60, slot: 'mic' }, { label: "KB", prop: "rad", align: 'center', visible: true, width: 50, slot: 'rad' }, { label: "结果", prop: "csjg", align: 'center', visible: true, width: 60, slot: 'csjg' }, - { label: "结果标志", prop: "jgbz", align: 'center', visible: true, slot: 'jgbz', width: 200, showOverflowTooltip: false }, + { label: "结果标志", prop: "jgbz", align: 'center', visible: true, slot: 'jgbz', width: 180, showOverflowTooltip: false }, { label: "折点", prop: "ckz", align: 'center', visible: true, }, { label: "分组", prop: "bz", align: 'center', visible: true, slot: 'bz' }, { label: "专家值", prop: "txtresult", align: 'center', visible: true, slot: 'txtresult' }, diff --git a/src/views/liswork/work/components/CheckUser.vue b/src/views/liswork/work/components/CheckUser.vue index 9f7a5ac..0627494 100644 --- a/src/views/liswork/work/components/CheckUser.vue +++ b/src/views/liswork/work/components/CheckUser.vue @@ -1,89 +1,33 @@ - - + diff --git a/src/views/liswork/work/components/labresult.vue b/src/views/liswork/work/components/labresult.vue index e3345fd..b0c38d8 100644 --- a/src/views/liswork/work/components/labresult.vue +++ b/src/views/liswork/work/components/labresult.vue @@ -76,82 +76,13 @@ - - - - - - - - - -
- 确认 - 取消 -
-
-
-
- + - -
{{ warningMsgdata }}
- - - - 系统通知 - 电话通知 - - - - - -
- 确认 - 取消 -
-
-
-
- + - -
-

{{ reasonText }}

- - - - -
+ -
- 确认 - 取消 -
-
@@ -261,7 +192,6 @@ - @@ -280,6 +210,9 @@ import { classCom } from '@/utils/classCom' import CustomTable from '@/components/elTable/index.vue' import dayjs from 'dayjs'; import emitter from "@/utils/mitt"; +import CheckUser from "./CheckUser.vue"; +import Unconfirmlog from './unconfirmlog.vue'; +import UploadWarning from "./uploadwarning.vue"; import { useCommonStore } from "@/store/modules/commonStore"; import ContextMenu from "@/components/contextMenu/index.vue"; import ViewBackup from "./viewBackup.vue"; @@ -785,53 +718,12 @@ const beforeEnter = (row) => { lastResult.value = res.data || {} }) }; - - - -const warningForm = ref({ - userId: '', - phone: '', - uploadTp: '1' -}) - - -const uncheckForm = ref({ - reason: '', - yhdh: '', - mm: '', -}) - -const wrules = ref({ - userId: [{ required: true, message: "请输入用户工号", trigger: "blur" }, - { min: 3, max: 20, message: "长度在 3 到 20 个字符", trigger: "blur" } - ], - phone: [{ required: true, message: "请输入联系电话", trigger: "blur" }, - { min: 6, max: 20, message: "长度在 6 到 20 个字符", trigger: "blur" } - ] -}) - -const unCheckshow = ref(false); -const inputValue = ref(''); const reasonText = ref(''); const warningMsgdata = ref(''); -const showuploadwarning = ref(false); const checkuserid = ref() const checkShow = ref(false); -const ruleForm = ref({ - yhdh: '', - mm: '' -}); - -const rules = ref( - { - yhdh: [{ required: true, message: "请输入用户工号", trigger: "blur" }, - { min: 3, max: 20, message: "长度在 3 到 20 个字符", trigger: "blur" } - ], - mm: [{ required: true, message: "请输入密码", trigger: "blur" }, - { min: 6, max: 20, message: "长度在 6 到 20 个字符", trigger: "blur" } - ] - } -); +const checktitle = ref(''); +const checkUserRef = ref(); const csjgRef = ref(); @@ -839,9 +731,32 @@ const itemDictRef = ref(); // DictInput组件引用 const tableRef = ref(); - +const runnextstepname = ref(-1) const handleCheck = (checkType) => { - // yhdh = checkuserid.value + runnextstepname.value = checkType + tableKey.value.problemId = 0; + // tableKey.value.yhdh = checkuserid.value + if (!tableKey.value.yhdh) { + checktitle.value = '审核人工号密码验证' + checkUserRef.value.open() + } else { + proceedCheck(checkType) + } +}; + +const handleCheckUserConfirm = (info) => { + checkuser({ yhdh: info.yhdh, mm: info.mm }).then(response => { + if (response.code == 0) { + emits('update:tableKey', { + ...tableKey.value, + yhdh: info.yhdh + }); + proceedCheck(runnextstepname.value) + } + }) +} + +const proceedCheck = (checkType) => { switch (checkType) { case 1: // 初审 check1({ ...tableKey.value, yhdh: props.labPat.yhdh }).then(res => { @@ -859,89 +774,34 @@ const handleCheck = (checkType) => { default: break; } -}; - - - - +} +const uploadwarningRef = ref(); const shHandleCheck = () => { check2({ ...props.tableKey, yhdh: props.labPat.yhdh }).then(res => { emits("changeStatus", props.labPat); if (res.code == "4" && res.problemId === 4) { tableKey.value.problemId = res.problemId; warningMsgdata.value = res.msg; - showuploadwarning.value = true; + uploadwarningRef.value.open(); } }) }; -const warningFormRef = ref(null); - -const warningResetForm = () => { - warningForm.value.userId = ''; - warningForm.value.phone = ''; - warningForm.value.uploadTp = '1'; - warningFormRef.value.resetFields(); - showuploadwarning.value = false; -}; -// 处理危急值登记 -const handleWarningSuccess = async () => { - if (warningForm.value.uploadTp == 2) { - const valid = await warningFormRef.value.validate().catch(() => { }); - if (!valid) return false; - } - reglimit({ ...tableKey.value, qrr: warningForm.value.userId, tzfs: warningForm.value.uploadTp, phone: warningForm.value.phone }).then(response => { - showuploadwarning.value = false; - if (response.code == 0) { - shHandleCheck(); - } - if (response.code == 4) { - ElMessageBox.confirm(response.msg, '系统提示', { confirmButtonText: '是', cancelButtonText: '否', type: 'warning' }).then(() => { - tableKey.value.problemId = tableKey.value.problemId + 1; - handleWarningSuccess(); - }).catch(() => { - shHandleCheck(); - }); - } - }) -}; +const unconfirmlogRef = ref(); const unShHandle = () => { uncheck2({ ...tableKey.value, yhdh: props.labPat.yhdh }).then(res => { + console.log('res',res); if (res.code == "4") { tableKey.value.problemId = res.problemId; reasonText.value = res.msg; - unCheckshow.value = true; + unconfirmlogRef.value.open(); } emits("changeStatus", props.labPat); }) }; -const uncheckFormRef = ref(); -// 取消审核原因 -const unconfirmlogConfirm = async () => { - if (tableKey.value.problemId == 4) { - if (!uncheckForm.value.inputValue) return ElMessage.warning("请输入操作原因") - } else if (tableKey.value.problemId == 6) { - const valid = await uncheckFormRef.value.validate().catch(() => { }); - if (!valid) return false; - } - unconfirmlog({ ...tableKey.value, ...uncheckForm.value }).then(response => { - if (response.code == "0") { - unCheckshow.value = false; - unShHandle(); - } - }) -}; - -const unconfirmlogCancel = () => { - unCheckshow.value = false; - uncheckForm.value.reason = ''; - uncheckForm.value.yhdh = ''; - uncheckForm.value.mm = ''; - uncheckFormRef.value.resetFields(); -} const ruleFormRef = ref(null); @@ -963,12 +823,7 @@ const submitForm = () => { } -const resetForm = () => { - checkShow.value = false; - ruleForm.value.userId = ''; - ruleForm.value.mm = ''; - ruleFormRef.value.resetFields(); -}; + // 2. 打开项目选择弹窗 const openItemDictDialog = () => { itemDictRef.value.openDictSelector(); @@ -1022,7 +877,8 @@ const addRowFromDict = async (rowData) => { const emits = defineEmits([ 'fetchLabResults', 'changeStatus', - 'previewHandle' + 'previewHandle', + 'update:tableKey' ]); const csjgTableData = ref([]); diff --git a/src/views/liswork/work/components/unconfirmlog.vue b/src/views/liswork/work/components/unconfirmlog.vue index 69d5a83..26db032 100644 --- a/src/views/liswork/work/components/unconfirmlog.vue +++ b/src/views/liswork/work/components/unconfirmlog.vue @@ -1,186 +1,113 @@ - - + diff --git a/src/views/liswork/work/components/uploadwarning.vue b/src/views/liswork/work/components/uploadwarning.vue index 93ef375..89e2974 100644 --- a/src/views/liswork/work/components/uploadwarning.vue +++ b/src/views/liswork/work/components/uploadwarning.vue @@ -1,179 +1,113 @@ - + +.login-logo img { + height: 40px; + width: auto; +} + +.login-split { + width: 1px; + height: 30px; + background-color: #ccc; + margin: 0 15px; +} + +.login-title h1 { + margin: 0; + font-size: 24px; + color: #1989fa; + font-weight: 500; +} + +/* Tab容器样式(修复冲突) */ +.login-tabs { + width: 100%; + height: 350px; + overflow: hidden; + border-radius: 8px; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + border: 1px solid rgba(255, 255, 255, 0.1); + padding: 1px 10px 10px; + background: transparent; + + :deep(.el-tabs__header) { + background: transparent; + margin: 0; + } + + :deep(.el-tabs__nav-prev), + :deep(.el-tabs__nav-next) { + display: none !important; // 隐藏Tab左右箭头 + } + + :deep(.el-tabs__nav-wrap) { + overflow: visible !important; + } +} + +.custom-select { + margin-top: 20px; /* 可根据需求调整数值 */ +} + +/* Tab占位样式 */ +.tab-placeholder { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 40px 0; + color: #666; + height: calc(100% - 40px); // 适配Tab容器高度 + + .placeholder-icon { + font-size: 48px; + margin-bottom: 20px; + color: #ccc; + } + + .wechat-login-btn { + margin-top: 20px; + width: 200px; + } +} + +/* 隐藏必填项星号 */ +:deep(.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap .el-form-item__asterisk) { + display: none !important; +} + \ No newline at end of file diff --git a/src/views/logincopy.vue b/src/views/logincopy.vue new file mode 100644 index 0000000..c6201db --- /dev/null +++ b/src/views/logincopy.vue @@ -0,0 +1,448 @@ + + + + + \ No newline at end of file