| | |
| | | plain |
| | | icon="Plus" |
| | | @click="openDialog('add',{})" |
| | | v-hasPermi="['annualVerificationPlan:list:add']" |
| | | >新增</el-button> |
| | | </el-form-item> |
| | | <el-form-item v-if="isAdmin" label="企业:" > |
| | | <el-form-item v-if="isAdmin" label="单位:" > |
| | | <el-select v-model="data.queryParams.companyId" placeholder="请选择" clearable> |
| | | <el-option |
| | | v-for="item in companyList" |
| | |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item v-if="isAdmin" label="年份:"> |
| | | <el-date-picker |
| | | v-model="data.queryParams.year" |
| | | type="year" |
| | | value-format="YYYY" |
| | | placeholder="请选择年份" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item > |
| | | <el-button v-if="isAdmin" type="primary" @click="getList">查询</el-button> |
| | | <el-button v-if="isAdmin" type="primary" plain @click="reset">重置</el-button> |
| | | <el-button type="primary" plain @click="openDialog('edit',data.dataList)" v-if="data.hasInfo" v-hasPermi="['annualVerificationPlan:list:edit']">编辑</el-button> |
| | | <el-button type="primary" plain @click="downloadFile()" v-if="data.hasInfo">导出</el-button> |
| | | <!-- <el-button type="primary">导出</el-button>--> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <!-- 表格数据 --> |
| | | <el-table v-loading="loading" :data="dataList" :border="true"> |
| | | <el-table-column type="index" label="序号"></el-table-column> |
| | | <el-table-column prop="name" align="center" label="计划名称"></el-table-column> |
| | | <el-table-column prop="certificateName" align="center" label="检定证书"> |
| | | <template #default="scope"> |
| | | {{scope.row.certificateName}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" align="center"> |
| | | <template #default="scope"> |
| | | <el-button link type="primary" @click="openDialog('view',scope.row)">查看</el-button> |
| | | <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button> |
| | | <el-button link type="primary" @click="openDialog('upload',scope.row)">上传证书</el-button> |
| | | <el-button link type="primary" @click="downloadFile(scope.row)">导出</el-button> |
| | | <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div style="background: #fff;padding: 20px;border-radius: 0.6rem"> |
| | | <el-form :model="data.dataList" label-position="left" size="default" label-width="120px" v-if="data.hasInfo"> |
| | | <el-form-item v-if="isAdmin" label="单位:" prop="companyId"> |
| | | <el-input |
| | | v-model.trim="data.dataList.companyName" |
| | | style="width: 100%;" |
| | | readonly |
| | | > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="计划名称:" prop="name"> |
| | | <el-input |
| | | v-model.trim="data.dataList.name" |
| | | style="width: 100%;" |
| | | readonly |
| | | > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="年份:" prop="year"> |
| | | <el-input |
| | | v-model.trim="data.dataList.year" |
| | | style="width: 100%;" |
| | | readonly |
| | | > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="设备列表:" prop="annualVerificationDevices"> |
| | | |
| | | <pagination |
| | | v-show="total > 0" |
| | | :total="total" |
| | | v-model:page="queryParams.pageNum" |
| | | v-model:limit="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | </el-form-item> |
| | | <el-table v-if="data.dataList.annualVerificationDevices && data.dataList.annualVerificationDevices.length>0" :data="data.dataList.annualVerificationDevices" style="margin-bottom: 20px" :border="true"> |
| | | <el-table-column label="序号" type="index" width="80" align="center"> |
| | | </el-table-column> |
| | | <el-table-column label="设备编号" prop="deviceNumber" align="center"/> |
| | | <el-table-column label="设备名称" prop="deviceName" align="center"/> |
| | | <el-table-column label="规格型号" prop="model" align="center"/> |
| | | <el-table-column label="校准周期" prop="calibrationCycle" align="center"/> |
| | | <el-table-column label="下次校准时间" prop="nextCalibrationTime" align="center"> |
| | | <template #default="scope"> |
| | | {{scope.row.nextCalibrationTime.substring(0,10)}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="实际检定时间" prop="actCalibrationTime" align="center"> |
| | | <template #default="scope"> |
| | | {{scope.row.actCalibrationTime.substring(0,10)}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="校准人" prop="calibrationUser" align="center"/> |
| | | <el-table-column label="目前状态" prop="status" align="center"/> |
| | | <el-table-column label="使用单位" prop="useUser" align="center"/> |
| | | <el-table-column label="证书编号" prop="certificateName" align="center"/> |
| | | <el-table-column label="证书" prop="certificate" align="center"> |
| | | <template #default="scope"> |
| | | <div v-if="scope.row.certificate && scope.row.certificate!==''" style="cursor:pointer;"> |
| | | <iframe |
| | | v-if="scope.row.certificate.split('.').pop().toLowerCase() == 'pdf'" |
| | | :src="data.baseUrl + '/' + scope.row.certificate" |
| | | width="100px" |
| | | height="100px" |
| | | style="overflow: hidden" |
| | | ></iframe> |
| | | <el-image |
| | | v-else |
| | | style="width: 100px; height: 100px" |
| | | :src="data.baseUrl + '/' + scope.row.certificate" |
| | | :max-scale="7" |
| | | :min-scale="0.2" |
| | | :preview-src-list="[data.baseUrl + '/' + scope.row.certificate]" |
| | | :initial-index="0" |
| | | fit="cover" |
| | | :preview-teleported=true |
| | | /> |
| | | </div> |
| | | <el-link type="primary" :href="data.baseUrl + '/' + scope.row.certificate" target="_blank">预览</el-link> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <!-- <el-form-item label="检定证书:" prop="certificate">--> |
| | | <!-- <el-upload accept=".pdf,image/*" :action="state.uploadUrl" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile)" :on-exceed="showTip" :limit='state.fileLimit' v-model:file-list="state.fileList" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles)" >--> |
| | | <!-- <el-button type="primary">点击上传</el-button>--> |
| | | <!-- <template #tip>--> |
| | | <!-- <div class="el-upload__tip">支持上传pdf、图片格式,尺寸小于5M,最多可上传1份</div>--> |
| | | <!-- </template>--> |
| | | <!-- </el-upload>--> |
| | | <!-- </el-form-item>--> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="编制:" prop="establishmentName"> |
| | | <el-input |
| | | v-model.trim="data.dataList.establishmentName" |
| | | style="width: 100%;" |
| | | readonly |
| | | > |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="日期:" prop="establishmentTime" > |
| | | <el-input |
| | | v-model.trim="data.dataList.establishmentTime" |
| | | style="width: 100%;" |
| | | readonly |
| | | > |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="审核:" prop="processName"> |
| | | <el-input |
| | | v-model.trim="data.dataList.processName" |
| | | style="width: 100%;" |
| | | readonly |
| | | > |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="日期:" prop="processTime" > |
| | | <el-input |
| | | v-model.trim="data.dataList.processTime" |
| | | style="width: 100%;" |
| | | readonly |
| | | > |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <div v-else>暂无计划</div> |
| | | </div> |
| | | <!-- 表格数据 --> |
| | | <!-- <el-table v-loading="loading" :data="dataList" :border="true">--> |
| | | <!-- <el-table-column type="index" label="序号"></el-table-column>--> |
| | | <!-- <el-table-column prop="name" align="center" label="计划名称"></el-table-column>--> |
| | | <!-- <el-table-column prop="certificateName" align="center" label="检定证书">--> |
| | | <!-- <template #default="scope">--> |
| | | <!-- {{scope.row.certificateName}}--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column label="操作" align="center">--> |
| | | <!-- <template #default="scope">--> |
| | | <!-- <el-button link type="primary" @click="openDialog('view',scope.row)">查看</el-button>--> |
| | | <!-- <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>--> |
| | | <!-- <el-button link type="primary" @click="openDialog('upload',scope.row)">上传证书</el-button>--> |
| | | <!-- <el-button link type="primary" @click="downloadFile(scope.row)">导出</el-button>--> |
| | | <!-- <el-button link type="danger" @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"--> |
| | | <!-- />--> |
| | | |
| | | <edit-dialog ref="dialogRef" @getList=getList></edit-dialog> |
| | | </div> |
| | |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | companyId: null |
| | | companyId: null, |
| | | year: '' |
| | | }, |
| | | total: 0, |
| | | dataList: [], |
| | | dataList: {}, |
| | | companyList: [], |
| | | isAdmin: false |
| | | isAdmin: false, |
| | | baseUrl: import.meta.env.VITE_APP_BASE_API, |
| | | hasInfo: false |
| | | }); |
| | | |
| | | const { queryParams, total, dataList,companyList, isAdmin } = toRefs(data); |
| | | const userInfo = ref() |
| | | onMounted(async ()=>{ |
| | | data.queryParams.year = new Date().getFullYear().toString() |
| | | if(userStore.roles.includes('admin')){ |
| | | data.isAdmin = true |
| | | await getCompanyList() |
| | |
| | | loading.value = true |
| | | const res = await getAnnualVerificationPlanList(data.queryParams) |
| | | if(res.code == 200){ |
| | | data.dataList = res.data.list || [] |
| | | data.total = res.data.total |
| | | if(Array.isArray(res.data.list) && res.data.list.length>0){ |
| | | data.hasInfo = true |
| | | const re = await getAnnualVerificationPlanDetail({id: res.data.list[0].id}) |
| | | if(re.code == 200){ |
| | | if(re.data){ |
| | | data.dataList = re.data |
| | | data.dataList.companyName = data.companyList.find(i=>i.id == data.dataList.companyId)?.name |
| | | data.dataList.establishmentTime = data.dataList.establishmentTime.substring(0,10) |
| | | data.dataList.processTime = data.dataList.processTime.substring(0,10) |
| | | } |
| | | }else{ |
| | | data.hasInfo = false |
| | | data.dataList = {} |
| | | data.dataList.companyName = '' |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }else{ |
| | | data.hasInfo = false |
| | | data.dataList = {} |
| | | data.dataList.companyName = '' |
| | | } |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | const downloadFile = async (val)=>{ |
| | | const res = await getAnnualVerificationPlanDetail({id: val.id}) |
| | | if(res.code == 200){ |
| | | if(res.data){ |
| | | let tableData = res.data |
| | | tableData.table = res.data.annualVerificationDevices.map((item,index)=>{ |
| | | const downloadFile = async ()=>{ |
| | | let tableData = data.dataList |
| | | tableData.table = data.dataList.annualVerificationDevices.map((item,index)=>{ |
| | | return { |
| | | ...item, |
| | | index: index + 1, |
| | |
| | | message: '导出失败' |
| | | }); |
| | | } |
| | | }else{ |
| | | ElMessage.warning('暂无数据') |
| | | } |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | } |
| | | |
| | | const openDialog = (type, value) => { |
| | | if(!data.queryParams.companyId){ |
| | | ElMessage.warning('请先选择单位') |
| | | return |
| | | } |
| | | dialogRef.value.openDialog(type, value, data.queryParams.companyId, data.isAdmin, data.companyList); |
| | | } |
| | | |
| | |
| | | data.queryParams = { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | companyId: null |
| | | companyId: null, |
| | | year: new Date().getFullYear().toString() |
| | | } |
| | | await getCompanyList() |
| | | await getList() |