统计
This commit is contained in:
parent
2585c6bc76
commit
62eaf32b75
@ -33,3 +33,19 @@ export function querySampleSignBack(query?: Object) {
|
|||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 标本报表
|
||||||
|
export function sampleTypeCount(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/transitReport/sampleTypeCount',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 标本报表费用
|
||||||
|
export function sampleitemCount(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/transitReport/itemCount',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
@ -9,11 +9,11 @@
|
|||||||
value-format="YYYY-MM-DD HH:mm:ss" @change="handletime" style="width: 25rem;" />
|
value-format="YYYY-MM-DD HH:mm:ss" @change="handletime" style="width: 25rem;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="医疗机构:" prop="yljg">
|
<!-- <el-form-item label="医疗机构:" prop="yljg">
|
||||||
<el-select v-model="queryParams.yljg" placeholder="请选择" style="width: 9.37rem;">
|
<el-select v-model="queryParams.yljg" placeholder="请选择" style="width: 9.37rem;">
|
||||||
<el-option v-for="item in dictData.HOS" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in dictData.HOS" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
<el-form-item label="条码状态:" prop="zt">
|
<el-form-item label="条码状态:" prop="zt">
|
||||||
<el-select v-model="queryParams.zt" placeholder="请选择" style="width: 6.25rem;">
|
<el-select v-model="queryParams.zt" placeholder="请选择" style="width: 6.25rem;">
|
||||||
<el-option v-for="item in dictData.ST" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in dictData.ST" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label="委托机构:" prop="SrcHospName">
|
<el-form-item label="委托机构:" prop="SrcHospName">
|
||||||
<SelectTable v-model:data="queryParams.srcHospName" :fields="ksdhFields" :tableData="hosList"
|
<SelectTable v-model:data="queryParams.SrcHospName" :fields="ksdhFields" :tableData="hosList"
|
||||||
label="label" :size="aotuSize" value="label" objKey="label" :border="true" placeholder="请选择委托机构" />
|
label="label" :size="aotuSize" value="label" objKey="label" :border="true" placeholder="请选择委托机构" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -18,12 +18,12 @@
|
|||||||
|
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label="条码号:" prop="Barcode">
|
<el-form-item label="条码号:" prop="Barcode">
|
||||||
<el-input v-model="queryParams.barcode" placeholder="请输入条码号" clearable />
|
<el-input v-model="queryParams.Barcode" placeholder="请输入条码号" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label="姓名:" prop="PatName">
|
<el-form-item label="姓名:" prop="PatName">
|
||||||
<el-input v-model="queryParams.patName" placeholder="请输入姓名" clearable />
|
<el-input v-model="queryParams.PatName" placeholder="请输入姓名" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
@ -39,13 +39,13 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label="采样人:" prop="affirmUserName">
|
<el-form-item label="采样人:" prop="AffirmUserName">
|
||||||
<el-input v-model="queryParams.affirmUserName" placeholder="请输入采样人" clearable />
|
<el-input v-model="queryParams.AffirmUserName" placeholder="请输入采样人" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label="签收人:" prop="signInUserName">
|
<el-form-item label="签收人:" prop="SignInUserName">
|
||||||
<el-input v-model="queryParams.signInUserName" placeholder="请输入签收人" clearable />
|
<el-input v-model="queryParams.SignInUserName" placeholder="请输入签收人" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
@ -129,7 +129,7 @@ const columns: any = ref([
|
|||||||
{ prop: 'sampleTypeName', label: '标本类型', align: 'center', visible: true, },
|
{ prop: 'sampleTypeName', label: '标本类型', align: 'center', visible: true, },
|
||||||
{ prop: 'tubeName', label: '采集容器', align: 'center', visible: true, },
|
{ prop: 'tubeName', label: '采集容器', align: 'center', visible: true, },
|
||||||
{ prop: 'status', label: '标本状态', align: 'center', visible: true, slot: "status" },
|
{ prop: 'status', label: '标本状态', align: 'center', visible: true, slot: "status" },
|
||||||
{ prop: 'moveStateName', label: '流转状态', align: 'center', visible: true, },
|
// { prop: 'moveStateName', label: '流转状态', align: 'center', visible: true, },
|
||||||
{ prop: 'affirmUserName', label: '采样人', align: 'center', visible: true, },
|
{ prop: 'affirmUserName', label: '采样人', align: 'center', visible: true, },
|
||||||
{ prop: 'affirmTime', label: '采样时间', align: 'center', visible: true, width: 150 },
|
{ prop: 'affirmTime', label: '采样时间', align: 'center', visible: true, width: 150 },
|
||||||
{ prop: 'signInUserName', label: '签收人', align: 'center', visible: true, },
|
{ prop: 'signInUserName', label: '签收人', align: 'center', visible: true, },
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
<el-form-item label="委托机构:" prop="SrcHospName">
|
<el-form-item label="委托机构:" prop="SrcHospName">
|
||||||
<SelectTable v-model:data="queryParams.srcHospName" :fields="ksdhFields" :tableData="hosList"
|
<SelectTable v-model:data="queryParams.SrcHospName" :fields="ksdhFields" :tableData="hosList"
|
||||||
label="label" :size="aotuSize" value="value" objKey="value" :border="true" placeholder="请选择委托机构" />
|
label="label" :size="aotuSize" value="value" objKey="value" :border="true" placeholder="请选择委托机构" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -17,12 +17,12 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
<el-form-item label="条码号:" prop="Barcode">
|
<el-form-item label="条码号:" prop="Barcode">
|
||||||
<el-input v-model="queryParams.barcode" placeholder="请输入条码号" clearable />
|
<el-input v-model="queryParams.Barcode" placeholder="请输入条码号" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
<el-form-item label="姓名:" prop="PatName">
|
<el-form-item label="姓名:" prop="PatName">
|
||||||
<el-input v-model="queryParams.patName" placeholder="请输入姓名" clearable />
|
<el-input v-model="queryParams.PatName" placeholder="请输入姓名" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
@ -58,7 +58,7 @@
|
|||||||
<div class="mb10">
|
<div class="mb10">
|
||||||
<el-button type="primary" @click="qsHandle(50)">标本签收</el-button>
|
<el-button type="primary" @click="qsHandle(50)">标本签收</el-button>
|
||||||
<el-button type="primary" @click="qsHandle(110)">标本拒签</el-button>
|
<el-button type="primary" @click="qsHandle(110)">标本拒签</el-button>
|
||||||
<el-button type="primary" plain @click="qsHandle(100)">标本退回</el-button>
|
<el-button type="primary" plain @click="bbThHandle">标本退回</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<CustomTable ref="tableRefs" :data="tableData" :columns="columns" :config="tableConfig" :pagination="pagination"
|
<CustomTable ref="tableRefs" :data="tableData" :columns="columns" :config="tableConfig" :pagination="pagination"
|
||||||
@ -86,7 +86,7 @@ import { listhospital } from "@/api/regional/dict/hospital.js";
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { listregdict } from "@/api/regional/dict/regdict.js";
|
import { listregdict } from "@/api/regional/dict/regdict.js";
|
||||||
import { classCom } from '@/utils/classCom';
|
import { classCom } from '@/utils/classCom';
|
||||||
import { ElMessage } from 'element-plus';
|
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||||
const aotuSize = classCom.useAutoSize();
|
const aotuSize = classCom.useAutoSize();
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
@ -98,15 +98,15 @@ const tableData: any = ref([])
|
|||||||
const columns: any = ref([
|
const columns: any = ref([
|
||||||
{ type: 'selection', align: 'center', visible: true, width: 40 },
|
{ type: 'selection', align: 'center', visible: true, width: 40 },
|
||||||
{ prop: 'barcode', label: '条码号', align: 'center', visible: true, width: 150 },
|
{ prop: 'barcode', label: '条码号', align: 'center', visible: true, width: 150 },
|
||||||
{ prop: 'srcHospName', label: '委托机构', align: 'center', visible: true, width: 200 },
|
{ prop: 'srcHospName', label: '委托机构', align: 'center', visible: true, width: 250 },
|
||||||
{ prop: 'patName', label: '姓名', align: 'center', visible: true, width: 70 },
|
{ prop: 'patName', label: '姓名', align: 'center', visible: true, width: 70 },
|
||||||
{ prop: 'patSex', label: '性别', align: 'center', visible: true, width: 60, slot: "patSex" },
|
{ prop: 'patSex', label: '性别', align: 'center', visible: true, width: 60, slot: "patSex" },
|
||||||
{ prop: 'patAge', label: '年龄', align: 'center', visible: true, slot: "patAge", width: 60 },
|
{ prop: 'patAge', label: '年龄', align: 'center', visible: true, slot: "patAge", width: 60 },
|
||||||
{ prop: 'checkPUR', label: '申请项目', align: 'center', visible: true, width: 200 },
|
{ prop: 'checkPUR', label: '申请项目', align: 'center', visible: true, width: 250 },
|
||||||
{ prop: 'sampleTypeName', label: '标本类型', align: 'center', visible: true, },
|
{ prop: 'sampleTypeName', label: '标本类型', align: 'center', visible: true, },
|
||||||
{ prop: 'tubeName', label: '采集容器', align: 'center', visible: true, },
|
{ prop: 'tubeName', label: '采集容器', align: 'center', visible: true, },
|
||||||
{ prop: 'status', label: '标本状态', align: 'center', visible: true, slot: "status" },
|
{ prop: 'status', label: '标本状态', align: 'center', visible: true, slot: "status" },
|
||||||
{ prop: 'moveStateName', label: '流转状态', align: 'center', visible: true, },
|
// { prop: 'moveStateName', label: '流转状态', align: 'center', visible: true, },
|
||||||
{ prop: 'affirmUserName', label: '采样人', align: 'center', visible: true, },
|
{ prop: 'affirmUserName', label: '采样人', align: 'center', visible: true, },
|
||||||
{ prop: 'affirmTime', label: '采样时间', align: 'center', visible: true, width: 150 },
|
{ prop: 'affirmTime', label: '采样时间', align: 'center', visible: true, width: 150 },
|
||||||
{ prop: 'dstHospName', label: '检测机构名称', align: 'center', visible: true, width: 150 },
|
{ prop: 'dstHospName', label: '检测机构名称', align: 'center', visible: true, width: 150 },
|
||||||
@ -134,12 +134,29 @@ const tableRefs = ref(null)
|
|||||||
const handleSelectionChange = (val: any) => {
|
const handleSelectionChange = (val: any) => {
|
||||||
barcodes.value = val.map((item: any) => item.barcode)
|
barcodes.value = val.map((item: any) => item.barcode)
|
||||||
}
|
}
|
||||||
|
const backReasons = ref('')
|
||||||
|
const bbThHandle = () => {
|
||||||
|
if (!barcodes.value.length) return ElMessage.warning('请选择数据!')
|
||||||
|
ElMessageBox.prompt('请输入退回理由:', '提示', {
|
||||||
|
confirmButtonText: '确认',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
inputPattern: /\S+/,
|
||||||
|
inputErrorMessage: '请输入退回理由',
|
||||||
|
})
|
||||||
|
.then(({ value }) => {
|
||||||
|
backReasons.value = value
|
||||||
|
qsHandle(100)
|
||||||
|
}).catch(() => {
|
||||||
|
backReasons.value = ''
|
||||||
|
});
|
||||||
|
}
|
||||||
//标本签收
|
//标本签收
|
||||||
const qsHandle = (val: number) => {
|
const qsHandle = (val: number) => {
|
||||||
if (!barcodes.value.length) return ElMessage.warning('请选择数据!')
|
if (!barcodes.value.length) return ElMessage.warning('请选择数据!')
|
||||||
sampleSign({ status: val, barcode: barcodes.value }).then((res: any) => {
|
sampleSign({ status: val, barcode: barcodes.value, backReasons: backReasons.value }).then((res: any) => {
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
ElMessage.success(res.msg)
|
ElMessage.success('操作成功!')
|
||||||
|
backReasons.value = ''
|
||||||
handleQuery()
|
handleQuery()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
<el-form-item label="委托机构:" prop="SrcHospName">
|
<el-form-item label="委托机构:" prop="SrcHospName">
|
||||||
<SelectTable v-model:data="queryParams.srcHospName" :fields="ksdhFields" :tableData="hosList"
|
<SelectTable v-model:data="queryParams.SrcHospName" :fields="ksdhFields" :tableData="hosList"
|
||||||
label="label" :size="aotuSize" value="value" objKey="value" :border="true" placeholder="请选择委托机构" />
|
label="label" :size="aotuSize" value="value" objKey="value" :border="true" placeholder="请选择委托机构" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -17,12 +17,12 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
<el-form-item label="条码号:" prop="Barcode">
|
<el-form-item label="条码号:" prop="Barcode">
|
||||||
<el-input v-model="queryParams.barcode" placeholder="请输入条码号" clearable />
|
<el-input v-model="queryParams.Barcode" placeholder="请输入条码号" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
<el-form-item label="姓名:" prop="PatName">
|
<el-form-item label="姓名:" prop="PatName">
|
||||||
<el-input v-model="queryParams.patName" placeholder="请输入姓名" clearable />
|
<el-input v-model="queryParams.PatName" placeholder="请输入姓名" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
@ -93,21 +93,19 @@ const queryParams: any = ref({
|
|||||||
})
|
})
|
||||||
const tableData: any = ref([])
|
const tableData: any = ref([])
|
||||||
const columns: any = ref([
|
const columns: any = ref([
|
||||||
{ type: 'selection', align: 'center', visible: true, },
|
{ type: 'selection', align: 'center', visible: true, width: 40 },
|
||||||
{ prop: 'barcode', label: '处理状态', align: 'center', visible: true, },
|
|
||||||
{ prop: 'barcode', label: '条码号', align: 'center', visible: true, },
|
{ prop: 'barcode', label: '条码号', align: 'center', visible: true, },
|
||||||
{ prop: 'patName', label: '姓名', align: 'center', visible: true, },
|
{ prop: 'patName', label: '姓名', align: 'center', visible: true, width: 60 },
|
||||||
{ prop: 'patSex', label: '性别', align: 'center', visible: true, width: 60, slot: "patSex" },
|
{ prop: 'patSex', label: '性别', align: 'center', visible: true, width: 60, slot: "patSex" },
|
||||||
{ prop: 'patAge', label: '年龄', align: 'center', visible: true, slot: "patAge", width: 60 },
|
{ prop: 'patAge', label: '年龄', align: 'center', visible: true, slot: "patAge", width: 60 },
|
||||||
{ prop: 'checkPUR', label: '申请项目', align: 'center', visible: true, },
|
{ prop: 'checkPUR', label: '申请项目', align: 'center', visible: true, width: 200 },
|
||||||
{ prop: 'srcHospName', label: '委托机构', align: 'center', visible: true, },
|
{ prop: 'srcHospName', label: '委托机构', align: 'center', visible: true, width: 200 },
|
||||||
{ prop: 'srcHospName', label: '检测机构', align: 'center', visible: true, },
|
{ prop: 'srcHospName', label: '检测机构', align: 'center', visible: true, width: 200 },
|
||||||
{ prop: 'Status', label: '标本状态', align: 'center', visible: true, slot: "status" },
|
{ prop: 'Status', label: '标本状态', align: 'center', visible: true, slot: "status" },
|
||||||
{ prop: '', label: '退回理由', align: 'center', visible: true, },
|
{ prop: 'backReasons', label: '退回理由', align: 'center', visible: true, width: 150 },
|
||||||
{ prop: 'affirmTime', label: '采样时间', align: 'center', visible: true, },
|
{ prop: 'affirmTime', label: '采样时间', align: 'center', visible: true, width: 150 },
|
||||||
{ prop: 'signInUserName', label: '操作人', align: 'center', visible: true, },
|
{ prop: 'backUserName', label: '操作人', align: 'center', visible: true, },
|
||||||
{ prop: 'signInTime', label: '操作时间', align: 'center', visible: true, },
|
{ prop: 'backTime', label: '操作时间', align: 'center', visible: true, width: 150 },
|
||||||
{ prop: 'bz', label: '备注', align: 'center', visible: true, },
|
|
||||||
])
|
])
|
||||||
const tableConfig = ref({
|
const tableConfig = ref({
|
||||||
border: true, // 边框
|
border: true, // 边框
|
||||||
@ -134,7 +132,7 @@ const thHandle = (val: number) => {
|
|||||||
if (!barcodes.value.length) return ElMessage.warning('请选择数据!')
|
if (!barcodes.value.length) return ElMessage.warning('请选择数据!')
|
||||||
sampleSign({ status: val, barcode: barcodes.value }).then((res: any) => {
|
sampleSign({ status: val, barcode: barcodes.value }).then((res: any) => {
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
ElMessage.success('标本签收成功!')
|
ElMessage.success('操作成功!')
|
||||||
handleQuery()
|
handleQuery()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
<el-form-item label="委托机构:" prop="SrcHospName">
|
<el-form-item label="委托机构:" prop="SrcHospName">
|
||||||
<SelectTable v-model:data="queryParams.srcHospName" :fields="ksdhFields" :tableData="hosList"
|
<SelectTable v-model:data="queryParams.SrcHospName" :fields="ksdhFields" :tableData="hosList"
|
||||||
label="label" :size="aotuSize" value="value" objKey="value" :border="true" placeholder="请选择委托机构" />
|
label="label" :size="aotuSize" value="value" objKey="value" :border="true" placeholder="请选择委托机构" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -19,12 +19,12 @@
|
|||||||
|
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
<el-form-item label="条码号:" prop="Barcode">
|
<el-form-item label="条码号:" prop="Barcode">
|
||||||
<el-input v-model="queryParams.barcode" placeholder="请输入条码号" clearable @change="handleQuery" />
|
<el-input v-model="queryParams.Barcode" placeholder="请输入条码号" clearable @change="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
<el-form-item label="姓名:" prop="PatName">
|
<el-form-item label="姓名:" prop="PatName">
|
||||||
<el-input v-model="queryParams.patName" placeholder="请输入姓名" clearable @change="handleQuery" />
|
<el-input v-model="queryParams.PatName" placeholder="请输入姓名" clearable @change="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
@ -61,16 +61,17 @@
|
|||||||
<div class="cz_box">
|
<div class="cz_box">
|
||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="1.5"> 送检医院:</el-col>
|
<el-col :span="1.5"> 送检医院:</el-col>
|
||||||
<el-col :span="3">
|
<el-col :span="4">
|
||||||
<SelectTable v-model:data="queryParams.DstHospName" :fields="ksdhFields" :tableData="hosList" label="label"
|
<SelectTable v-model:data="dstHospCode" :fields="ksdhFields" :tableData="hosList" label="label"
|
||||||
:size="aotuSize" value="label" objKey="label" :border="true" placeholder="请选择" />
|
:size="aotuSize" value="value" objKey="value" :border="true" placeholder="请选择" @get-data-value="getValue" />
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5"> <el-button type="primary">标本送检</el-button></el-col>
|
<el-col :span="1.5"> <el-button type="primary" :size="aotuSize" @click="sjHandle(30)">标本送检</el-button></el-col>
|
||||||
<el-col :span="1.5"> <el-button type="primary">取消送检</el-button></el-col>
|
<el-col :span="1.5"> <el-button type="primary" :size="aotuSize" @click="sjHandle(20)">取消送检</el-button></el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<CustomTable ref="tableRefs" :data="tableData" :columns="columns" :config="tableConfig" :pagination="pagination">
|
<CustomTable ref="tableRefs" :data="tableData" :columns="columns" :config="tableConfig" :pagination="pagination"
|
||||||
|
@selection-change="handleSelectionChange" @size-change="sizeChange" @page-change="currentChange">
|
||||||
<template #patAge="{ row }">
|
<template #patAge="{ row }">
|
||||||
{{ row.patAge }}{{ row.ageUnit }}
|
{{ row.patAge }}{{ row.ageUnit }}
|
||||||
</template>
|
</template>
|
||||||
@ -87,13 +88,14 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import CustomTable from '@/components/elTable/index.vue'
|
import CustomTable from '@/components/elTable/index.vue'
|
||||||
import { querySample } from '@/api/regional/index'
|
import { querySample, sampleSign } from '@/api/regional/index'
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { listhospital } from "@/api/regional/dict/hospital.js";
|
import { listhospital } from "@/api/regional/dict/hospital.js";
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { listregdict } from "@/api/regional/dict/regdict.js";
|
import { listregdict } from "@/api/regional/dict/regdict.js";
|
||||||
import SelectTable from '@/components/SelectTable/index.vue';
|
import SelectTable from '@/components/SelectTable/index.vue';
|
||||||
import { classCom } from '@/utils/classCom';
|
import { classCom } from '@/utils/classCom';
|
||||||
|
import { ElMessage } from 'element-plus';
|
||||||
const aotuSize = classCom.useAutoSize();
|
const aotuSize = classCom.useAutoSize();
|
||||||
|
|
||||||
const queryParams: any = ref({
|
const queryParams: any = ref({
|
||||||
@ -103,14 +105,14 @@ const queryParams: any = ref({
|
|||||||
})
|
})
|
||||||
const tableData: any = ref([])
|
const tableData: any = ref([])
|
||||||
const columns: any = ref([
|
const columns: any = ref([
|
||||||
{ type: 'selection', align: 'center', visible: true, },
|
{ type: 'selection', align: 'center', visible: true, width: 40 },
|
||||||
{ prop: 'barcode', label: '条码号', align: 'center', visible: true, },
|
{ prop: 'barcode', label: '条码号', align: 'center', visible: true, },
|
||||||
{ prop: 'srcHospName', label: '委托机构', align: 'center', visible: true, width: 200 },
|
{ prop: 'srcHospName', label: '委托机构', align: 'center', visible: true, width: 250 },
|
||||||
{ prop: 'patName', label: '姓名', align: 'center', visible: true, width: 60 },
|
{ prop: 'patName', label: '姓名', align: 'center', visible: true, width: 60 },
|
||||||
{ prop: 'patSex', label: '性别', align: 'center', visible: true, width: 60, slot: "patSex" },
|
{ prop: 'patSex', label: '性别', align: 'center', visible: true, width: 60, slot: "patSex" },
|
||||||
{ prop: 'patAge', label: '年龄', align: 'center', visible: true, slot: "patAge", width: 60 },
|
{ prop: 'patAge', label: '年龄', align: 'center', visible: true, slot: "patAge", width: 60 },
|
||||||
{ prop: 'checkPUR', label: '申请项目', align: 'center', visible: true, width: 200 },
|
{ prop: 'checkPUR', label: '申请项目', align: 'center', visible: true, width: 250 },
|
||||||
{ prop: 'sampleTypeName', label: '标本类型名称', align: 'center', visible: true, },
|
{ prop: 'sampleTypeName', label: '标本类型', align: 'center', visible: true, },
|
||||||
{ prop: 'status', label: '标本状态', align: 'center', visible: true, slot: "status" },
|
{ prop: 'status', label: '标本状态', align: 'center', visible: true, slot: "status" },
|
||||||
{ prop: 'affirmUserName', label: '采样人', align: 'center', visible: true, },
|
{ prop: 'affirmUserName', label: '采样人', align: 'center', visible: true, },
|
||||||
{ prop: 'affirmTime', label: '采样时间', align: 'center', visible: true, width: 150 },
|
{ prop: 'affirmTime', label: '采样时间', align: 'center', visible: true, width: 150 },
|
||||||
@ -132,15 +134,41 @@ const pagination = ref({
|
|||||||
})
|
})
|
||||||
|
|
||||||
const ksdhFields = ref([
|
const ksdhFields = ref([
|
||||||
{ prop: 'label', label: '名称', enablePinyinSearch: true },
|
{ prop: 'label', label: '名称', width: 150, enablePinyinSearch: true },
|
||||||
{ prop: 'value', label: '代号', width: 80, enablePinyinSearch: true },
|
{ prop: 'value', label: '代号', width: 120, enablePinyinSearch: true },
|
||||||
])
|
])
|
||||||
|
|
||||||
|
const dstHospName = ref('')
|
||||||
|
const dstHospCode = ref('')
|
||||||
|
|
||||||
const barcodes = ref([])
|
const barcodes = ref([])
|
||||||
const handleSelectionChange = (val: any) => {
|
const handleSelectionChange = (val: any) => {
|
||||||
barcodes.value = val.map((item: any) => item.barcode)
|
barcodes.value = val.map((item: any) => item.barcode)
|
||||||
}
|
}
|
||||||
|
const getValue = (val: any) => {
|
||||||
|
console.log('val==>', val);
|
||||||
|
dstHospName.value = val.label
|
||||||
|
}
|
||||||
|
const sjHandle = (val: number) => {
|
||||||
|
if (!barcodes.value.length) return ElMessage.warning('请选择数据!')
|
||||||
|
if (!dstHospCode.value) return ElMessage.warning('请选择送检医院!')
|
||||||
|
const params = {
|
||||||
|
barcode: barcodes.value,
|
||||||
|
dstHospName: dstHospName.value,
|
||||||
|
dstHospCode: dstHospCode.value,
|
||||||
|
status: val
|
||||||
|
}
|
||||||
|
sampleSign(params).then((res: any) => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
ElMessage.success('操作成功!')
|
||||||
|
handleQuery()
|
||||||
|
dstHospCode.value = ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const currentChange = (page: { currentPage: number, pageSize: number }) => {
|
const currentChange = (page: { currentPage: number, pageSize: number }) => {
|
||||||
queryParams.value.pageNum = page.currentPage
|
queryParams.value.pageNum = page.currentPage
|
||||||
handleQuery()
|
handleQuery()
|
||||||
|
|||||||
@ -9,10 +9,9 @@
|
|||||||
value-format="YYYY-MM-DD HH:mm:ss" @change="handletime" style="width: 25rem;" />
|
value-format="YYYY-MM-DD HH:mm:ss" @change="handletime" style="width: 25rem;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="医疗机构:" prop="yljg">
|
<el-form-item label="委托机构:" prop="SrcHospName">
|
||||||
<el-select v-model="queryParams.yljg" placeholder="请选择" style="width: 9.37rem;">
|
<SelectTable v-model:data="queryParams.SrcHospName" :fields="ksdhFields" :tableData="hosList" label="label"
|
||||||
<el-option v-for="item in dictData.HOS" :key="item.value" :label="item.label" :value="item.value" />
|
width="12.5rem" :size="aotuSize" value="label" objKey="label" :border="true" placeholder="请选择委托机构" />
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="条码状态:" prop="zt">
|
<el-form-item label="条码状态:" prop="zt">
|
||||||
<el-select v-model="queryParams.zt" placeholder="请选择" style="width: 6.25rem;">
|
<el-select v-model="queryParams.zt" placeholder="请选择" style="width: 6.25rem;">
|
||||||
@ -166,9 +165,12 @@ import CustomTable from '@/components/elTable/index.vue'
|
|||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import { usePrintStore } from '@/store/modules/printStore'
|
import { usePrintStore } from '@/store/modules/printStore'
|
||||||
import { fetchCodeList, addObj, fetchCodeDetail, fetchCodeExec, fetchCodeReqmain } from '@/api/checkCode/index'
|
import { fetchCodeList, addObj, fetchCodeDetail, fetchCodeExec, fetchCodeReqmain } from '@/api/checkCode/index'
|
||||||
|
// @ts-ignore
|
||||||
|
import { listhospital } from "@/api/regional/dict/hospital.js";
|
||||||
const aotuSize = classCom.useAutoSize();
|
const aotuSize = classCom.useAutoSize();
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
import { comDict } from '@/utils/dict'
|
import { comDict } from '@/utils/dict'
|
||||||
|
import SelectTable from '@/components/SelectTable/index.vue';
|
||||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const printStore = usePrintStore();
|
const printStore = usePrintStore();
|
||||||
@ -184,6 +186,7 @@ interface QueryParams {
|
|||||||
zt: string;
|
zt: string;
|
||||||
failed4: string;
|
failed4: string;
|
||||||
failed5: string;
|
failed5: string;
|
||||||
|
SrcHospName: string;
|
||||||
}
|
}
|
||||||
// 提交表单数据
|
// 提交表单数据
|
||||||
const queryParams = reactive<QueryParams>({
|
const queryParams = reactive<QueryParams>({
|
||||||
@ -191,6 +194,7 @@ const queryParams = reactive<QueryParams>({
|
|||||||
// times: [],
|
// times: [],
|
||||||
yljg: '1',
|
yljg: '1',
|
||||||
zt: '',
|
zt: '',
|
||||||
|
SrcHospName: '',
|
||||||
failed4: '',
|
failed4: '',
|
||||||
failed5: '',
|
failed5: '',
|
||||||
});
|
});
|
||||||
@ -248,7 +252,7 @@ const loading = ref(true);
|
|||||||
const tableData = ref([])
|
const tableData = ref([])
|
||||||
// 配置项
|
// 配置项
|
||||||
const columns = ref([
|
const columns = ref([
|
||||||
{ type: 'selection', visible: true, align: 'center', width: 35, label: '多选框' },
|
{ type: 'selection', visible: true, align: 'center', width: 40, label: '多选框' },
|
||||||
{ prop: 'srcHospName', label: '委托机构', visible: true, align: 'center', width: 200, slot: 'srcHospName' },
|
{ prop: 'srcHospName', label: '委托机构', visible: true, align: 'center', width: 200, slot: 'srcHospName' },
|
||||||
{ prop: 'zt', label: '打印', visible: true, align: 'center', slot: 'dy', width: 40 },
|
{ prop: 'zt', label: '打印', visible: true, align: 'center', slot: 'dy', width: 40 },
|
||||||
{ prop: 'jzbz', label: '急', align: 'center', visible: true, slot: 'jzbz', width: 30 },
|
{ prop: 'jzbz', label: '急', align: 'center', visible: true, slot: 'jzbz', width: 30 },
|
||||||
@ -297,6 +301,10 @@ const cellStyleHd = ({ row, column, rowIndex, columnIndex }: {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const ksdhFields = ref([
|
||||||
|
{ prop: 'label', label: '名称', width: 150, enablePinyinSearch: true },
|
||||||
|
{ prop: 'value', label: '代号', width: 120, enablePinyinSearch: true },
|
||||||
|
])
|
||||||
|
|
||||||
const rowClassNameHd = ({ row, rowIndex }: {
|
const rowClassNameHd = ({ row, rowIndex }: {
|
||||||
row: any;
|
row: any;
|
||||||
@ -535,6 +543,7 @@ const cancelHandle = () => {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const hosList = ref([])
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
// 初始化3天区间(今天-前两天)
|
// 初始化3天区间(今天-前两天)
|
||||||
// const end = dayjs().format('YYYY-MM-DD HH:mm:ss');
|
// const end = dayjs().format('YYYY-MM-DD HH:mm:ss');
|
||||||
@ -552,7 +561,17 @@ onMounted(async () => {
|
|||||||
HOS: toRaw(dictRefs.HOS.value) || [],
|
HOS: toRaw(dictRefs.HOS.value) || [],
|
||||||
ST: toRaw(dictRefs.ST.value) || [],
|
ST: toRaw(dictRefs.ST.value) || [],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
listhospital().then((res: any) => {
|
||||||
|
hosList.value = res.rows.map((item: any) => {
|
||||||
|
return {
|
||||||
|
label: item.hospitalName,
|
||||||
|
value: item.hospitalCode
|
||||||
|
}
|
||||||
|
})
|
||||||
});
|
});
|
||||||
|
})
|
||||||
|
|
||||||
// 字典格式化方法
|
// 字典格式化方法
|
||||||
const formatDict = (v: string, dictType: string) => {
|
const formatDict = (v: string, dictType: string) => {
|
||||||
|
|||||||
238
src/views/regional/regConfig/index.vue
Normal file
238
src/views/regional/regConfig/index.vue
Normal file
@ -0,0 +1,238 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch">
|
||||||
|
<el-form-item label="参数代号" prop="dictCode">
|
||||||
|
<el-input v-model="queryParams.dictCode" placeholder="请输入" clearable style="width: 200px"
|
||||||
|
@keyup.enter="handleQuery" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="参数名称" prop="dictName">
|
||||||
|
<el-input v-model="queryParams.dictName" placeholder="请输入" clearable style="width: 200px"
|
||||||
|
@keyup.enter="handleQuery" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态" prop="status">
|
||||||
|
<el-select v-model="queryParams.status" placeholder="状态" clearable style="width: 200px">
|
||||||
|
<el-option v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||||
|
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<el-row :gutter="10" class="mb8">
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button type="primary" plain icon="Plus" @click="handleAdd">新增</el-button>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate">修改</el-button>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete">删除</el-button>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button type="warning" plain icon="Download" @click="handleExport">导出</el-button>
|
||||||
|
</el-col>
|
||||||
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-table v-loading="loading" :data="regdictList" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
|
<el-table-column label="参数代号" align="center" prop="dictCode" />
|
||||||
|
<el-table-column label="参数名称" align="center" prop="dictName" />
|
||||||
|
<el-table-column label="参数值" align="center" prop="remark" />
|
||||||
|
<el-table-column label="排序" align="center" prop="dictSort" />
|
||||||
|
<el-table-column label="状态" align="center" prop="status">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :options="sys_normal_disable" :value="scope.row.status" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button>
|
||||||
|
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
|
||||||
|
v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||||
|
|
||||||
|
<!-- 添加或修改字典对话框 -->
|
||||||
|
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
|
||||||
|
|
||||||
|
<el-form ref="regdictRef" :model="form" :rules="rules" label-width="150px">
|
||||||
|
<el-form-item label="参数代号" prop="dictCode">
|
||||||
|
<el-input v-model="form.dictCode" placeholder="请输入参数代号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="参数名称" prop="dictName">
|
||||||
|
<el-input v-model="form.dictName" placeholder="请输入参数名称" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="顺序" prop="dictSort">
|
||||||
|
<el-input-number v-model="form.dictSort" controls-position="right" :min="0" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态" prop="status">
|
||||||
|
<el-radio-group v-model="form.status">
|
||||||
|
<el-radio v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.value">{{ dict.label
|
||||||
|
}}</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="参数值" prop="remark">
|
||||||
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup name="regdict">
|
||||||
|
import { listregdict, addregdict, delregdict, getregdict, updateregdict } from "@/api/regional/dict/regdict.js";
|
||||||
|
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const { sys_normal_disable } = proxy.useDict("sys_normal_disable");
|
||||||
|
const route = useRoute();
|
||||||
|
const regdictList = ref([]);
|
||||||
|
const open = ref(false);
|
||||||
|
const loading = ref(true);
|
||||||
|
const showSearch = ref(true);
|
||||||
|
const ids = ref([]);
|
||||||
|
const single = ref(true);
|
||||||
|
const multiple = ref(true);
|
||||||
|
const total = ref(0);
|
||||||
|
const title = ref("");
|
||||||
|
const menuname = ref("字典");
|
||||||
|
const data = reactive({
|
||||||
|
form: {},
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 15,
|
||||||
|
dictCode: undefined,
|
||||||
|
dictName: undefined,
|
||||||
|
dictType: undefined,
|
||||||
|
status: undefined
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
dictName: [{ required: true, message: "参数名称不能为空", trigger: "blur" }],
|
||||||
|
dictCode: [{ required: true, message: "参数代号不能为空", trigger: "blur" }],
|
||||||
|
dictSort: [{ required: true, message: "顺序不能为空", trigger: "blur" }],
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const { queryParams, form, rules } = toRefs(data);
|
||||||
|
|
||||||
|
/** 查询字典列表 */
|
||||||
|
function getList() {
|
||||||
|
loading.value = true;
|
||||||
|
listregdict(queryParams.value).then(response => {
|
||||||
|
regdictList.value = response.rows;
|
||||||
|
total.value = response.total;
|
||||||
|
loading.value = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/** 取消按钮 */
|
||||||
|
function cancel() {
|
||||||
|
open.value = false;
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
/** 表单重置 */
|
||||||
|
function reset() {
|
||||||
|
form.value = {
|
||||||
|
dictId: undefined,
|
||||||
|
dictCode: undefined,
|
||||||
|
dictName: undefined,
|
||||||
|
dictType: queryParams.value.dictType,
|
||||||
|
dictSort: 0,
|
||||||
|
status: "0",
|
||||||
|
remark: undefined
|
||||||
|
};
|
||||||
|
proxy.resetForm("regdictRef");
|
||||||
|
}
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
function handleQuery() {
|
||||||
|
queryParams.value.pageNum = 1;
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
function resetQuery() {
|
||||||
|
proxy.resetForm("queryRef");
|
||||||
|
handleQuery();
|
||||||
|
}
|
||||||
|
/** 多选框选中数据 */
|
||||||
|
function handleSelectionChange(selection) {
|
||||||
|
ids.value = selection.map(item => item.dictId);
|
||||||
|
single.value = selection.length != 1;
|
||||||
|
multiple.value = !selection.length;
|
||||||
|
}
|
||||||
|
/** 新增按钮操作 */
|
||||||
|
function handleAdd() {
|
||||||
|
reset();
|
||||||
|
open.value = true;
|
||||||
|
title.value = "添加参数"
|
||||||
|
}
|
||||||
|
/** 修改按钮操作 */
|
||||||
|
function handleUpdate(row) {
|
||||||
|
reset();
|
||||||
|
const dictId = row.dictId || ids.value;
|
||||||
|
getregdict(dictId).then(response => {
|
||||||
|
form.value = response.data;
|
||||||
|
open.value = true;
|
||||||
|
title.value = "修改参数"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/** 提交按钮 */
|
||||||
|
function submitForm() {
|
||||||
|
proxy.$refs["regdictRef"].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
|
||||||
|
if (form.value.dictId != undefined) {
|
||||||
|
updateregdict(form.value).then(response => {
|
||||||
|
proxy.$modal.msgSuccess("修改成功");
|
||||||
|
open.value = false;
|
||||||
|
getList();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
addregdict(form.value).then(response => {
|
||||||
|
proxy.$modal.msgSuccess("新增成功");
|
||||||
|
open.value = false;
|
||||||
|
getList();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
function handleDelete(row) {
|
||||||
|
const dictIds = row.dictId || ids.value;
|
||||||
|
proxy.$modal.confirm('是否确认删除参数编号为' + dictIds + '"的数据项?').then(function () {
|
||||||
|
return delregdict(dictIds);
|
||||||
|
}).then(() => {
|
||||||
|
getList();
|
||||||
|
proxy.$modal.msgSuccess("删除成功");
|
||||||
|
}).catch(() => { });
|
||||||
|
}
|
||||||
|
/** 导出按钮操作 */
|
||||||
|
function handleExport() {
|
||||||
|
proxy.download("system/regdict/export", {
|
||||||
|
...queryParams.value
|
||||||
|
}, `dict_${new Date().getTime()}.xlsx`);
|
||||||
|
}
|
||||||
|
getTypes(route.query && route.query.dictType, route.query && route.query.typeName);
|
||||||
|
/** 查询字典类型详细 */
|
||||||
|
function getTypes(dictType, typeName) {
|
||||||
|
queryParams.value.dictType = dictType;
|
||||||
|
menuname.value = typeName;
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
172
src/views/regional/statistics/bbtj/index.vue
Normal file
172
src/views/regional/statistics/bbtj/index.vue
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<div class="compact-form">
|
||||||
|
<el-form :model="queryParams" ref="queryRef" label-width="5rem" style="width: 100%;" :size="aotuSize">
|
||||||
|
<el-row :gutter="10">
|
||||||
|
<el-col :span="5">
|
||||||
|
<el-form-item label="所属医院:" prop="DstHospName">
|
||||||
|
<SelectTable v-model:data="queryParams.DstHospName" :fields="ksdhFields" :tableData="hosList"
|
||||||
|
label="label" :size="aotuSize" value="label" objKey="label" :border="true" placeholder="请选择" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="5">
|
||||||
|
<el-form-item label="标本类型:" prop="SampleTypeName">
|
||||||
|
<el-select v-model="queryParams.SampleTypeName" placeholder="请选择" clearable>
|
||||||
|
<el-option v-for="item in regdictList" :label="item.dictName" :value="item.dictCode" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="5">
|
||||||
|
<el-form-item label="开单时间:" prop="times">
|
||||||
|
<el-date-picker v-model="queryParams.times" type="daterange" range-separator="-" start-placeholder="开始时间"
|
||||||
|
end-placeholder="结束时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-button type="primary" @click="handleQuery">查询</el-button>
|
||||||
|
<el-button @click="resetHandle">重置</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb10">
|
||||||
|
<!-- <el-button type="primary" @click="thHandle(20)">重新采集</el-button>
|
||||||
|
<el-button type="primary" @click="thHandle(50)">撤销退回</el-button>
|
||||||
|
<el-button type="primary" @click="thHandle(90)">申请作废</el-button> -->
|
||||||
|
</div>
|
||||||
|
<CustomTable ref="tableRefs" :data="tableData" :columns="columns" :config="tableConfig" :pagination="pagination"
|
||||||
|
@size-change="sizeChange" @page-change="currentChange">
|
||||||
|
|
||||||
|
</CustomTable>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import CustomTable from '@/components/elTable/index.vue'
|
||||||
|
import { sampleTypeCount } from '@/api/regional/index'
|
||||||
|
import SelectTable from '@/components/SelectTable/index.vue';
|
||||||
|
import { classCom } from '@/utils/classCom';
|
||||||
|
// @ts-ignore
|
||||||
|
import { listhospital } from "@/api/regional/dict/hospital.js";
|
||||||
|
// @ts-ignore
|
||||||
|
import { listregdict } from "@/api/regional/dict/regdict.js";
|
||||||
|
import { ElMessage } from 'element-plus';
|
||||||
|
const aotuSize = classCom.useAutoSize();
|
||||||
|
|
||||||
|
const queryParams: any = ref({
|
||||||
|
pageSize: 50,
|
||||||
|
pageNum: 1,
|
||||||
|
})
|
||||||
|
const tableData: any = ref([])
|
||||||
|
const columns: any = ref([
|
||||||
|
{ prop: 'srchospname', label: '所属医院', align: 'center', visible: true, },
|
||||||
|
{ prop: 'sampletypecode', label: '标本代码', align: 'center', visible: true, },
|
||||||
|
{ prop: 'sampletypename', label: '标本类别', align: 'center', visible: true, },
|
||||||
|
{ prop: 'sl', label: '数量(份)', align: 'center', visible: true, },
|
||||||
|
{ prop: 'OrderTime', label: '开单时间', align: 'center', visible: true, },
|
||||||
|
])
|
||||||
|
const tableConfig = ref({
|
||||||
|
border: true, // 边框
|
||||||
|
height: '75vh', // 高度
|
||||||
|
highlightCurrentRow: true, // 高亮当前行
|
||||||
|
summary: true,
|
||||||
|
summaryField: ['sl'],//计算列总和
|
||||||
|
sumText: '合计'
|
||||||
|
})
|
||||||
|
|
||||||
|
const pagination = ref({
|
||||||
|
show: true,
|
||||||
|
total: 0,
|
||||||
|
pageSize: 50,
|
||||||
|
currentPage: 1,
|
||||||
|
})
|
||||||
|
|
||||||
|
const ksdhFields = ref([
|
||||||
|
{ prop: 'label', label: '名称', width: 150, enablePinyinSearch: true },
|
||||||
|
{ prop: 'value', label: '代号', width: 120, enablePinyinSearch: true },
|
||||||
|
])
|
||||||
|
const barcodes = ref([])
|
||||||
|
const tableRefs = ref(null)
|
||||||
|
|
||||||
|
|
||||||
|
const handleSelectionChange = (val: any) => {
|
||||||
|
barcodes.value = val.map((item: any) => item.barcode)
|
||||||
|
}
|
||||||
|
const currentChange = (page: { currentPage: number, pageSize: number }) => {
|
||||||
|
queryParams.value.pageNum = page.currentPage
|
||||||
|
handleQuery()
|
||||||
|
}
|
||||||
|
const sizeChange = (page: { currentPage: number, pageSize: number }) => {
|
||||||
|
queryParams.value.pageSize = page.pageSize
|
||||||
|
handleQuery()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const handleQuery = () => {
|
||||||
|
if (queryParams.value.times && queryParams.value.times.length > 0) {
|
||||||
|
queryParams.value.DateStart = queryParams.value.times[0]
|
||||||
|
queryParams.value.DateEnd = queryParams.value.times[1]
|
||||||
|
} else {
|
||||||
|
queryParams.value.DateStart = ''
|
||||||
|
queryParams.value.DateEnd = ''
|
||||||
|
}
|
||||||
|
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
|
||||||
|
const resetHandle = () => {
|
||||||
|
queryParams.value = {
|
||||||
|
pageSize: 50,
|
||||||
|
pageNum: 1,
|
||||||
|
}
|
||||||
|
handleQuery()
|
||||||
|
}
|
||||||
|
const getList = () => {
|
||||||
|
sampleTypeCount(queryParams.value).then((res: any) => {
|
||||||
|
tableData.value = res.rows
|
||||||
|
pagination.value.total = res.total
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const hosList = ref([])
|
||||||
|
const regdictList: any = ref([])
|
||||||
|
onMounted(() => {
|
||||||
|
getList()
|
||||||
|
listhospital().then((res: any) => {
|
||||||
|
hosList.value = res.rows.map((item: any) => {
|
||||||
|
return {
|
||||||
|
label: item.hospitalName,
|
||||||
|
value: item.hospitalCode
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
listregdict({ pageSize: 100, pageNum: 1, dictType: 'BT' }).then((res: any) => {
|
||||||
|
regdictList.value = res.rows
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
const formatDict = (v: string, arr: Array<any>) => {
|
||||||
|
return arr.find((item: any) => item.dictCode == v)?.dictName || v;
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.compact-form {
|
||||||
|
.el-form-item {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btns {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-around;
|
||||||
|
|
||||||
|
&>button {
|
||||||
|
width: 100%;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
181
src/views/regional/statistics/fytj/index.vue
Normal file
181
src/views/regional/statistics/fytj/index.vue
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<div class="compact-form">
|
||||||
|
<el-form :model="queryParams" ref="queryRef" label-width="5rem" style="width: 100%;" :size="aotuSize">
|
||||||
|
<el-row :gutter="10">
|
||||||
|
<el-col :span="5">
|
||||||
|
<el-form-item label="就诊医院:" prop="SrcHospName">
|
||||||
|
<SelectTable v-model:data="queryParams.SrcHospName" :fields="ksdhFields" :tableData="hosList"
|
||||||
|
label="label" :size="aotuSize" value="value" objKey="value" :border="true" placeholder="请选择委托机构" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="5">
|
||||||
|
<el-form-item label="检测医院:" prop="DstHospName">
|
||||||
|
<SelectTable v-model:data="queryParams.DstHospName" :fields="ksdhFields" :tableData="hosList"
|
||||||
|
label="label" :size="aotuSize" value="label" objKey="label" :border="true" placeholder="请选择" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
<el-col :span="5">
|
||||||
|
<el-form-item label="日期:" prop="times">
|
||||||
|
<el-date-picker v-model="queryParams.times" type="daterange" range-separator="-" start-placeholder="开始时间"
|
||||||
|
end-placeholder="结束时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-button type="primary" @click="handleQuery">查询</el-button>
|
||||||
|
<el-button @click="resetHandle">重置</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb10">
|
||||||
|
<!-- <el-button type="primary" @click="thHandle(20)">重新采集</el-button>
|
||||||
|
<el-button type="primary" @click="thHandle(50)">撤销退回</el-button>
|
||||||
|
<el-button type="primary" @click="thHandle(90)">申请作废</el-button> -->
|
||||||
|
</div>
|
||||||
|
<CustomTable ref="tableRefs" :data="tableData" :columns="columns" :config="tableConfig" :pagination="pagination"
|
||||||
|
@size-change="sizeChange" @page-change="currentChange">
|
||||||
|
|
||||||
|
</CustomTable>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import CustomTable from '@/components/elTable/index.vue'
|
||||||
|
import { sampleitemCount, sampleSign } from '@/api/regional/index'
|
||||||
|
import SelectTable from '@/components/SelectTable/index.vue';
|
||||||
|
import { classCom } from '@/utils/classCom';
|
||||||
|
// @ts-ignore
|
||||||
|
import { listhospital } from "@/api/regional/dict/hospital.js";
|
||||||
|
// @ts-ignore
|
||||||
|
import { listregdict } from "@/api/regional/dict/regdict.js";
|
||||||
|
import { ElMessage } from 'element-plus';
|
||||||
|
const aotuSize = classCom.useAutoSize();
|
||||||
|
|
||||||
|
const queryParams: any = ref({
|
||||||
|
pageSize: 50,
|
||||||
|
pageNum: 1,
|
||||||
|
})
|
||||||
|
const tableData: any = ref([])
|
||||||
|
const columns: any = ref([
|
||||||
|
{ prop: 'SrcHospName', label: '就诊医院', align: 'center', visible: true, },
|
||||||
|
{ prop: 'SrcOrderItemCode', label: '组合编码', align: 'center', visible: true, },
|
||||||
|
{ prop: 'SrcOrderItemName', label: '组合名称', align: 'center', visible: true, },
|
||||||
|
{ prop: 'sl', label: '数量(份)', align: 'center', visible: true, },
|
||||||
|
{ prop: 'cost', label: '费用', align: 'center', visible: true, },
|
||||||
|
{ prop: 'DstHospName', label: '检测医院', align: 'center', visible: true, },
|
||||||
|
])
|
||||||
|
const tableConfig = ref({
|
||||||
|
border: true, // 边框
|
||||||
|
height: '75vh', // 高度
|
||||||
|
highlightCurrentRow: true, // 高亮当前行
|
||||||
|
summary: true,
|
||||||
|
summaryField: ['sl', 'cost'],//计算列总和
|
||||||
|
sumText: '合计'
|
||||||
|
})
|
||||||
|
|
||||||
|
const pagination = ref({
|
||||||
|
show: true,
|
||||||
|
total: 0,
|
||||||
|
pageSize: 50,
|
||||||
|
currentPage: 1,
|
||||||
|
})
|
||||||
|
|
||||||
|
const ksdhFields = ref([
|
||||||
|
{ prop: 'label', label: '名称', width: 150, enablePinyinSearch: true },
|
||||||
|
{ prop: 'value', label: '代号', width: 120, enablePinyinSearch: true },
|
||||||
|
])
|
||||||
|
const barcodes = ref([])
|
||||||
|
const tableRefs = ref(null)
|
||||||
|
|
||||||
|
const thHandle = (val: number) => {
|
||||||
|
if (!barcodes.value.length) return ElMessage.warning('请选择数据!')
|
||||||
|
sampleSign({ status: val, barcode: barcodes.value }).then((res: any) => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
ElMessage.success('操作成功!')
|
||||||
|
handleQuery()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const handleSelectionChange = (val: any) => {
|
||||||
|
barcodes.value = val.map((item: any) => item.barcode)
|
||||||
|
}
|
||||||
|
const currentChange = (page: { currentPage: number, pageSize: number }) => {
|
||||||
|
queryParams.value.pageNum = page.currentPage
|
||||||
|
handleQuery()
|
||||||
|
}
|
||||||
|
const sizeChange = (page: { currentPage: number, pageSize: number }) => {
|
||||||
|
queryParams.value.pageSize = page.pageSize
|
||||||
|
handleQuery()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const handleQuery = () => {
|
||||||
|
if (queryParams.value.times && queryParams.value.times.length > 0) {
|
||||||
|
queryParams.value.DateStart = queryParams.value.times[0]
|
||||||
|
queryParams.value.DateEnd = queryParams.value.times[1]
|
||||||
|
} else {
|
||||||
|
queryParams.value.DateStart = ''
|
||||||
|
queryParams.value.DateEnd = ''
|
||||||
|
}
|
||||||
|
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
|
||||||
|
const resetHandle = () => {
|
||||||
|
queryParams.value = {
|
||||||
|
pageSize: 50,
|
||||||
|
pageNum: 1,
|
||||||
|
}
|
||||||
|
handleQuery()
|
||||||
|
}
|
||||||
|
const getList = () => {
|
||||||
|
sampleitemCount(queryParams.value).then((res: any) => {
|
||||||
|
tableData.value = res.rows
|
||||||
|
pagination.value.total = res.total
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const hosList = ref([])
|
||||||
|
const regdictList: any = ref([])
|
||||||
|
onMounted(() => {
|
||||||
|
getList()
|
||||||
|
listhospital().then((res: any) => {
|
||||||
|
hosList.value = res.rows.map((item: any) => {
|
||||||
|
return {
|
||||||
|
label: item.hospitalName,
|
||||||
|
value: item.hospitalCode
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
listregdict({ pageSize: 100, pageNum: 1, dictType: 'ZT' }).then((res: any) => {
|
||||||
|
regdictList.value = res.rows;
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
const formatDict = (v: string, arr: Array<any>) => {
|
||||||
|
return arr.find((item: any) => item.dictCode == v)?.dictName || v;
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.compact-form {
|
||||||
|
.el-form-item {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btns {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-around;
|
||||||
|
|
||||||
|
&>button {
|
||||||
|
width: 100%;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
1225
src/views/regional/statistics/overview/css/icon.css
Normal file
1225
src/views/regional/statistics/overview/css/icon.css
Normal file
File diff suppressed because one or more lines are too long
489
src/views/regional/statistics/overview/css/index.css
Normal file
489
src/views/regional/statistics/overview/css/index.css
Normal file
@ -0,0 +1,489 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
|
||||||
|
/* CSS Document */
|
||||||
|
.bg {
|
||||||
|
margin: 0 auto;
|
||||||
|
width: 100%;
|
||||||
|
min-height: 100vh;
|
||||||
|
background: url(../images/bg2.jpg) no-repeat;
|
||||||
|
background-size: cover;
|
||||||
|
padding-top: 0rem;
|
||||||
|
padding: 0rem 3.125rem;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*.conIn{
|
||||||
|
display:flex;
|
||||||
|
display: -webkit-flex;}*/
|
||||||
|
.title {
|
||||||
|
width: 100%;
|
||||||
|
font-size: 1.875rem;
|
||||||
|
line-height: 4.6875rem;
|
||||||
|
color: rgba(14, 253, 255, 1);
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border_bg_leftTop {
|
||||||
|
position: absolute;
|
||||||
|
left: -0.125rem;
|
||||||
|
top: -0.625rem;
|
||||||
|
width: 5.78125rem;
|
||||||
|
height: 0.78125rem;
|
||||||
|
display: block;
|
||||||
|
background: #01279d url(../images/title_left_bg.png) no-repeat;
|
||||||
|
background-size: cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border_bg_rightTop {
|
||||||
|
position: absolute;
|
||||||
|
right: -0.15625rem;
|
||||||
|
top: -0.15625rem;
|
||||||
|
width: 1.5625rem;
|
||||||
|
height: 1.5625rem;
|
||||||
|
display: block;
|
||||||
|
background: url(../images/border_bg.jpg) no-repeat;
|
||||||
|
background-size: cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border_bg_leftBottom {
|
||||||
|
position: absolute;
|
||||||
|
left: -0.125rem;
|
||||||
|
bottom: -0.125rem;
|
||||||
|
width: 1.5625rem;
|
||||||
|
height: 1.5625rem;
|
||||||
|
display: block;
|
||||||
|
background: url(../images/border_bg.jpg) no-repeat;
|
||||||
|
background-size: cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border_bg_rightBottom {
|
||||||
|
position: absolute;
|
||||||
|
right: -0.15625rem;
|
||||||
|
bottom: -0.15625rem;
|
||||||
|
width: 1.25rem;
|
||||||
|
height: 1.25rem;
|
||||||
|
display: block;
|
||||||
|
background: url(../images/title_right_bg.png) no-repeat;
|
||||||
|
background-size: cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain {
|
||||||
|
width: 75%;
|
||||||
|
float: left;
|
||||||
|
padding-right: 1.5625rem;
|
||||||
|
padding-top: 1.5625rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rightMain {
|
||||||
|
width: 25%;
|
||||||
|
float: left;
|
||||||
|
padding-top: 1.5625rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_top {
|
||||||
|
width: 100%;
|
||||||
|
padding-bottom: 1.5625rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_top ul {
|
||||||
|
display: flex;
|
||||||
|
display: -webkit-flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_top ul li {
|
||||||
|
float: left;
|
||||||
|
width: 25%;
|
||||||
|
padding-right: 1.5625rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_top ul li:last-child {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_top ul li .liIn {
|
||||||
|
border: 0.125rem solid rgba(14, 253, 255, 0.5);
|
||||||
|
width: 100%;
|
||||||
|
min-height: 3.75rem;
|
||||||
|
position: relative;
|
||||||
|
padding: .625rem 1.5625rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_top ul li .liIn h3 {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_top ul li .liIn .shu {
|
||||||
|
font-size: 1.875rem;
|
||||||
|
color: rgba(14, 253, 255, 1);
|
||||||
|
font-family: dig;
|
||||||
|
margin-bottom: 0.3125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_top ul li .liIn .shu i {
|
||||||
|
font-size: 1rem;
|
||||||
|
margin-left: 0.9375rem;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_top ul li .liIn .zi {
|
||||||
|
font-size: 0.625rem;
|
||||||
|
color: #fff;
|
||||||
|
position: relative;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_top ul li .liIn .zi .span1 {
|
||||||
|
margin-right: 1.5625rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.leftMain_middle {
|
||||||
|
width: 100%;
|
||||||
|
padding-bottom: 1.5625rem;
|
||||||
|
display: flex;
|
||||||
|
display: -webkit-flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_left {
|
||||||
|
width: 60%;
|
||||||
|
padding-right: 1.5625rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_left .leftMain_middle_leftIn {
|
||||||
|
border: 0.125rem solid rgba(14, 253, 255, 0.5);
|
||||||
|
width: 100%;
|
||||||
|
min-height: 3.75rem;
|
||||||
|
position: relative;
|
||||||
|
padding: 1.25rem 0.78125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_left .leftMain_middle_leftIn h3 {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
color: #fff;
|
||||||
|
font-weight: 700;
|
||||||
|
margin-bottom: 0.78125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_left .leftMain_middle_leftIn .biaoge {
|
||||||
|
min-height: 12.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right {
|
||||||
|
width: 40%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn {
|
||||||
|
border: 0.125rem solid rgba(14, 253, 255, 0.5);
|
||||||
|
width: 100%;
|
||||||
|
min-height: 3.75rem;
|
||||||
|
position: relative;
|
||||||
|
padding: 1.25rem 0.78125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn h3 {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
color: #fff;
|
||||||
|
font-weight: 700;
|
||||||
|
margin-bottom: 0.78125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge {
|
||||||
|
min-height: 12.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*左边中间部分排行榜*/
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai {
|
||||||
|
width: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn {
|
||||||
|
display: flex;
|
||||||
|
display: -webkit-flex;
|
||||||
|
align-items: center;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 0.9375rem;
|
||||||
|
height: 2.8125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn .liIn_left {
|
||||||
|
width: 25%;
|
||||||
|
position: relative;
|
||||||
|
padding-left: 2.1875rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn .liIn_left .bot {
|
||||||
|
width: 1.25rem;
|
||||||
|
height: 1.25rem;
|
||||||
|
background: #f78cf3;
|
||||||
|
border-radius: 62.5rem;
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
left: 0.3125rem;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
margin: auto 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn2 .liIn_left .bot {
|
||||||
|
background: #e7feb8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn3 .liIn_left .bot {
|
||||||
|
background: #fdea8a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn4 .liIn_left .bot {
|
||||||
|
background: #8ff9f8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn5 .liIn_left .bot {
|
||||||
|
background: #d890fa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn6 .liIn_left .bot {
|
||||||
|
background: #05d1fc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn .liIn_left zi {}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn .liIn_line {
|
||||||
|
width: 58%;
|
||||||
|
height: 1.25rem;
|
||||||
|
background: rgba(255, 255, 255, 0.5);
|
||||||
|
border-radius: 125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn .liIn_line .line_lineIn {
|
||||||
|
width: 100%;
|
||||||
|
height: 1.25rem;
|
||||||
|
background: #f78cf3;
|
||||||
|
border-radius: 6.25rem;
|
||||||
|
-webkit-animation: widthMove1 2s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn2 .liIn_line .line_lineIn {
|
||||||
|
background: #e7feb8;
|
||||||
|
-webkit-animation: widthMove2 2s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn3 .liIn_line .line_lineIn {
|
||||||
|
background: #fdea8a;
|
||||||
|
-webkit-animation: widthMove3 2s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn4 .liIn_line .line_lineIn {
|
||||||
|
background: #8ff9f8;
|
||||||
|
-webkit-animation: widthMove4 2s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn5 .liIn_line .line_lineIn {
|
||||||
|
background: #d890fa;
|
||||||
|
-webkit-animation: widthMove5 2s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn6 .liIn_line .line_lineIn {
|
||||||
|
background: #05d1fc;
|
||||||
|
-webkit-animation: widthMove6 2s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes widthMove1 {
|
||||||
|
0% {
|
||||||
|
width: 0%;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
width: 98.5%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes widthMove2 {
|
||||||
|
0% {
|
||||||
|
width: 0%;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
width: 88.5%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes widthMove3 {
|
||||||
|
0% {
|
||||||
|
width: 0%;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
width: 68.5%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes widthMove4 {
|
||||||
|
0% {
|
||||||
|
width: 0%;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
width: 40.5%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes widthMove5 {
|
||||||
|
0% {
|
||||||
|
width: 0%;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
width: 22.5%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes widthMove6 {
|
||||||
|
0% {
|
||||||
|
width: 0%;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
width: 10.5%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_pai ul li .liIn .num {
|
||||||
|
width: 17%;
|
||||||
|
font-family: dig;
|
||||||
|
padding-left: 0.3125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*左边底部*/
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_bi ul {
|
||||||
|
display: flex;
|
||||||
|
display: -webkit-flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_bi ul li {
|
||||||
|
width: 33.3%;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 0.78125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_bi ul li .shu {
|
||||||
|
font-size: 2.1875rem;
|
||||||
|
color: rgba(14, 253, 255, 1);
|
||||||
|
font-family: dig;
|
||||||
|
padding: 1.875rem 0 0.3125rem;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftMain_middle .leftMain_middle_right .leftMain_middle_rightIn .biaoge_bi ul li .zi {
|
||||||
|
font-size: 0.9375rem;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*右边部分*/
|
||||||
|
.rightMain .rightMain_top {
|
||||||
|
width: 100%;
|
||||||
|
padding-bottom: 1.5625rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rightMain .rightMain_topIn {
|
||||||
|
border: 0.125rem solid rgba(14, 253, 255, 0.5);
|
||||||
|
width: 100%;
|
||||||
|
min-height: 3.75rem;
|
||||||
|
position: relative;
|
||||||
|
padding: 1.25rem 0.78125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rightMain .rightMain_topIn h3 {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
color: #fff;
|
||||||
|
margin-bottom: 0.78125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rightMain .rightMain_topIn .biaoge {
|
||||||
|
min-height: 12.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rightMain .rightMain_bottom {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rightMain .rightMain_bottomIn {
|
||||||
|
border: 0.125rem solid rgba(14, 253, 255, 0.5);
|
||||||
|
width: 100%;
|
||||||
|
min-height: 3.75rem;
|
||||||
|
position: relative;
|
||||||
|
padding: 1.25rem 0.78125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rightMain .rightMain_bottomIn h3 {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
color: #fff;
|
||||||
|
margin-bottom: 0.78125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*右下角表格*/
|
||||||
|
.rightMain .rightMain_bottomIn .biaoge {
|
||||||
|
min-height: 12.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rightMain .rightMain_bottomIn .biaoge_list {
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rightMain .rightMain_bottomIn .biaoge_list .biaoge_listIn .ul_list {
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rightMain .rightMain_bottomIn .biaoge_list .biaoge_listIn .ul_listIn {
|
||||||
|
-webkit-animation: 14s gundong linear infinite normal;
|
||||||
|
animation: 14s gundong linear infinite normal;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes gundong {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: translate3d(0, 0, 0);
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
-webkit-transform: translate3d(0, -30vh, 0);
|
||||||
|
transform: translate3d(0, -30vh, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.rightMain .rightMain_bottomIn .biaoge_list ul {
|
||||||
|
display: flex;
|
||||||
|
display: -webkit-flex;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rightMain .rightMain_bottomIn .biaoge_list .ul_title {
|
||||||
|
background: linear-gradient(left, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.1));
|
||||||
|
background: -ms-linear-gradient(left, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.1));
|
||||||
|
background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.1));
|
||||||
|
background: -moz-linear-gradient(left, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.1));
|
||||||
|
}
|
||||||
|
|
||||||
|
.rightMain .rightMain_bottomIn .biaoge_list .ul_con {
|
||||||
|
border-bottom: 0.125rem solid rgba(14, 253, 255, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rightMain .rightMain_bottomIn .biaoge_list ul li {
|
||||||
|
width: 20%;
|
||||||
|
text-align: center;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 0.9375rem;
|
||||||
|
height: 3.125rem;
|
||||||
|
line-height: 3.125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rightMain .rightMain_bottomIn .biaoge_list ul li:frist-child {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
1063
src/views/regional/statistics/overview/css/public.css
Normal file
1063
src/views/regional/statistics/overview/css/public.css
Normal file
File diff suppressed because it is too large
Load Diff
BIN
src/views/regional/statistics/overview/fonts/DIN-Bold.otf
Normal file
BIN
src/views/regional/statistics/overview/fonts/DIN-Bold.otf
Normal file
Binary file not shown.
BIN
src/views/regional/statistics/overview/fonts/DIN-Light.otf
Normal file
BIN
src/views/regional/statistics/overview/fonts/DIN-Light.otf
Normal file
Binary file not shown.
BIN
src/views/regional/statistics/overview/fonts/DIN-Medium.otf
Normal file
BIN
src/views/regional/statistics/overview/fonts/DIN-Medium.otf
Normal file
Binary file not shown.
BIN
src/views/regional/statistics/overview/images/bg2.jpg
Normal file
BIN
src/views/regional/statistics/overview/images/bg2.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 206 KiB |
BIN
src/views/regional/statistics/overview/images/border_bg.jpg
Normal file
BIN
src/views/regional/statistics/overview/images/border_bg.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.7 KiB |
BIN
src/views/regional/statistics/overview/images/title_left_bg.png
Normal file
BIN
src/views/regional/statistics/overview/images/title_left_bg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
BIN
src/views/regional/statistics/overview/images/title_right_bg.png
Normal file
BIN
src/views/regional/statistics/overview/images/title_right_bg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.8 KiB |
506
src/views/regional/statistics/overview/index.vue
Normal file
506
src/views/regional/statistics/overview/index.vue
Normal file
@ -0,0 +1,506 @@
|
|||||||
|
<template>
|
||||||
|
<div class="bg">
|
||||||
|
<div class="title">智能大屏数据中心</div>
|
||||||
|
<div class="leftMain">
|
||||||
|
<div class="leftMain_top">
|
||||||
|
<div class="leftMain_topIn">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<div class="liIn">
|
||||||
|
<h3>区域机构</h3>
|
||||||
|
<p class="shu"><span class="shu1">69</span><i>家</i></p>
|
||||||
|
<span class="border_bg_leftTop"></span>
|
||||||
|
<span class="border_bg_rightTop"></span>
|
||||||
|
<span class="border_bg_leftBottom"></span>
|
||||||
|
<span class="border_bg_rightBottom"></span>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="liIn">
|
||||||
|
<h3>检验人数</h3>
|
||||||
|
<p class="shu"><span class="shu2">609</span><i>人</i></p>
|
||||||
|
<span class="border_bg_leftTop"></span>
|
||||||
|
<span class="border_bg_rightTop"></span>
|
||||||
|
<span class="border_bg_leftBottom"></span>
|
||||||
|
<span class="border_bg_rightBottom"></span>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="liIn">
|
||||||
|
<h3>检验管数</h3>
|
||||||
|
<p class="shu"><span class="shu2">609</span><i>个</i></p>
|
||||||
|
<span class="border_bg_leftTop"></span>
|
||||||
|
<span class="border_bg_rightTop"></span>
|
||||||
|
<span class="border_bg_leftBottom"></span>
|
||||||
|
<span class="border_bg_rightBottom"></span>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="liIn">
|
||||||
|
<h3>检验报告数</h3>
|
||||||
|
<p class="shu"><span class="shu3">289</span><i>份</i></p>
|
||||||
|
<span class="border_bg_leftTop"></span>
|
||||||
|
<span class="border_bg_rightTop"></span>
|
||||||
|
<span class="border_bg_leftBottom"></span>
|
||||||
|
<span class="border_bg_rightBottom"></span>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="liIn">
|
||||||
|
<h3>检验项目数</h3>
|
||||||
|
<p class="shu"><span class="shu4">759</span><i>个</i></p>
|
||||||
|
<span class="border_bg_leftTop"></span>
|
||||||
|
<span class="border_bg_rightTop"></span>
|
||||||
|
<span class="border_bg_leftBottom"></span>
|
||||||
|
<span class="border_bg_rightBottom"></span>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="leftMain_middle">
|
||||||
|
<div class="leftMain_middle_left">
|
||||||
|
<div class="leftMain_middle_leftIn">
|
||||||
|
<h3>委托机构当月送检标本数量</h3>
|
||||||
|
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
|
||||||
|
<div class="biaoge" style="width:100%; height:26vh" ref="chartmain" id="chartmain"></div>
|
||||||
|
<span class="border_bg_leftTop"></span>
|
||||||
|
<span class="border_bg_rightTop"></span>
|
||||||
|
<span class="border_bg_leftBottom"></span>
|
||||||
|
<span class="border_bg_rightBottom"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="leftMain_middle_right">
|
||||||
|
<div class="leftMain_middle_rightIn">
|
||||||
|
<h3>当日送检样本情况</h3>
|
||||||
|
<div class="biaoge biaoge_pai" ref="biaoge_pai" style="width:100%; height:26vh">
|
||||||
|
</div>
|
||||||
|
<span class="border_bg_leftTop"></span>
|
||||||
|
<span class="border_bg_rightTop"></span>
|
||||||
|
<span class="border_bg_leftBottom"></span>
|
||||||
|
<span class="border_bg_rightBottom"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="leftMain_middle">
|
||||||
|
<div class="leftMain_middle_left">
|
||||||
|
<div class="leftMain_middle_leftIn">
|
||||||
|
<h3>近一个月送检标本数量趋势图</h3>
|
||||||
|
<div class="biaoge" style="width:100%; height:28vh" ref="chartmain_zhe" id="chartmain_zhe"></div>
|
||||||
|
<span class="border_bg_leftTop"></span>
|
||||||
|
<span class="border_bg_rightTop"></span>
|
||||||
|
<span class="border_bg_leftBottom"></span>
|
||||||
|
<span class="border_bg_rightBottom"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="leftMain_middle_right">
|
||||||
|
<div class="leftMain_middle_rightIn">
|
||||||
|
<h3>送检项目分类占比</h3>
|
||||||
|
<div class="biaoge biaoge_bi" ref="sxEhart" style="width:100%; height:28vh">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="border_bg_leftTop"></span>
|
||||||
|
<span class="border_bg_rightTop"></span>
|
||||||
|
<span class="border_bg_leftBottom"></span>
|
||||||
|
<span class="border_bg_rightBottom"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="rightMain">
|
||||||
|
<div class="rightMain_top">
|
||||||
|
<div class="rightMain_topIn">
|
||||||
|
<h3>这里是标题</h3>
|
||||||
|
<div class="biaoge" style="width:100%; height:30vh" id="chartmain_bing"></div>
|
||||||
|
<span class="border_bg_leftTop"></span>
|
||||||
|
<span class="border_bg_rightTop"></span>
|
||||||
|
<span class="border_bg_leftBottom"></span>
|
||||||
|
<span class="border_bg_rightBottom"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="rightMain_bottom">
|
||||||
|
<div class="rightMain_bottomIn">
|
||||||
|
<h3>这里是标题</h3>
|
||||||
|
<div class="biaoge biaoge_list" style="width:100%; height:36vh">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="border_bg_leftTop"></span>
|
||||||
|
<span class="border_bg_rightTop"></span>
|
||||||
|
<span class="border_bg_leftBottom"></span>
|
||||||
|
<span class="border_bg_rightBottom"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="clear:both;"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import * as echarts from 'echarts';
|
||||||
|
//@ts-ignore
|
||||||
|
const chartmain = ref()
|
||||||
|
const getEcharts1 = () => {
|
||||||
|
|
||||||
|
const Intance = echarts.init(chartmain.value);
|
||||||
|
var dataAxis = ['1日', '2日', '3日', '4日', '5日', '6日', '7日', '8日', '9日', '10日', '11日', '12日', '13日', '14日', '15日'];
|
||||||
|
var data = [220, 182, 191, 234, 290, 330, 310, 123, 442, 321, 90, 149, 210, 122, 200];
|
||||||
|
|
||||||
|
|
||||||
|
const option = {
|
||||||
|
title: {
|
||||||
|
text: '',
|
||||||
|
subtext: ''
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
x: 40,
|
||||||
|
y: 40,
|
||||||
|
x2: 20,
|
||||||
|
y2: 20,
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis'
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
data: dataAxis,
|
||||||
|
axisLabel: {
|
||||||
|
/*inside: true,*/
|
||||||
|
interval: 0,
|
||||||
|
textStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 12
|
||||||
|
},
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: true,
|
||||||
|
symbol: ['none', 'arrow'],
|
||||||
|
symbolOffset: 12,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
z: 10
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value',
|
||||||
|
name: '单位:个',
|
||||||
|
axisLine: {
|
||||||
|
show: true,
|
||||||
|
symbol: ['none', 'arrow'],
|
||||||
|
symbolOffset: 12,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
textStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 12
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
dataZoom: [
|
||||||
|
{
|
||||||
|
type: 'inside'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: 'bar',
|
||||||
|
itemStyle: {
|
||||||
|
color: new echarts.graphic.LinearGradient(
|
||||||
|
0, 0, 0, 1,
|
||||||
|
[
|
||||||
|
{ offset: 0, color: '#0efdff' },
|
||||||
|
{ offset: 0.5, color: '#188df0' },
|
||||||
|
{ offset: 1, color: '#188df0' }
|
||||||
|
]
|
||||||
|
)
|
||||||
|
},
|
||||||
|
emphasis: {
|
||||||
|
itemStyle: {
|
||||||
|
color: new echarts.graphic.LinearGradient(
|
||||||
|
0, 0, 0, 1,
|
||||||
|
[
|
||||||
|
{ offset: 0, color: '#2378f7' },
|
||||||
|
{ offset: 0.7, color: '#2378f7' },
|
||||||
|
{ offset: 1, color: '#0efdff' }
|
||||||
|
]
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: data
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
Intance.setOption(option);
|
||||||
|
}
|
||||||
|
const biaoge_pai = ref()
|
||||||
|
const getEcharts2 = () => {
|
||||||
|
|
||||||
|
const Intance = echarts.init(biaoge_pai.value);
|
||||||
|
const option = {
|
||||||
|
title: {
|
||||||
|
text: '数据情况统计',
|
||||||
|
subtext: '',
|
||||||
|
left: 'right',
|
||||||
|
textStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{a} <br/>{b} : {c} ({d}%)'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
// orient: 'vertical',
|
||||||
|
// top: 'middle',
|
||||||
|
type: 'scroll',
|
||||||
|
orient: 'vertical',
|
||||||
|
right: 10,
|
||||||
|
top: 40,
|
||||||
|
bottom: 20,
|
||||||
|
left: 'right',
|
||||||
|
data: ['已审核', '已采样', '已送检', '已接收', '已报告'],
|
||||||
|
textStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 12
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
x: '-10%',
|
||||||
|
y: 40,
|
||||||
|
x2: 20,
|
||||||
|
y2: 20,
|
||||||
|
},
|
||||||
|
color: ['#09d0fb', '#f88cfb', '#95f8fe', '#f9f390', '#ecfeb7'],
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: 'pie',
|
||||||
|
radius: '65%',
|
||||||
|
center: ['50%', '50%'],
|
||||||
|
selectedMode: 'single',
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
value: 1548, name: '已报告',
|
||||||
|
|
||||||
|
},
|
||||||
|
{ value: 535, name: '已接收' },
|
||||||
|
{ value: 510, name: '已送检' },
|
||||||
|
{ value: 634, name: '已采样' },
|
||||||
|
{ value: 735, name: '已审核' }
|
||||||
|
],
|
||||||
|
emphasis: {
|
||||||
|
itemStyle: {
|
||||||
|
shadowBlur: 10,
|
||||||
|
shadowOffsetX: 0,
|
||||||
|
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
Intance.setOption(option);
|
||||||
|
}
|
||||||
|
|
||||||
|
const chartmain_zhe = ref()
|
||||||
|
const getEcharts3 = () => {
|
||||||
|
|
||||||
|
const Intance = echarts.init(chartmain_zhe.value);
|
||||||
|
|
||||||
|
const option = {
|
||||||
|
title: {
|
||||||
|
text: ''
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
textStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 12,
|
||||||
|
},
|
||||||
|
right: '10%',
|
||||||
|
data: ['折线一', '折线二']
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
x: 40,
|
||||||
|
y: 40,
|
||||||
|
x2: 20,
|
||||||
|
y2: 20,
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
feature: {
|
||||||
|
//saveAsImage: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
boundaryGap: false,
|
||||||
|
axisLabel: {
|
||||||
|
/*inside: true,*/
|
||||||
|
interval: 0,
|
||||||
|
textStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 12
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: true,
|
||||||
|
symbol: ['none', 'arrow'],
|
||||||
|
symbolOffset: 12,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: ['1日', '2日', '3日', '4日', '5日', '6日', '7日', '8日', '9日', '10日', '11日', '12日', '13日', '14日', '15日']
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value',
|
||||||
|
|
||||||
|
axisLine: {
|
||||||
|
show: true,
|
||||||
|
symbol: ['none', 'arrow'],
|
||||||
|
symbolOffset: 12,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
textStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 12
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '折线一',
|
||||||
|
type: 'line',
|
||||||
|
stack: '总量',
|
||||||
|
data: [280, 102, 191, 134, 390, 230, 210],
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: "#0efdff",//折线点的颜色
|
||||||
|
lineStyle: {
|
||||||
|
color: "#0efdff",//折线的颜色
|
||||||
|
width: 2,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '折线二',
|
||||||
|
type: 'line',
|
||||||
|
stack: '总量',
|
||||||
|
data: [100, 132, 131, 234, 290, 330, 110]
|
||||||
|
},
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Intance.setOption(option);
|
||||||
|
}
|
||||||
|
|
||||||
|
const sxEhart = ref()
|
||||||
|
const getEcharts4 = () => {
|
||||||
|
|
||||||
|
const Intance = echarts.init(sxEhart.value);
|
||||||
|
const option = {
|
||||||
|
title: {
|
||||||
|
text: '数据情况统计',
|
||||||
|
subtext: '',
|
||||||
|
left: 'right',
|
||||||
|
textStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{a} <br/>{b} : {c} ({d}%)'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
// orient: 'vertical',
|
||||||
|
// top: 'middle',
|
||||||
|
type: 'scroll',
|
||||||
|
orient: 'vertical',
|
||||||
|
right: 10,
|
||||||
|
top: 40,
|
||||||
|
bottom: 20,
|
||||||
|
left: 'right',
|
||||||
|
data: ['全血', '血液', '血浆', '尿液', '其他',],
|
||||||
|
textStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 12
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
x: '-10%',
|
||||||
|
y: 40,
|
||||||
|
x2: 20,
|
||||||
|
y2: 20,
|
||||||
|
},
|
||||||
|
color: ['#09d0fb', '#f88cfb', '#95f8fe', '#f9f390', '#ecfeb7'],
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: 'pie',
|
||||||
|
radius: '65%',
|
||||||
|
center: ['50%', '50%'],
|
||||||
|
selectedMode: 'single',
|
||||||
|
data: [
|
||||||
|
{ value: 156, name: '尿液' },
|
||||||
|
{ value: 256, name: '血浆' },
|
||||||
|
{ value: 335, name: '血液' },
|
||||||
|
{ value: 235, name: '全血' },
|
||||||
|
{ value: 877, name: '其他' }
|
||||||
|
],
|
||||||
|
emphasis: {
|
||||||
|
itemStyle: {
|
||||||
|
shadowBlur: 10,
|
||||||
|
shadowOffsetX: 0,
|
||||||
|
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Intance.setOption(option);
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getEcharts1()
|
||||||
|
getEcharts2()
|
||||||
|
getEcharts3()
|
||||||
|
getEcharts4()
|
||||||
|
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
@import './css/icon.css';
|
||||||
|
@import './css/index.css';
|
||||||
|
@import './css/public.css';
|
||||||
|
</style>
|
||||||
Loading…
x
Reference in New Issue
Block a user