diff --git a/src/api/liswork/qualityControl/index.ts b/src/api/liswork/qualityControl/index.ts index 5826185..a86333a 100644 --- a/src/api/liswork/qualityControl/index.ts +++ b/src/api/liswork/qualityControl/index.ts @@ -211,3 +211,19 @@ export function savemonthskzj(data?: Object) { data }) } +//查询质控数据 +export function qcgraphList(data?: Object) { + return request({ + url: '/qcgraph/query', + method: 'get', + params: data + }) +} +//查询质控参数列表 +export function querySample(data?: Object) { + return request({ + url: '/qcgraph/querysample', + method: 'get', + params: data + }) +} diff --git a/src/views/liswork/qualityControl/qcgraph/index.vue b/src/views/liswork/qualityControl/qcgraph/index.vue index a8eac67..a654fa0 100644 --- a/src/views/liswork/qualityControl/qcgraph/index.vue +++ b/src/views/liswork/qualityControl/qcgraph/index.vue @@ -279,7 +279,6 @@ const getEcharts = () => { yAxis: [{ name: 'SD', type: 'value', - inverse: false, splitLine: { show: true, lineStyle: { type: 'dashed' } }, axisLabel: { formatter: '{value}', color: '#474747', fontSize: 14 }, axisTick: { show: false }, diff --git a/src/views/liswork/qualityControl/westGard/index.vue b/src/views/liswork/qualityControl/westGard/index.vue new file mode 100644 index 0000000..7eb7d17 --- /dev/null +++ b/src/views/liswork/qualityControl/westGard/index.vue @@ -0,0 +1,638 @@ +/** +* @file index.vue 质控图westGard +* @author: w +* @since: 2026-02-04 +*/ + + + + + + \ No newline at end of file diff --git a/src/views/liswork/specimenMonitoring/index.vue b/src/views/liswork/specimenMonitoring/index.vue index ccb559d..588c97d 100644 --- a/src/views/liswork/specimenMonitoring/index.vue +++ b/src/views/liswork/specimenMonitoring/index.vue @@ -8,8 +8,7 @@
- + @@ -26,8 +25,7 @@ - + @@ -43,10 +41,11 @@ 查询 重置 + 导出 - + @@ -55,8 +54,8 @@ - - + + @@ -73,11 +72,11 @@ - + + label="zdmc" value="zddh" objKey="zddh" placeholder="请选择部门" /> @@ -89,7 +88,7 @@ @change="handletime" style="width: 46%;" /> - + @@ -104,8 +103,8 @@ @@ -127,6 +126,9 @@ + @@ -152,13 +154,13 @@ import YQSelectTable from '@/components/SelectTable/YQSelectTable' import dayjs from 'dayjs' import { getComDicts } from '@/api/liswork/dict/ComDict'; import { wholeprocessList } from '@/api/liswork/work/LisWork' -import { load } from '@fingerprintjs/fingerprintjs'; +import { feeitemclassList } from '@/api/mzcx/index'; const { proxy } = getCurrentInstance(); const { lis_reqzt_type } = proxy.useDict("lis_reqzt_type"); //参数类别 const isExpand = ref(false); -let queryParams = reactive({ +const queryParams = ref({ sqsj1: '', sqsj2: '', brdh: '', @@ -166,6 +168,8 @@ let queryParams = reactive({ sqh: '', mxjjzt: '', jjzt: '', + jssj1: '', + jssj2: '', pageNum: 1, pageSize: 500, }) @@ -173,7 +177,7 @@ let queryParams = reactive({ const sumMoney = ref(0) const total = ref(0) - +const feeitemList = ref([]) const loading = ref(false) // 数据源 const tableData = ref([]) @@ -182,7 +186,7 @@ const columns = ref([ { field: 'yljg', title: '送检医院', align: 'center', resizable: true, slotName: 'yljg', width: 150 }, { field: 'brlyname', title: '病人来源', align: 'center', resizable: true, width: 60 }, { field: 'ksname', title: '申请科室', resizable: true, align: 'center', width: 100 }, - { field: 'yblx', title: '标本', align: 'center', resizable: true, width: 60 }, + { field: 'yblxname', title: '标本', align: 'center', resizable: true, width: 60 }, { field: 'ch', title: '床号', resizable: true, align: 'center', width: 40 },//sortable: true, { field: 'brxm', title: '姓名', align: 'center', resizable: true, width: 50 }, { field: 'brxbname', title: '性别', align: 'center', resizable: true, width: 30 }, @@ -195,9 +199,9 @@ const columns = ref([ { field: 'dj', title: '单价', align: 'center', resizable: true, width: 60 }, { field: 'mxjjzt', title: '明细计价', align: 'center', resizable: true, width: 60, slotName: 'mxjjzt' }, { field: 'jzbz', title: '急', align: 'center', resizable: true, slotName: 'jzbz', width: 30 }, - { field: 'zt', title: '当前状态', align: 'center', resizable: true, slotName: 'zt', width: 60 }, - { field: 'refused', title: '拒收标记', align: 'center', resizable: true, slotName: 'bj', width: 60 }, - { field: 'sqxmdh', title: '项目代号', align: 'center', resizable: true, width: 60 }, + { field: 'ztname', title: '当前状态', align: 'center', resizable: true, width: 60 }, + { field: 'refused', title: '拒收标记', align: 'center', resizable: true, slotName: 'refused', width: 60 }, + { field: 'sqxmdh', title: '项目代号', align: 'center', resizable: true, width: 80 }, { field: 'sqysname', title: '申请医生', align: 'center', resizable: true, width: 60 }, { field: 'sqsj', title: '申请时间', align: 'center', resizable: true, width: 150 }, { field: 'zxysname', title: '执行医生', align: 'center', resizable: true, width: 60 }, @@ -206,47 +210,45 @@ const columns = ref([ { field: 'bbsjsj', title: '标本送出时间', align: 'center', resizable: true, width: 150 }, { field: 'jssj', title: '接收时间', align: 'center', resizable: true, width: 150 }, { field: 'sjsj', title: '上机时间', align: 'center', resizable: true, width: 150 }, - { field: 'confirmer', title: '审核人', align: 'center', resizable: true, width: 60 }, + { field: 'confirmername', title: '审核人', align: 'center', resizable: true, width: 60 }, { field: 'confirmtime', title: '审核时间', align: 'center', resizable: true, width: 150 }, { field: 'cyrname', title: '采样人', align: 'center', resizable: true, width: 60 }, { field: 'bbsjrname', title: '标本送出人', align: 'center', resizable: true, width: 80 }, { field: 'jsysname', title: '接收医生', align: 'center', resizable: true, width: 60 }, - { field: 'zd', title: '诊断', align: 'center', resizable: true, width: 60 }, - { field: 'inputman', title: '录入人', align: 'center', resizable: true, width: 60 }, - { field: 'powerman', title: '批准人', align: 'center', resizable: true, width: 60 }, - { field: 'contactman', title: '联系人', align: 'center', resizable: true, width: 60 }, - { field: 'xh', title: '相关编号', align: 'center', resizable: true, width: 60 }, - { field: 'inzt', title: '是否销毁', align: 'center', resizable: true, slotName: 'inzt', width: 60 }, - { field: 'libpos', title: '存放位置', align: 'center', resizable: true, width: 60 }, - { field: 'inlibtime', title: '存放时间', align: 'center', resizable: true, width: 60 }, - { field: 'inlibman', title: '存放人', align: 'center', resizable: true, width: 60 }, - { field: 'outlibtime', title: '销毁时间', align: 'center', resizable: true, width: 60 }, - { field: 'outlibman', title: '销毁人', align: 'center', resizable: true, width: 60 }, - { field: 'yqdh', title: '上机仪器', align: 'center', resizable: true, width: 60 }, + { field: 'zd', title: '诊断', align: 'center', resizable: true, width: 120 }, + // { field: 'inputman', title: '录入人', align: 'center', resizable: true, width: 60 }, + // { field: 'powerman', title: '批准人', align: 'center', resizable: true, width: 60 }, + // { field: 'contactman', title: '联系人', align: 'center', resizable: true, width: 60 }, + // { field: 'inzt', title: '是否销毁', align: 'center', resizable: true, slotName: 'inzt', width: 60 }, + // { field: 'libpos', title: '存放位置', align: 'center', resizable: true, width: 60 }, + // { field: 'inlibtime', title: '存放时间', align: 'center', resizable: true, width: 60 }, + // { field: 'inlibman', title: '存放人', align: 'center', resizable: true, width: 60 }, + // { field: 'outlibtime', title: '销毁时间', align: 'center', resizable: true, width: 60 }, + // { field: 'outlibman', title: '销毁人', align: 'center', resizable: true, width: 60 }, + { field: 'yqname', title: '上机仪器', align: 'center', resizable: true, width: 120 }, { field: 'phone', title: '病人联系电话', align: 'center', resizable: true, width: 100 }, { field: 'phone1', title: '家属联系电话', align: 'center', resizable: true, width: 100 }, - { field: 'sfzh', title: '身份证号', align: 'center', resizable: true, width: 60 }, - { field: 'cp_cytojs', title: '接收TAT', align: 'center', resizable: true, width: 60 }, - { field: 'cp_jstobg', title: '报告TAT', align: 'center', resizable: true, width: 60 }, + { field: 'sfzh', title: '身份证号', align: 'center', resizable: true, width: 100 }, + { field: 'cp_cytojs', title: '接收TAT', align: 'center', resizable: true, width: 100 }, + { field: 'cp_jstobg', title: '报告TAT', align: 'center', resizable: true, width: 100 }, { field: 'min1', title: '接收规定TAT', align: 'center', resizable: true, width: 100 }, { field: 'min2', title: '报告规定TAT', align: 'center', resizable: true, width: 100 }, ]) const handleColumnDragEnd = (data) => { - console.log("🚀 ~ handleColumnDragEnd ~ data:", data) columns.value = []; nextTick(() => { columns.value = [...data.columns]; }); } const handletime = () => { - const dayDiff = classCom.getDayDiff(queryParams.sqsj1, queryParams.sqsj2); + const dayDiff = classCom.getDayDiff(queryParams.value.sqsj1, queryParams.value.sqsj2); if (dayDiff === -1 || dayDiff === -2) return ElMessage.warning('请选择有效的日期范围'); } const pagination = (val) => { - queryParams.pageSize = val.limit; - queryParams.pageNum = val.page; + queryParams.value.pageSize = val.limit; + queryParams.value.pageNum = val.page; handleQuery(); } @@ -254,25 +256,37 @@ const pagination = (val) => { const handleQuery = () => { loading.value = true; // 查询数据 - wholeprocessList(queryParams).then((res) => { + wholeprocessList(queryParams.value).then((res) => { loading.value = false; tableData.value = res.rows; total.value = res.total; sumMoney.value = (res.rows.reduce((acc, cur) => acc + cur.dj * cur.sl, 0)).toFixed(2); }); + + isExpand.value = false; } const refresh = () => { - queryParams = { - st: '', - et: '', + queryParams.value = { + sqsj1: '', + sqsj2: '', brdh: '', brxm: '', sqh: '', + mxjjzt: '', + jjzt: '', + jssj1: '', + jssj2: '', + pageNum: 1, + pageSize: 500, } + timeDate() handleQuery(); } +const printHandle = () => { +} + const instrGroupOptions = ref([]) const instrGroupFields = ref([ { prop: 'zddh', label: '代号', width: 80, enablePinyinSearch: true }, @@ -297,8 +311,8 @@ const timeDate = () => { // queryParams.sqsj1 = startOfWeek.format('YYYY-MM-DD'); // queryParams.sqsj2 = today.format('YYYY-MM-DD'); - queryParams.sqsj1 = '2025-08-01'; - queryParams.sqsj2 = today.format('YYYY-MM-DD'); + queryParams.value.sqsj1 = '2025-08-01'; + queryParams.value.sqsj2 = today.format('YYYY-MM-DD'); } @@ -307,6 +321,17 @@ onMounted(() => { getinstrGroupOptions() getDictData('HOS', 'PT', 'ST'); handleQuery() + + + feeitemclassList().then((res) => { + feeitemList.value = res.rows?.map(item => { + return { + ...item, + label: item.sflbmc, + value: item.sflbdh + } + }) + }) })