条码自动签收

This commit is contained in:
wyuu 2026-01-30 16:26:58 +08:00
parent 8d6f27e377
commit 459342d3e3
9 changed files with 341 additions and 80 deletions

View File

@ -115,4 +115,12 @@ export function printsetup(query?: Object) {
params: query,
});
}
// 取消采样
export function cancelExecSQD(query?: Object) {
return request({
url: '/zyreq/cancelExecSQD',
method: 'post',
data: query,
});
}

View File

@ -455,6 +455,14 @@ export function querybarcode(query?: Object) {
params: query
})
}
// 手动保存签收条码
export function saveBarcode(query?: Object) {
return request({
url: '/liswork/savebarcode',
method: 'post',
data: query
})
}
// 拒收条码
export function refusedbarcode(query?: Object) {
return request({

View File

@ -368,6 +368,10 @@ const toggleRowSelection = (row: Object, selected: boolean) => {
tableRef.value?.toggleRowSelection(row, selected);
};
const getSelectionRows = () => {
return tableRef.value?.getSelectionRows() || [];
};
const toggleAllSelection = () => {
tableRef.value?.toggleAllSelection();
};
@ -400,6 +404,7 @@ const sort = (prop: string, order: any) => {
defineExpose({
clearSelection,
toggleRowSelection,
getSelectionRows,
toggleAllSelection,
setCurrentRow,
setScrollTo,

View File

@ -60,7 +60,7 @@
<el-button type="info" :size="aotuSize" plain icon="Upload" @click="openBlock('采样登记')">采样登记</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="info" :size="aotuSize" plain @click="closeHadnle">取消登记</el-button>
<el-button type="info" :size="aotuSize" plain @click="closeHadnle">取消采样</el-button>
</el-col>
<!-- <el-col :span="1.5">
<el-button type="warning" :size="aotuSize" plain @click="openBlock('送检登记')">送检登记</el-button>
@ -74,7 +74,7 @@
<el-col :span="1.5">
<el-button type="warning" :size="aotuSize" plain @click="sendSampleHandle">清单打印</el-button>
</el-col>
<el-col :span="4">
<el-col :span="1.5">
<el-button type="warning" :size="aotuSize" plain @click="changePrinter">打印机设置</el-button>
</el-col>
</el-row>
@ -137,6 +137,7 @@
<!-- 采样登记 -->
<el-dialog v-model="dialogVisible" :title="title" draggable :close-on-click-modal="false" width="70vw"
@close="closeDialog">
<el-row :gutter="10" class="mb8">
<el-col :span="4">
<el-input ref="sqhRef" v-model="sqhText" clearable placeholder="条形码" @keyup.enter="sqdQuery"
@ -147,11 +148,14 @@
</el-col>
</el-row>
<CustomTable :data="cyTableData" :columns="cyColumns" :config="cyTableConfig">
<template #zt="{ row }">
{{ formatDict(row.zt, 'ST') }}
</template>
</CustomTable>
<div class="text_ts">合计:{{ cyTableData.length }} 条</div>
</el-dialog>
<el-dialog v-model="previewShow" title="预览" width="90vw" :close-on-click-modal="false">
<iFrame v-if="pdfUrl" :src="pdfUrl" />
@ -170,7 +174,7 @@ import { usePrintStore } from '@/store/modules/printStore'
import { checkPrintService, downloadPrintSetup } from '@/utils/printHelper'
// @ts-ignore
import { getUserName } from '@/api/system/user.js'
import { fetchCodeList, addObj, fetchCodeDetail, fetchCodeExec, fetchCodeReqmain, printSendSample, printcheck, printsetup } from '@/api/checkCode/index'
import { fetchCodeList, addObj, fetchCodeDetail, fetchCodeExec, fetchCodeReqmain, printSendSample, printcheck, printsetup, cancelExecSQD } from '@/api/checkCode/index'
const aotuSize = classCom.useAutoSize();
//@ts-ignore
import useUserStore from '@/store/modules/user'
@ -187,6 +191,7 @@ const printStore = usePrintStore();
const printerList = computed(() => printStore.printerList);
//@ts-ignore
import { getDicts } from '@/api/system/dict/data'
import { sum } from 'lodash';
//@ts-ignore
const { proxy } = getCurrentInstance();
const { lis_reqcx_type } = proxy.useDict("lis_reqcx_type"); //参数类别
@ -501,6 +506,31 @@ const openBlock = (value: string) => {
const closeHadnle = () => {
const selections = tableRef.value.allSelection()
if (selections.length <= 0) return ElMessage.warning('请选择数据!')
ElMessageBox.confirm(`确定取消选中的数据吗?`, "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
beforeClose: async (action, instance, done) => {
if (action === "confirm") {
const requests = selections.map((item: any) => {
return {
sqh: item.sqh,
status: 12,
userid: queryParams.userid,
yljg: queryParams.yljg
}
});
cancelExecSQD(requests).then((res: any) => {
if (res.code == 0) {
ElMessage.success(res.msg);
done();
getList()
}
})
} else {
done();
}
},
}).catch(() => { });
}
@ -806,6 +836,13 @@ const printPdf = () => {
height: 75vh;
}
.text_ts {
font-family: SourceHanSansCN, SourceHanSansCN;
font-size: 16px;
color: #409eff;
font-weight: 600;
}
.tips {
font-family: SourceHanSansCN, SourceHanSansCN;
font-size: 16px;

View File

@ -14,7 +14,7 @@
<el-button type="primary" @click="sqdQuery" plain>读取</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" plain>保存</el-button>
<el-button type="primary" plain :disabled="RCV_AUTOSAVE == '1'" @click="saveHandle">保存</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" @click="setHandle" plain>设置</el-button>
@ -25,8 +25,8 @@
</el-row>
<div class="table-main">
<CustomTable :data="tableData" :columns="columns" :config="tableConfig" @selection-change="handleSelectionChange"
:enable-column-drag="true" @column-drag-end="handleColumnDragEnd">
<CustomTable ref="tableRef" :data="tableData" :columns="columns" :config="tableConfig"
@selection-change="handleSelectionChange" :enable-column-drag="true" @column-drag-end="handleColumnDragEnd">
<template #jzbz="{ row }">
<div style="color: #f00;" v-if="row.jzbz == '1'">急</div>
<div style="color: transparent;" v-else>无</div>
@ -41,7 +41,10 @@
{{ formatDict(row.brxb, 'SX') }}
</template>
<template #sqys="{ row }">
{{ formatYs(row.sqys) }}
{{ formatDict(row.sqys, 'SRD') }}
</template>
<template #cyr="{ row }">
{{ formatDict(row.cyr, 'SRD') }}
</template>
</CustomTable>
</div>
@ -68,51 +71,71 @@
</span>
</template>
</el-dialog>
<CheckUser ref="checkUser" @onConfirm="handleCheckUserConfirm" />
</div>
</template>
<script setup>
import { querybarcode, autosavebarcode } from '@/api/liswork/work/LisWork';
import { querybarcode, autosavebarcode, saveBarcode } from '@/api/liswork/work/LisWork';
import { paramList, updateParam } from '@/api/liswork/xtwh/ComOpt'
import { formatDict, getDictData } from '@/hooks'
import { ElMessage } from 'element-plus'
import { listUser } from '@/api/system/user.js'
import CheckUser from "@/views/liswork/work/components/CheckUser.vue";
import { checkuser } from "@/api/liswork/work/LisWork";
import { classCom } from '@/utils/classCom';
const sqhRef = useTemplateRef('sqhRef');
const sqhText = ref('');
const checkUser = useTemplateRef('checkUser');
const tableRef = useTemplateRef('tableRef');
const sqhText = ref('25082007185');
const RCV_AUTOSAVE = ref('0') // 是否自动保存
const dialogVisible = ref(false);
const tableData = ref([]);
const columns = ref([
{ type: 'selection', width: 30, visible: true, align: 'center' },
{ label: '急诊', prop: 'jzbz', width: 50, visible: true, slot: 'jzbz' },
{ label: '类别', prop: 'bgddh', visible: true, },
{ label: '急诊', prop: 'jzbz', width: 50, visible: true, slot: 'jzbz', align: 'center' },
{ label: '类别', prop: 'bgdjc', visible: true, align: 'center' },
{ label: '标本', prop: 'yblx', visible: true, width: 60, align: 'center' },
{ label: '申请科室', prop: 'ksdh', visible: true, slot: 'ksdh' },
{ label: '床号', prop: 'ch', visible: true, width: 50, align: 'center' },
{ label: '病历号', prop: 'brdh', visible: true, },
{ label: '病历号', prop: 'brdh', visible: true, },
{ label: '病历号', prop: 'brdh', visible: true, align: 'center' },
{ label: '姓名', prop: 'brxm', visible: true, width: 40, align: 'center' },
{ label: '性别', prop: 'brxb', visible: true, slot: 'brxb', width: 40, align: 'center' },
{ label: '申请号/条码', prop: 'sqh', visible: true, width: 100, align: 'center' },
{ label: '申请项目', prop: 'jymd', visible: true, width: 200, align: 'center' },
{ label: '签收状态', prop: 'zt', visible: true, slot: 'zt' },
{ label: '拒签理由', prop: 'bz3', visible: true, },
{ label: '申请医生', prop: 'sqys', visible: true, slot: 'sqys' },
{ label: '采样人', prop: 'cyr', visible: true, },
{ label: '标本送出人', prop: 'bbsjrname', visible: true, },
{ label: '申请时间', prop: 'sqsj', visible: true, },
{ label: '采样时间', prop: 'cyblsj', visible: true, },
{ label: '标本送出时间', prop: 'sjsj', visible: true, width: 100, },
{ label: '诊断', prop: 'zd', visible: true, },
{ label: '签收状态', prop: 'zt', visible: true, slot: 'zt', align: 'center' },
{ label: '拒签理由', prop: 'bz3', visible: true, align: 'center' },
{ label: '申请医生', prop: 'sqys', visible: true, slot: 'sqys', align: 'center' },
{ label: '采样人', prop: 'cyr', visible: true, slot: 'cyr', align: 'center' },
{ label: '标本送出人', prop: 'bbsjr', visible: true, align: 'center' },
{ label: '申请时间', prop: 'sqsj', visible: true, align: 'center', width: 140, },
{ label: '采样时间', prop: 'cysj', visible: true, align: 'center', width: 140, },
{ label: '标本送出时间', prop: 'bbsjsj', visible: true, width: 140, align: 'center' },
{ label: '诊断', prop: 'zd', visible: true, align: 'center', width: 200, },
])
// 单元格样式
const cellStyleHd = ({ row, column, rowIndex, columnIndex }) => {
if (column.label == "类别") {
const bgColor = classCom.decimalToHexColor(row.bkcolor);
const textColor = classCom.getContrastTextColor(bgColor);
return {
backgroundColor: `${bgColor} !important`,
color: textColor,
};
}
};
const tableConfig = {
border: true,
highlightCurrentRow: true,
height: '100%',
key: 'sqh',
cellStyle: cellStyleHd,
};
const handleColumnDragEnd = (data) => {
console.log('data==>', data);
columns.value = data.columns;
}
@ -121,8 +144,15 @@ const sqdQuery = () => {
if (index !== -1) return ElMessage.warning('该申请单数据已存在!')
querybarcode({ sqh: sqhText.value }).then((res) => {
if (res.code == 0 && res.data) {
tableData.value = tableData.value.concat(res.data)
if (res.code == 0 && res.data.sqh) {
tableData.value.push(res.data)
console.log('RCV_AUTOSAVE==>', RCV_AUTOSAVE.value);
if (RCV_AUTOSAVE.value == '1') {
autosavebarcode({ sqh: res.data.sqh })
}
nextTick(() => {
tableRef.value.toggleRowSelection(res.data, true);
})
}
}).finally(() => {
sqhText.value = ''
@ -136,6 +166,27 @@ const handleSelectionChange = (selection) => {
console.log("🚀 ~ handleSelectionChange ~ selection:", selection)
}
const saveHandle = () => {
const arr = tableRef.value.getSelectionRows()
if (!arr.length) return ElMessage.warning('请选择要保存的申请单!')
checkUser.value.open()
}
const handleCheckUserConfirm = (info) => {
checkuser({ yhdh: info.yhdh, mm: info.mm }).then(response => {
if (response.code == 0) {
const arr = tableRef.value.getSelectionRows()
const sqhlist = arr.map(item => item.sqh)
saveBarcode({ sqhlist, yhdh: info.yhdh }).then((res) => {
ElMessage.success(res.msg)
if (res.code == 0) {
tableRef.value.clearSelection()
}
})
}
})
}
const setList = ref([])
const setHandle = () => {
dialogVisible.value = true
@ -151,32 +202,28 @@ const subHandle = () => {
updateParam(arr).then((res) => {
if (res.code == 0) {
ElMessage.success('设置保存成功!')
getSetList()
dialogVisible.value = false
}
})
}
const formatYs = (v) => {
return userList.value.find(item => item.userId == v)?.nickName || v
}
const userList = ref([])
onMounted(() => {
getDictData('ST', 'SX', 'DP')
const data = { status: 0, del_flag: 0, pageSize: 1000, pageNum: 1 }
listUser(data).then((res) => {
userList.value = res.rows;
});
const getSetList = () => {
paramList({ yq: '_BAR_', optiontype: 'bar' }).then((res) => {
res.data.forEach(e => {
if (e.configOptiontype == 1) {
e.remark = JSON.parse(e.remark)
}
});
RCV_AUTOSAVE.value = res.data.find(item => item.configName == '签收自动保存')?.configDefvalue || '0'
setList.value = res.data
})
}
onMounted(() => {
getDictData('ST', 'SX', 'DP', 'SRD')
getSetList()
})
</script>

View File

@ -22,8 +22,8 @@
</el-row>
<div class="table-main">
<CustomTable :data="tableData" :columns="columns" :config="tableConfig" @selection-change="handleSelectionChange"
:enable-column-drag="true" @column-drag-end="handleColumnDragEnd">
<CustomTable :data="tableData" ref="tableRef" :columns="columns" :config="tableConfig"
@selection-change="handleSelectionChange" :enable-column-drag="true" @column-drag-end="handleColumnDragEnd">
<template #mode="{ row }">
<SelectTable v-model:data="row.mode" :tableData="regModeList" class="full-width-input" />
</template>
@ -47,13 +47,20 @@
{{ formatDict(row.brxb, 'SX') }}
</template>
<template #sqys="{ row }">
{{ formatYs(row.sqys) }}
{{ formatDict(row.sqys, 'SRD') }}
</template>
<template #cyr="{ row }">
{{ formatDict(row.cyr, 'SRD') }}
</template>
</CustomTable>
</div>
<!-- 校验用户 -->
<CheckUser ref="checkUserRef" @onConfirm="handleCheckUserConfirm" />
<!-- 指定护士弹窗 -->
<SelectUser ref="selectUserRef" @onConfirm="handleSelectUserConfirm" />
</div>
</template>
@ -63,43 +70,63 @@ import { formatDict, getDictData } from '@/hooks'
import { ElMessage } from 'element-plus'
import { listUser } from '@/api/system/user.js'
import CheckUser from "@/views/liswork/work/components/CheckUser.vue";
import SelectUser from "./selectUser.vue";
import { checkuser } from "@/api/liswork/work/LisWork";
import { classCom } from '@/utils/classCom';
const { proxy } = getCurrentInstance();
const { reg_mode } = proxy.useDict("reg_mode"); //参数类别
const regModeList = reg_mode
const sqhRef = useTemplateRef('sqhRef');
const checkUserRef = useTemplateRef('checkUserRef');
const tableRef = useTemplateRef('tableRef');
const selectUserRef = useTemplateRef('selectUserRef');
const sqhText = ref('');
const tableData = ref([]);
const columns = ref([
{ type: 'selection', width: 30, visible: true, align: 'center' },
{ label: '登记模式', prop: 'mode', width: 120, visible: true, slot: 'mode' },
{ label: '不合格类别', prop: 'refuseText', width: 120, visible: true, slot: 'refuseText' },
{ label: '补充描述', prop: 'description', width: 120, visible: true, slot: 'description' },
{ label: '急诊', prop: 'jzbz', width: 50, visible: true, slot: 'jzbz' },
{ label: '类别', prop: 'bgdjc', visible: true, },
{ label: '登记模式', prop: 'mode', width: 120, visible: true, slot: 'mode', align: 'center' },
{ label: '不合格类别', prop: 'refuseText', width: 120, visible: true, slot: 'refuseText', align: 'center' },
{ label: '补充描述', prop: 'description', width: 120, visible: true, slot: 'description', align: 'center' },
{ label: '急诊', prop: 'jzbz', width: 50, align: 'center', visible: true, slot: 'jzbz' },
{ label: '类别', prop: 'bgdjc', visible: true, align: 'center' },
{ label: '标本', prop: 'yblx', visible: true, width: 60, align: 'center' },
{ label: '申请科室', prop: 'ksdh', visible: true, slot: 'ksdh' },
{ label: '床号', prop: 'ch', visible: true, width: 50, align: 'center' },
{ label: '病历号', prop: 'brdh', visible: true, },
{ label: '病历号', prop: 'brdh', visible: true, },
{ label: '病历号', prop: 'brdh', visible: true, align: 'center' },
{ label: '姓名', prop: 'brxm', visible: true, width: 40, align: 'center' },
{ label: '性别', prop: 'brxb', visible: true, slot: 'brxb', width: 40, align: 'center' },
{ label: '申请号/条码', prop: 'sqh', visible: true, width: 100, align: 'center' },
{ label: '申请项目', prop: 'cp_item', visible: true, width: 200, align: 'center' },
{ label: '签收状态', prop: 'zt', visible: true, slot: 'zt' },
{ label: '申请医生', prop: 'sqys', visible: true, slot: 'sqys' },
{ label: '采样人', prop: 'cyr', visible: true, },
{ label: '标本送出人', prop: 'bbsjrname', visible: true, },
{ label: '申请时间', prop: 'sqsj', visible: true, },
{ label: '采样时间', prop: 'cyblsj', visible: true, },
{ label: '标本送出时间', prop: 'sjsj', visible: true, width: 100, },
{ label: '诊断', prop: 'zd', visible: true, },
{ label: '申请项目', prop: 'item', visible: true, width: 200, align: 'center' },
{ label: '签收状态', prop: 'zt', visible: true, slot: 'zt', align: 'center' },
{ label: '申请医生', prop: 'sqys', visible: true, slot: 'sqys', align: 'center' },
{ label: '采样人', prop: 'cyr', visible: true, slot: 'cyr', align: 'center' },
{ label: '标本送出人', prop: 'bbsjr', visible: true, align: 'center' },
{ label: '申请时间', prop: 'sqsj', visible: true, align: 'center', width: 140, },
{ label: '采样时间', prop: 'cysj', visible: true, align: 'center', width: 140, },
{ label: '标本送出时间', prop: 'bbsjsj', visible: true, width: 140, align: 'center' },
{ label: '诊断', prop: 'zd', visible: true, align: 'center', width: 200, },
])
// 单元格样式
const cellStyleHd = ({ row, column, rowIndex, columnIndex }) => {
if (column.label == "类别") {
const bgColor = classCom.decimalToHexColor(row.bkcolor);
const textColor = classCom.getContrastTextColor(bgColor);
return {
backgroundColor: `${bgColor} !important`,
color: textColor,
};
}
};
const tableConfig = {
border: true,
highlightCurrentRow: true,
height: '100%',
key: 'sqh',
cellStyle: cellStyleHd,
};
const handleColumnDragEnd = (data) => {
@ -111,8 +138,11 @@ const sqdQuery = () => {
if (index !== -1) return ElMessage.warning('该申请单数据已存在!')
refusedbarcode({ sqh: sqhText.value }).then((res) => {
if (res.code == 0 && res.data) {
tableData.value = tableData.value.concat(res.data)
if (res.code == 0 && res.data && res.data.length) {
tableData.value.push(res.data[0])
nextTick(() => {
tableRef.value.toggleRowSelection(res.data[0], true);
})
}
}).finally(() => {
sqhText.value = ''
@ -127,33 +157,41 @@ const handleSelectionChange = (selection) => {
}
const saveData = () => {
const flag = tableData.value.every(item => item.mode && item.refuseText && item.description)
const arr = tableRef.value.getSelectionRows()
if (!arr.length) return ElMessage.warning('请选择要保存的申请单!')
const flag = arr.every(item => item.mode && item.refuseText && item.description)
if (!flag) return ElMessage.warning('请填写完整拒收信息!')
checkUserRef.value.open()
}
// 校验用户
const handleCheckUserConfirm = (info) => {
tableData.value = tableData.value.map(item => ({
...item,
tzr: info.yhdh,
}))
refusedSaveData(tableData.value).then((res) => {
ElMessage.success(res.msg)
checkuser({ yhdh: info.yhdh, mm: info.mm }).then(response => {
if (response.code == 0) {
selectUserRef.value.open()
}
})
}
const formatYs = (v) => {
return userList.value.find(item => item.userId == v)?.nickName || v
// 指定护士
const handleSelectUserConfirm = (info) => {
const arr = tableRef.value.getSelectionRows()
if (!arr.length) return ElMessage.warning('请选择要保存的申请单!')
arr = arr.map(item => ({
...item,
tzr: info.yhdh,
}))
refusedSaveData(arr).then((res) => {
ElMessage.success(res.msg)
if (res.code == 0) {
tableRef.value.clearSelection()
}
})
}
const userList = ref([])
onMounted(() => {
getDictData('ST', 'SX', 'DP')
const data = { status: 0, del_flag: 0, pageSize: 1000, pageNum: 1 }
listUser(data).then((res) => {
userList.value = res.rows;
});
onMounted(() => {
getDictData('ST', 'SX', 'DP', 'SRD')
})
</script>

View File

@ -0,0 +1,120 @@
<template>
<div>
<el-dialog v-model="checkShow" :title="title" width="500" :close-on-click-modal="false" :draggable="true"
@close="close">
<el-form ref="ruleFormRef" style="max-width: 600px" :model="ruleForm" :rules="rules" label-width="auto">
<el-form-item label="接听人工号:" prop="yhdh">
<el-input ref="yhdhRef" v-model.trim="ruleForm.yhdh" placeholder="请输入用户工号" maxlength="20"
@keyup.enter="handleCheckName" />
</el-form-item>
<el-form-item label="姓名:" prop="name">
<el-input v-model.trim="ruleForm.name" placeholder="请输入密码" @keyup.enter="handleCheckyhdh" />
</el-form-item>
<el-form-item>
<div style="text-align: center; width: 100%;">
<el-button type="primary" @click="handleConfirm()"> 确认 </el-button>
<el-button @click="handleCancel">取消</el-button>
</div>
</el-form-item>
</el-form>
</el-dialog>
</div>
</template>
<script setup lang="ts">
import { formatDict, getDictData, dictData } from '@/hooks'
// 组件属性
const props = defineProps({
// 弹窗标题(由外部参数控制)
title: {
type: String,
default: '请填写需要重新采集标本通知的护士工号'
},
// 验证规则(可选,由外部传入)
validationRules: {
type: Object,
default: () => ({
// 工号最小长度
userIdMinLength: 3,
// 密码最小长度
passwordMinLength: 6
})
}
});
// 组件事件
const emit = defineEmits([
'onConfirm', // 验证成功回调
'onCancel'
]);
// 表单数据
const ruleForm = ref({
yhdh: '',
name: '',
});
const rules = ref(
{
yhdh: [{ required: true, message: "请输入用户工号", trigger: "blur" },],
name: [{ required: true, message: "请输入用户名称", trigger: "blur" },]
}
);
const yhdhRef = ref();
const open = () => {
checkShow.value = true;
flag.value = true;
nextTick(() => {
setTimeout(() => {
yhdhRef.value.focus();
}, 100);
});
};
const checkShow = ref(false);
const ruleFormRef = ref();
const flag = ref(true);
const handleCheckName = () => {
ruleForm.value.name = dictData.value['SRD']?.find(item => item.value == ruleForm.value.yhdh)?.label || '';
};
const handleCheckyhdh = () => {
ruleForm.value.yhdh = dictData.value['SRD']?.find(item => item.label == ruleForm.value.name)?.value || '';
};
// 处理确认验证
const handleConfirm = () => {
ruleFormRef.value.validate((valid: boolean) => {
if (valid) {
emit('onConfirm', { yhdh: ruleForm.value.yhdh, name: ruleForm.value.name });
flag.value = false;
checkShow.value = false;
} else {
return false;
}
});
};
const handleCancel = () => {
checkShow.value = false;
ruleForm.value.yhdh = '';
ruleForm.value.name = '';
ruleFormRef.value.resetFields();
emit('onCancel');
};
const close = () => {
ruleForm.value.yhdh = '';
ruleForm.value.name = '';
ruleFormRef.value.resetFields();
if (flag.value) {
emit('onCancel');
}
};
defineExpose({
open,
});
</script>
<style scoped lang="scss"></style>

View File

@ -23,8 +23,6 @@
</template>
<script setup lang="ts">
import { set } from '@vueuse/core';
import { defineProps, defineEmits, ref, watch } from 'vue';
// 组件属性
const props = defineProps({

View File

@ -130,7 +130,7 @@ export default defineConfig(({
plugins: [
VITE_APP_ENV === 'production' && visualizer({
filename: './node_modules/.cache/visualizer/stats.html',
open: true,
open: false,
gzipSize: true,
brotliSize: true
})