<!-- 标准装置台账信息详情 配置核查项 第2套:直流稳压电源检定装置 — --> <script name="StandardBookEquipmentConfig" lang="ts" setup> import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' import type { IList } from './second-interface' import TemplateTable from './templateTable.vue' import type { dictType } from '@/global' import { useCheckList } from '@/commonMethods/useCheckList' import type { TableColumn } from '@/components/NormalTable/table_interface' import { config, getCheckItemDetail } from '@/api/equipment/standard/book' import { calc } from '@/utils/useCalc' import { getDictByCode } from '@/api/system/dict' const textMap: { [key: string]: string } = { edit: '编辑', detail: '详情', }// 页面类型字典 const form = ref({ // 表单 equipmentNo: '', // 统一编号 equipmentName: '', // 设备名称 model: '', // 型号规格 manufactureNo: '', // 出厂编号 measureRange: '', // 测量范围 uncertainty: '', // 不确定度或允许误差极限或准确度等级 itemCategoryName: '', // 核查项分类名称 itemCategoryId: '', // 核查项分类id remark: '', // 核查项备注 belongStandardEquipment: '', // 检校标准装置 belongStandardEquipmentName: '', // 检校标准装置名称 }) const pageType = ref('detail') // 页面类型: add, edit, detail const infoId = ref('') // id const $router = useRouter() // 路由实例 const loading = ref(false) // loading const equipmentId = ref('') // 设备id // -----------------------------------路由参数------------------------------------------------------ // 从路由中获取页面类型参数 const $route = useRoute() if ($route.params && $route.params.type) { pageType.value = $route.params.type as string if ($route.params.id) { infoId.value = $route.params.id as string } console.log('pageType.value', pageType.value) } // -------------------------------------------核查项----------------------------------------------- const listDirectVoltage = ref<IList[]>([]) // 直流电压 const listEffect = ref<IList[]>([]) // 电源效应和负载效应 const listDCIndirect = ref<IList[]>([]) // 直流电流(间接测量) const listDCDirect = ref<IList[]>([]) // 直流电流(直接测量) const listRippleVoltage = ref<IList[]>([]) // 纹波电压 const checkoutDirectVoltageList = ref<IList[]>([]) // 直流电压多选 const checkoutEffectList = ref<IList[]>([]) // 电源效应和负载效应多选 const checkoutDCIndirectList = ref<IList[]>([]) // 直流电流(间接测量)多选 const checkoutDCDirectList = ref<IList[]>([]) // 直流电流(直接测量)多选 const checkoutRippleVoltageList = ref<IList[]>([]) // 纹波电压多选 const directVoltage = ref(true) // 是否显示直流电压 const effect = ref(true) // 是否显示电源效应和负载效应 const DCIndirect = ref(true) // 是否显示 直流电流(间接测量) const DCDirect = ref(true) // 是否显示 直流电流(直接测量) const rippleVoltage = ref(true) // 是否显示 纹波电压 const columns_direct_voltage_DC_direct = ref<TableColumn[]>([ // 直流电压表头、直流电流(直接测量) { text: '核查项目', value: 'params', align: 'center', required: true }, { text: '核查点', value: 'checkPoint', align: 'center', required: true }, { text: '单位', value: 'unit', align: 'center', required: true }, { text: '分辨力', value: 'resolution', align: 'center', required: true }, { text: '循环次数', value: 'cycleNumber', align: 'center', required: true }, { text: '测量标准相对扩展不确定度Urel', value: 'urel', align: 'center', required: true }, { text: '核查类型', value: 'checkType', align: 'center', required: true }, ]) const columns_effect = ref<TableColumn[]>([ // 电源效应和负载效应 { text: '核查项目', value: 'params', align: 'center', required: true }, { text: '核查点', value: 'checkPoint', align: 'center', required: true }, { text: '单位', value: 'unit', align: 'center', required: true }, { text: '是否为基准点', value: 'unit', align: 'center', required: true }, { text: '分辨力', value: 'resolution', align: 'center', required: true }, { text: '循环次数', value: 'cycleNumber', align: 'center', required: true }, { text: '测量标准相对扩展不确定度Urel', value: 'urel', align: 'center', required: true }, { text: '核查类型', value: 'checkType', align: 'center', required: true }, ]) const columns_DC_indirect = ref<TableColumn[]>([ // 直流电流(间接测量) { text: '核查项目', value: 'params', align: 'center', required: true }, { text: '核查点', value: 'checkPoint', align: 'center', required: true }, { text: '单位', value: 'unit', align: 'center', required: true }, { text: '电阻值', value: 'unit', align: 'center', required: true }, { text: '分辨力', value: 'resolution', align: 'center', required: true }, { text: '循环次数', value: 'cycleNumber', align: 'center', required: true }, { text: '测量标准相对扩展不确定度Urel', value: 'urel', align: 'center', required: true }, { text: '核查类型', value: 'checkType', align: 'center', required: true }, ]) const columns_ripple_voltage = ref<TableColumn[]>([ // 纹波电压 { text: '核查项目', value: 'params', align: 'center', required: true }, { text: '核查点', value: 'checkPoint', align: 'center', required: true }, { text: '单位', value: 'unit', align: 'center', required: true }, { text: '频率', value: 'unit', align: 'center', required: true }, { text: '分辨力', value: 'resolution', align: 'center', required: true }, { text: '循环次数', value: 'cycleNumber', align: 'center', required: true }, { text: '测量标准相对扩展不确定度Urel', value: 'urel', align: 'center', required: true }, { text: '核查类型', value: 'checkType', align: 'center', required: true }, ]) // 直流电压多选 const handleSelectionDirectVoltageChange = (e: any) => { checkoutDirectVoltageList.value = e } // 电源效应和负载效应多选 const handleSelectionEffectChange = (e: any) => { checkoutEffectList.value = e } // 直流电流(间接测量) const handleSelectionDCIndirectChange = (e: any) => { checkoutDCIndirectList.value = e } // 直流电流(直接测量) const handleSelectionDCDirectChange = (e: any) => { checkoutDCDirectList.value = e } // 纹波电压 const handleSelectionRippleVoltageChange = (e: any) => { checkoutRippleVoltageList.value = e } // 校验表格(点击保存的时候、增加行用) const checkList = (list: any, title: string) => { // return useCheckList(list, columns.value, title) } /** * 增加行公共方法 * @param list 要操作的数组 * @param title 操作的表格 */ const addRow = (list: IList[], title: string) => { // if (checkList(list, `${title}表格`)) { // if (list.length) { // 增加行时默认上一行数据 // list.push({ // id: '', // checkPoint: list[list.length - 1].checkPoint, // 核查点(直接存字典value) // checkType: list[list.length - 1].checkType, // 核查类型 // cycleNumber: list[list.length - 1].cycleNumber, // 循环次数 // equipmentId: list[list.length - 1].equipmentId, // 配套设备id // itemCategoryId: list[list.length - 1].itemCategoryId, // 核查项分类id(能够确定是哪个标准装置) // params: list[list.length - 1].params, // 核查项目(直接存字典value) // remark: list[list.length - 1].remark, // 核查项备注(每个数据存储的核查项备注相同,前端取列表中一个即可) // resolution: list[list.length - 1].resolution, // 分辨力 // testType: list[list.length - 1].testType, // 核查点类型(直接存字典value) // unit: list[list.length - 1].unit, // 单位(直接存字典value) // urel: list[list.length - 1].urel, // 测量标准相对扩展不确定度urel // }) // } // else { // list.push({ // checkPoint: '', // 核查点 // checkType: '', // 核查类型(直接存字典value,多个逗号分隔) // cycleNumber: 6, // 循环次数 // equipmentId: infoId.value, // 配套设备id // itemCategoryId: form.value.itemCategoryId, // 核查项分类id(能够确定是哪个标准装置) // params: '', // 核查项目(直接存字典value) // remark: '', // 核查项备注 // resolution: 0.0001, // 分辨力 // testType: title, // 核查点类型(直接存字典value) // unit: '', // 单位(直接存字典value) // urel: 0, // 测量标准相对扩展不确定度urel // }) // } // } } /** * 删除行公共方法 * @param checkoutList 选中的数组 * @param list 操作的数组 */ const delRow = (checkoutList: IList[], list: IList[]) => { if (!checkoutList.length) { ElMessage.warning('请选中要删除的行') } else { list = list.filter((item: any) => { return !checkoutList.includes(item) }) } } // ---------------------------------------按钮----------------------------------------------------- // 点击关闭 const close = () => { $router.back() } // 清空配置 const clear = () => { ElMessageBox.confirm( '确认清空配置项吗?', '提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning', }, ) .then(() => { listDirectVoltage.value = []// 直流电压 listEffect.value = []// 电源效应和负载效应 listDCIndirect.value = []// 直流电流(间接测量) listDCDirect.value = []// 直流电流(直接测量) listRippleVoltage.value = []// 纹波电压 }) } // 点击保存 const save = () => { // if (!list.value.length) { ElMessage.warning('核查项不能为空'); return false } // if (!checkList(list.value, '核查项表格')) { return false } // const params = { // itemCategoryId: form.value.itemCategoryId, // 核查项分类id // checkItemDataPistonGaugeList: list.value, // } // const loading = ElLoading.service({ // lock: true, // text: '加载中', // background: 'rgba(255, 255, 255, 0.6)', // }) // config(params).then((res) => { // ElMessage.success('已保存') // pageType.value = 'detail' // loading.close() // }) } // 获取详情 const getInfo = () => { // const loading = ElLoading.service({ // lock: true, // text: '加载中', // background: 'rgba(255, 255, 255, 0.6)', // }) const params = { equipmentId: equipmentId.value, // 设备id belongStandardEquipment: form.value.belongStandardEquipment, // 检校标准装置code itemCategoryId: form.value.itemCategoryId, // 核查项分类id itemCategoryName: form.value.itemCategoryName, // 核查项分类名称 } // getCheckItemDetail(params).then((res) => { // list.value = res.data.checkItemDataPistonGaugeList.map((item: any) => { // return { // ...item, // resolution: Number(item.resolution), // } // }) // loading.close() // }) } // ------------------------------------------钩子-------------------------------------------------- onMounted(() => { form.value.equipmentNo = $route.query.equipmentNo as string // 统一编号 form.value.equipmentName = $route.query.equipmentName as string // 设备名称 form.value.model = $route.query.model as string // 型号规格 form.value.manufactureNo = $route.query.manufactureNo as string // 出厂编号 form.value.measureRange = $route.query.measureRange as string // 测量范围 form.value.uncertainty = $route.query.uncertainty as string // 不确定度或允许误差极限或准确度等级 form.value.itemCategoryName = $route.query.itemCategoryName as string // 核查项分类名称 form.value.itemCategoryId = $route.query.itemCategoryId as string // 核查项分类id form.value.belongStandardEquipment = $route.query.belongStandardEquipment as string // 核查项标准装置id form.value.belongStandardEquipmentName = $route.query.belongStandardEquipmentName as string // 核查项标准装置id equipmentId.value = $route.query.equipmentId as string // 设备id // getInfo() }) </script> <template> <app-container> <detail-page v-loading="loading" :title="`配置核查项(${textMap[pageType]})`"> <template #btns> <el-button v-if="pageType === 'edit'" type="warning" @click="clear"> 清空配置 </el-button> <el-button v-if="pageType === 'edit'" type="primary" @click="save"> 保存 </el-button> <el-button type="info" @click="close"> 关闭 </el-button> </template> <el-form ref="ruleFormRef" :model="form" :label-width="130" label-position="right" > <el-row :gutter="24" class="marg"> <el-col :span="6"> <el-form-item label="统一编号:" prop="equipmentNo"> <el-input v-model="form.equipmentNo" disabled :placeholder="pageType === 'detail' ? '' : '统一编号'" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="设备名称:" prop="equipmentName"> <el-input v-model="form.equipmentName" disabled :placeholder="pageType === 'detail' ? '' : '设备名称'" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="型号规格:" prop="model"> <el-input v-model="form.model" disabled :placeholder="pageType === 'detail' ? '' : '型号规格'" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="出厂编号:" prop="manufactureNo"> <el-input v-model="form.manufactureNo" disabled :placeholder="pageType === 'detail' ? '' : '出厂编号'" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="测量范围:" prop="measureRange"> <el-input v-model="form.measureRange" disabled type="textarea" autosize :placeholder="pageType === 'detail' ? '' : '测量范围'" /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label-width="260" label="不确定度或允许误差极限或准确度等级:" prop="uncertainty"> <el-input v-model="form.uncertainty" type="textarea" autosize disabled :placeholder="pageType === 'detail' ? '' : '不确定度或允许误差极限或准确度等级'" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="核查项分类名称:" prop="itemCategoryName"> <el-input v-model="form.itemCategoryName" disabled :placeholder="pageType === 'detail' ? '' : '核查项分类名称'" /> </el-form-item> </el-col> </el-row> </el-form> </detail-page> <!-- 直流电压 --> <detail-block title="" style="padding-bottom: 20px;"> <div style="display: flex;justify-content: space-between;"> <el-checkbox v-model="directVoltage" :disabled="pageType === 'detail'"> 直流电压 </el-checkbox> <div v-if="directVoltage && pageType !== 'detail'" style="padding: 0 10px;padding-bottom: 10px;"> <el-button type="primary" @click="addRow(listDirectVoltage, '直流电压')"> 增加行 </el-button> <el-button type="info" @click="delRow(checkoutDirectVoltageList, listDirectVoltage)"> 删除行 </el-button> </div> </div> <template-table v-if="directVoltage" :data="listDirectVoltage" :columns="columns_direct_voltage_DC_direct" :page-type="pageType" @selection-change="handleSelectionDirectVoltageChange" /> </detail-block> <!-- 电源效应和负载效应 --> <detail-block title="" style="padding-bottom: 20px;"> <div style="display: flex;justify-content: space-between;"> <el-checkbox v-model="effect" :disabled="pageType === 'detail'"> 电源效应和负载效应 </el-checkbox> <div v-if="effect && pageType !== 'detail'" style="padding: 0 10px;padding-bottom: 10px;"> <el-button type="primary" @click="addRow(listEffect, '电源效应和负载效应')"> 增加行 </el-button> <el-button type="info" @click="delRow(checkoutEffectList, listEffect)"> 删除行 </el-button> </div> </div> <template-table v-if="effect" :data="listEffect" :columns="columns_effect" :page-type="pageType" @selection-change="handleSelectionEffectChange" /> </detail-block> <!-- 直流电流(直接测量) --> <detail-block title="" style="padding-bottom: 20px;"> <div style="display: flex;justify-content: space-between;"> <el-checkbox v-model="DCDirect" :disabled="pageType === 'detail'"> 直流电流(直接测量) </el-checkbox> <div v-if="DCDirect && pageType !== 'detail'" style="padding: 0 10px;padding-bottom: 10px;"> <el-button type="primary" @click="addRow(listDCDirect, '直流电流(直接测量)')"> 增加行 </el-button> <el-button type="info" @click="delRow(checkoutDCDirectList, listDCDirect)"> 删除行 </el-button> </div> </div> <template-table v-if="DCDirect" :data="listDCDirect" :columns="columns_direct_voltage_DC_direct" :page-type="pageType" @selection-change="handleSelectionDCDirectChange" /> </detail-block> <!-- 直流电流(间接测量) --> <detail-block title="" style="padding-bottom: 20px;"> <div style="display: flex;justify-content: space-between;"> <el-checkbox v-model="DCIndirect" :disabled="pageType === 'detail'"> 直流电流(间接测量) </el-checkbox> <div v-if="DCIndirect && pageType !== 'detail'" style="padding: 0 10px;padding-bottom: 10px;"> <el-button type="primary" @click="addRow(listDCIndirect, '直流电流(间接测量)')"> 增加行 </el-button> <el-button type="info" @click="delRow(checkoutDCIndirectList, listDCIndirect)"> 删除行 </el-button> </div> </div> <template-table v-if="DCIndirect" :data="listDCIndirect" :columns="columns_DC_indirect" :page-type="pageType" @selection-change="handleSelectionDCIndirectChange" /> </detail-block> <!-- 纹波电压 --> <detail-block title="" style="padding-bottom: 20px;"> <div style="display: flex;justify-content: space-between;"> <el-checkbox v-model="rippleVoltage" :disabled="pageType === 'detail'"> 纹波电压 </el-checkbox> <div v-if="rippleVoltage && pageType !== 'detail'" style="padding: 0 10px;padding-bottom: 10px;"> <el-button type="primary" @click="addRow(listRippleVoltage, '纹波电压')"> 增加行 </el-button> <el-button type="info" @click="delRow(checkoutRippleVoltageList, listRippleVoltage)"> 删除行 </el-button> </div> </div> <template-table v-if="rippleVoltage" :data="listRippleVoltage" :columns="columns_ripple_voltage" :page-type="pageType" @selection-change="handleSelectionRippleVoltageChange" /> </detail-block> <!-- 核查项备注 --> <el-form :model="form" label-width="120" label-position="right" style="margin-top: 20px;" > <el-row> <el-col :span="12"> <el-form-item label="核查项备注:" prop="remark"> <el-input v-model="form.remark" class="full-width-input" autosize type="textarea" :disabled="pageType === 'detail'" :placeholder="pageType === 'detail' ? ' ' : '请输入核查项备注'" /> </el-form-item> </el-col> </el-row> </el-form> </app-container> </template>