|
@@ -1,953 +1,947 @@
|
|
-<template>
|
|
|
|
- <div>
|
|
|
|
-
|
|
|
|
- <el-breadcrumb separator-class="el-icon-arrow-right">
|
|
|
|
- <el-breadcrumb-item>首页</el-breadcrumb-item>
|
|
|
|
- <el-breadcrumb-item>承担单位</el-breadcrumb-item>
|
|
|
|
- <el-breadcrumb-item :to="{ path: '/jc/routineMonitor' }">任务列表</el-breadcrumb-item>
|
|
|
|
- <el-breadcrumb-item>基本信息</el-breadcrumb-item>
|
|
|
|
- </el-breadcrumb>
|
|
|
|
-
|
|
|
|
- <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
|
|
|
|
- <el-tab-pane label="任务详情" name="first">
|
|
|
|
- <el-descriptions class="margin-top" :title="readForm.task_class+'任务'" :column="2" :size="size" border>
|
|
|
|
- <el-descriptions-item>
|
|
|
|
- <template slot="label">
|
|
|
|
- 发布单位
|
|
|
|
- </template>
|
|
|
|
- {{readForm.releaser}}
|
|
|
|
- </el-descriptions-item>
|
|
|
|
- <el-descriptions-item>
|
|
|
|
- <template slot="label">
|
|
|
|
- 年度
|
|
|
|
- </template>
|
|
|
|
- {{readForm.year}}
|
|
|
|
- </el-descriptions-item>
|
|
|
|
- <el-descriptions-item>
|
|
|
|
- <template slot="label">
|
|
|
|
- 开始时间和结束时间
|
|
|
|
- </template>
|
|
|
|
- {{readForm.starttime}}-{{readForm.endtime}}
|
|
|
|
- </el-descriptions-item>
|
|
|
|
- <el-descriptions-item>
|
|
|
|
- <template slot="label">
|
|
|
|
- 抽样信息上报截止时间
|
|
|
|
- </template>
|
|
|
|
- {{readForm.endtime_cydsb}}
|
|
|
|
- </el-descriptions-item>
|
|
|
|
- <el-descriptions-item>
|
|
|
|
- <template slot="label">
|
|
|
|
- 监测类型
|
|
|
|
- </template>
|
|
|
|
- {{readForm.task_class}}
|
|
|
|
- </el-descriptions-item>
|
|
|
|
- <el-descriptions-item>
|
|
|
|
- <template slot="label">
|
|
|
|
- 行业
|
|
|
|
- </template>
|
|
|
|
- <!-- <div v-if="readForm.product!=[]"> -->
|
|
|
|
- <span>{{readForm.model_type}}</span>
|
|
|
|
- <!-- </div> -->
|
|
|
|
- <!-- <div v-else>暂无</div> -->
|
|
|
|
- </el-descriptions-item>
|
|
|
|
- <el-descriptions-item>
|
|
|
|
- <template slot="label">
|
|
|
|
- 抽检分离
|
|
|
|
- </template>
|
|
|
|
- <span v-if="readForm.is_divide==1">是</span>
|
|
|
|
- <span v-if="readForm.is_divide==0">否</span>
|
|
|
|
- </el-descriptions-item>
|
|
|
|
- <el-descriptions-item>
|
|
|
|
- <template slot="label">
|
|
|
|
- 附件
|
|
|
|
- </template>
|
|
|
|
- <div v-if="readForm.file_url==null">无</div>
|
|
|
|
- <el-link v-else type="primary" :href="readForm.file_url">下载附件</el-link>
|
|
|
|
- </el-descriptions-item>
|
|
|
|
-
|
|
|
|
- </el-descriptions>
|
|
|
|
- <el-descriptions class="margin-top" :size="size" border>
|
|
|
|
- <el-descriptions-item>
|
|
|
|
- <template slot="label">
|
|
|
|
- 备注
|
|
|
|
- </template>
|
|
|
|
- {{readForm.log}}
|
|
|
|
- </el-descriptions-item>
|
|
|
|
- </el-descriptions>
|
|
|
|
- <el-descriptions class="margin-top" :size="size" border>
|
|
|
|
- <el-descriptions-item>
|
|
|
|
-
|
|
|
|
- <template slot="label">
|
|
|
|
- 检测对象
|
|
|
|
- </template>
|
|
|
|
- <span v-for="item in readForm.product">{{item.product_name}}、</span>
|
|
|
|
- </el-descriptions-item>
|
|
|
|
- </el-descriptions>
|
|
|
|
- <el-descriptions class="margin-top" :size="size" border>
|
|
|
|
- <el-descriptions-item>
|
|
|
|
- <template slot="label">
|
|
|
|
- 检测项
|
|
|
|
- </template>
|
|
|
|
- <span v-for="item in readForm.pesticides">{{item.test_name}}、</span>
|
|
|
|
- </el-descriptions-item>
|
|
|
|
- </el-descriptions>
|
|
|
|
- <el-table :data="underTask" border stripe highlight-current-row style="width: 100%"
|
|
|
|
- :row-style="rowStyle" :cell-style="cellStyle">
|
|
|
|
- <el-table-column :key="table.label" v-for="table in tableHeader2" :label="table.label"
|
|
|
|
- :prop="table.prop" align="center" :width="table.width" :fixed="table.fixed" />
|
|
|
|
- </el-table>
|
|
|
|
- <div class="footer">
|
|
|
|
- <el-button type="success" size="mini" @click="input()">填报抽样单</el-button>
|
|
|
|
- <!-- <el-button type="success" size="mini" @click="next">导出总览</el-button> -->
|
|
|
|
- <el-button type="success" size="mini" @click="back()">返回</el-button>
|
|
|
|
- </div>
|
|
|
|
- </el-tab-pane>
|
|
|
|
-
|
|
|
|
- <el-tab-pane label="抽样" name="second">
|
|
|
|
- <!-- 头部搜索栏 -->
|
|
|
|
- <el-row style="margin-right: 0px;">
|
|
|
|
- <el-form style="display: flex; flex-direction: row;">
|
|
|
|
- <el-form-item label="产品编码" class="select" size="small">
|
|
|
|
- <el-input v-model="queryInfo.task_name"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="受检单位" class="select" size="small">
|
|
|
|
- <el-input v-model="queryInfo.task_name"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="抽样编码" class="select" size="small">
|
|
|
|
- <el-input v-model="queryInfo.task_name"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="样品名称" class="select" size="small">
|
|
|
|
- <el-input v-model="queryInfo.task_name"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-form>
|
|
|
|
- </el-row>
|
|
|
|
- <el-row style="margin-right: 0px;">
|
|
|
|
- <el-form style="display: flex; flex-direction: row;">
|
|
|
|
- <el-form-item label="抽样场所" class="select" size="small">
|
|
|
|
- <el-input v-model="queryInfo.task_name"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="抽样日期" class="select" size="small">
|
|
|
|
- <el-input v-model="queryInfo.task_name"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="抽样单位" class="select" size="small">
|
|
|
|
- <el-input v-model="queryInfo.task_name"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="抽样机构" class="select" size="small">
|
|
|
|
- <el-input v-model="queryInfo.task_name"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-button style="height: 32px;margin-left: 15px;" size="mini" type="success"
|
|
|
|
- @click="searchData()">查询
|
|
|
|
- </el-button>
|
|
|
|
- <!-- 重置 -->
|
|
|
|
- <el-button style="height: 32px;margin-left: 5px;" size="mini" type="success" @click="reset()">
|
|
|
|
- 重置
|
|
|
|
- </el-button>
|
|
|
|
- </el-form>
|
|
|
|
-
|
|
|
|
- </el-row>
|
|
|
|
- <el-row style="margin-right: 0px;">
|
|
|
|
- <el-form style="display: flex; flex-direction: row;">
|
|
|
|
- <!-- <el-form-item label="产地" class="select">
|
|
|
|
- <el-select v-model="value" placeholder="请选择省份" size="small">
|
|
|
|
- <el-option v-for="item in options" :key="item.value" :label="item.label"
|
|
|
|
- :value="item.value">
|
|
|
|
- </el-option>
|
|
|
|
- </el-select>
|
|
|
|
- <el-select v-model="value" placeholder="请选择城市" size="small">
|
|
|
|
- <el-option v-for="item in options" :key="item.value" :label="item.label"
|
|
|
|
- :value="item.value">
|
|
|
|
- </el-option>
|
|
|
|
- </el-select>
|
|
|
|
- <el-select v-model="value" placeholder="请选择区/县" size="small">
|
|
|
|
- <el-option v-for="item in options" :key="item.value" :label="item.label"
|
|
|
|
- :value="item.value">
|
|
|
|
- </el-option>
|
|
|
|
- </el-select>
|
|
|
|
- </el-form-item> -->
|
|
|
|
- <!-- 查询 -->
|
|
|
|
-
|
|
|
|
- </el-form>
|
|
|
|
- <div style="display: flex;flex-direction: row;float: right;">
|
|
|
|
- <el-button type="primary" size="small" plain icon="el-icon-plus" @click="input()">填报抽样单
|
|
|
|
- </el-button>
|
|
|
|
- <el-button type="primary" size="small" plain icon="el-icon-edit-outline" @click="appear">上报抽样信息
|
|
|
|
- </el-button>
|
|
|
|
- <!-- <el-button type="primary" size="small" plain icon="el-icon-scissors" @click="repeal()">导出</el-button> -->
|
|
|
|
- <el-button type="primary" size="small" plain icon="el-icon-delete" @click="delAll">删除
|
|
|
|
- </el-button>
|
|
|
|
- <!-- <el-button type="primary" size="small" plain icon="el-icon-download">导出</el-button> -->
|
|
|
|
- </div>
|
|
|
|
- </el-row>
|
|
|
|
-
|
|
|
|
- <!-- 表格数据区域-->
|
|
|
|
- <el-table ref="multipleTable" :data="tableData" border stripe highlight-current-row
|
|
|
|
- @selection-change="handleSelectionChange" style="width: 100%" :row-style="rowStyle"
|
|
|
|
- :cell-style="cellStyle">
|
|
|
|
- <el-table-column type="selection" width="50"></el-table-column>
|
|
|
|
- <el-table-column label="序号" width="50px" align="center">
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
- {{ scope.$index+1 }}
|
|
|
|
- </template>
|
|
|
|
- </el-table-column>
|
|
|
|
-
|
|
|
|
- <el-table-column :key="table.label" v-for="table in tableHeader" :label="table.label"
|
|
|
|
- :prop="table.prop" align="center" :width="table.width" :fixed="table.fixed" />
|
|
|
|
-
|
|
|
|
- <el-table-column label="操作" width="150px" align="center">
|
|
|
|
- <template>
|
|
|
|
- <el-button type="success" size="small" plain @click="sampleDetail(scope.row.sample_id)">查看</el-button>
|
|
|
|
- </template>
|
|
|
|
- </el-table-column>
|
|
|
|
-
|
|
|
|
- </el-table>
|
|
|
|
- <!-- 分页器区域-->
|
|
|
|
- <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
|
|
|
- :current-page="queryInfo.pageNum" :page-sizes="[1,10, 15, 20]" :page-size="queryInfo.pageSize"
|
|
|
|
- layout="total, sizes, prev, pager, next, jumper" :total="total" background />
|
|
|
|
- </el-tab-pane>
|
|
|
|
-
|
|
|
|
- <el-tab-pane label="检测" name="third">
|
|
|
|
-
|
|
|
|
- <!-- 表格数据区域-->
|
|
|
|
- <el-table :data="tableData" border stripe highlight-current-row style="width: 100%"
|
|
|
|
- :row-style="rowStyle" :cell-style="cellStyle">
|
|
|
|
- <!-- <el-table-column type="selection" width="50"></el-table-column> -->
|
|
|
|
- <el-table-column label="序号" width="50px" align="center">
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
- {{ scope.$index+1 }}
|
|
|
|
- </template>
|
|
|
|
- </el-table-column>
|
|
|
|
-
|
|
|
|
- <el-table-column :key="table.label" v-for="table in checkHeader" :label="table.label"
|
|
|
|
- :prop="table.prop" align="center" :width="table.width" :fixed="table.fixed" />
|
|
|
|
- <el-table-column label="操作" align="center" width="220px">
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
- <el-button type="success" size="mini" v-if="scope.row.jc_value_id==null" plain
|
|
|
|
- @click="check(scope.row.sample_id,scope.row.sample_name)">检测</el-button>
|
|
|
|
- <el-button type="primary" v-else size="mini" plain @click="update(scope.row)">修改</el-button>
|
|
|
|
- <el-button type="primary" size="mini" plain @click="upcheck(scope.row.sample_id)">上报
|
|
|
|
- </el-button>
|
|
|
|
- <el-button type="primary" size="mini" plain @click="creatpdf(scope.row.sample_id)">生成检测报告
|
|
|
|
- </el-button>
|
|
|
|
- </template>
|
|
|
|
- </el-table-column>
|
|
|
|
- </el-table>
|
|
|
|
-
|
|
|
|
- <!-- 分页器区域-->
|
|
|
|
- <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
|
|
|
- :current-page="queryInfo.pageNum" :page-sizes="[1,10, 15, 20]" :page-size="queryInfo.pageSize"
|
|
|
|
- layout="total, sizes, prev, pager, next, jumper" :total="total" background />
|
|
|
|
- </el-tab-pane>
|
|
|
|
- <el-dialog title="填写检测单" :visible.sync="inputCheckShow" width="70%" :close-on-click-modal="false"
|
|
|
|
- class="dialogItem">
|
|
|
|
- <span class="demonstration">样品编码:{{check_id}}</span>
|
|
|
|
- <span class="demonstration">样品名称:{{check_name}}</span>
|
|
|
|
- <el-button type="success" size="small" plain @click="onSubmit">保存</el-button>
|
|
|
|
- <span class="demonstration">注意:“不得检出”只能填为“ND”</span>
|
|
|
|
- <!-- 表格数据区域-->
|
|
|
|
- <el-table :data="testPesticides" border stripe highlight-current-row style="width: 100%"
|
|
|
|
- :row-style="rowStyle" :cell-style="cellStyle">
|
|
|
|
- <el-table-column :key="table.label" v-for="table in checkHeader2" :label="table.label"
|
|
|
|
- :prop="table.prop" align="center" :width="table.width" :fixed="table.fixed" />
|
|
|
|
- <el-table-column label="检测值">
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
- <el-input v-model="scope.row.test_value" size="small" />
|
|
|
|
- </template>
|
|
|
|
- </el-table-column>
|
|
|
|
- <el-table-column label="限量值">
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
- <el-input v-model="scope.row.state_value" size="small" />
|
|
|
|
- </template>
|
|
|
|
- </el-table-column>
|
|
|
|
- <el-table-column label="单位">
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
- <span v-model="scope.row.unit" size="small">mg/kg</span>
|
|
|
|
- </template>
|
|
|
|
- </el-table-column>
|
|
|
|
- <el-table-column label="抽检结果">
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
- <span v-if="scope.row.test_value<=scope.row.state_value&&scope.row.state_value!='ND'"
|
|
|
|
- size="small">合格</span>
|
|
|
|
- <span v-else-if="scope.row.test_value>scope.row.state_value" size="small">不合格</span>
|
|
|
|
- <span v-else-if="scope.row.test_value=='ND'&&scope.row.state_value=='ND'"
|
|
|
|
- size="small">合格</span>
|
|
|
|
- <span v-else-if="scope.row.test_value!='ND'&&scope.row.state_value=='ND'"
|
|
|
|
- size="small">不合格</span>
|
|
|
|
- </template>
|
|
|
|
- </el-table-column>
|
|
|
|
- <el-table-column label="LOD">
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
- <el-input v-model="scope.row.LOD" size="small" />
|
|
|
|
- </template>
|
|
|
|
- </el-table-column>
|
|
|
|
- <el-table-column label="LOQ">
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
- <el-input v-model="scope.row.LOQ" />
|
|
|
|
- </template>
|
|
|
|
- </el-table-column>
|
|
|
|
-
|
|
|
|
- </el-table>
|
|
|
|
- </el-dialog>
|
|
|
|
- <!-- ///////////////////////////////////////////检测报告生成-------难、、、、、、、、、、、、、、、、、、、、、、 -->
|
|
|
|
- <el-dialog title="生成监测报告" :visible.sync="dialogVisible2" width="50%">
|
|
|
|
- <div id="pdf">
|
|
|
|
- <el-form ref="formjc" :model="formjc" label-width="100px"
|
|
|
|
- style="margin-top: 20px;width: 100%;background-color: aliceblue;padding: 5px;">
|
|
|
|
- <el-row style="text-align: center; font-size: 23px; margin: 40px 0;">
|
|
|
|
- 安徽省农业农村厅农产品质量安全例行监测检测报告
|
|
|
|
- </el-row>
|
|
|
|
- <el-row>
|
|
|
|
- <el-col :span="12">
|
|
|
|
- <el-form-item label="样品名称" prop="sample_name" class="labelItem" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.sample_name"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span="11">
|
|
|
|
- <el-form-item label="样品编码" prop="sample_id" class="labelItem" style="" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.sample_id"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- </el-row>
|
|
|
|
- <el-row>
|
|
|
|
- <el-col :span="12">
|
|
|
|
- <el-form-item label="型号规格" prop="type" class="labelItem" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.type"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span="11">
|
|
|
|
- <el-form-item label="执行标准" prop="standard" class="labelItem" style="" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.standard"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- </el-row>
|
|
|
|
- <el-row>
|
|
|
|
- <el-col :span="12">
|
|
|
|
- <el-form-item label="生产日期或批号" prop="production_date" class="labelItem" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.production_date"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span="11">
|
|
|
|
- <el-form-item label="产地" prop="place" class="labelItem" style="" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.place"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- </el-row>
|
|
|
|
- <el-row>
|
|
|
|
- <el-col :span="12">
|
|
|
|
- <el-form-item label="产品认证情况" prop="certicfie" class="labelItem" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.certicfie"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span="11">
|
|
|
|
- <el-form-item label="证书编号" prop="certifie_num" class="labelItem" style="" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.certifie_num"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- </el-row>
|
|
|
|
- <el-row>
|
|
|
|
- <el-col :span="12">
|
|
|
|
- <el-row>
|
|
|
|
- <el-col :span="13">
|
|
|
|
- <el-form-item label="抽样数量" prop="sample_renum" class="labelItem" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.sample_renum"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span="10">
|
|
|
|
- <el-form-item label="单位" prop="sample_num_unit" class="labelItem" size="mini"
|
|
|
|
- label-width="60px">
|
|
|
|
- <el-input disabled v-model="formjc.sample_num_unit"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- </el-row>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span="11">
|
|
|
|
- <el-row>
|
|
|
|
- <el-col :span="13">
|
|
|
|
- <el-form-item label="抽样基数" prop="sample_base" class="labelItem" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.sample_base"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span="10">
|
|
|
|
- <el-form-item label="单位" prop="sample_base_unit" class="labelItem" size="mini"
|
|
|
|
- label-width="60px" clearable>
|
|
|
|
- <el-input disabled v-model="formjc.sample_base_unit"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- </el-row>
|
|
|
|
- </el-col>
|
|
|
|
- </el-row>
|
|
|
|
- <el-row>
|
|
|
|
- <el-col>
|
|
|
|
- <el-form-item label="抽样场所" prop="sample_ground" class="labelItem" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.sample_ground"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- </el-row>
|
|
|
|
- <el-row>
|
|
|
|
- <el-col :span="7"
|
|
|
|
- style="text-align: center;vertical-align: middle;line-height: 250px;font-size: 14px;">
|
|
|
|
- <div class="">
|
|
|
|
- 受检单位情况
|
|
|
|
- </div>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span="15">
|
|
|
|
- <el-form-item label="单位名称" prop="units_name" class="labelItem" style="" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.units_name"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="通讯地址" prop="address" class="labelItem" style="" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.address"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="法定代表人" prop="corporation" class="labelItem" style="" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.corporation"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="受检人" prop="user_name" class="labelItem" style="" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.user_name"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="电话" prop="phone" class="labelItem" style="" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.phone"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="传真" prop="fax" class="labelItem" style="" size="mini">
|
|
|
|
- <el-input disabled v-model="formjc.fax"></el-input>
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-col>
|
|
|
|
- </el-row>
|
|
|
|
- </el-form>
|
|
|
|
- <el-table :data="resultjc" border stripe highlight-current-row style="width: 100%"
|
|
|
|
- :row-style="rowStyle" :cell-style="cellStyle">
|
|
|
|
- <el-table-column :key="table.label" v-for="table in jcheader" :label="table.label"
|
|
|
|
- :prop="table.prop" align="center" :width="table.width" :fixed="table.fixed" />
|
|
|
|
- </el-table>
|
|
|
|
- </div>
|
|
|
|
- <el-button @click="dialogVisible2 = false">取 消</el-button>
|
|
|
|
- <el-button type="primary" @click="download">生成检测报告pdf</el-button>
|
|
|
|
- </span>
|
|
|
|
- </el-dialog>
|
|
|
|
-
|
|
|
|
- <el-tab-pane label="报告上传" name="five">
|
|
|
|
- <el-upload class="upload-demo" :file-list="fileList" drag :headers="myHeaders"
|
|
|
|
- action="http://syjcapi.aielab.net/api/v1/ossUpload" :on-success="uploadSuccess" :limit="1">
|
|
|
|
- <i class="el-icon-upload"></i>
|
|
|
|
- <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
|
|
|
- </el-upload>
|
|
|
|
- </el-tab-pane>
|
|
|
|
- </el-tabs>
|
|
|
|
-
|
|
|
|
- </div>
|
|
|
|
-</template>
|
|
|
|
-
|
|
|
|
-<script>
|
|
|
|
- import htmlToPdf from '../../assets/js/htmlToPdf.js'
|
|
|
|
- import inputCheck from './inputCheck'
|
|
|
|
- const token = window.sessionStorage.getItem('token')
|
|
|
|
- export default {
|
|
|
|
- name: 'setTask',
|
|
|
|
- data() {
|
|
|
|
- return {
|
|
|
|
- size: 'medium',
|
|
|
|
- myHeaders: {
|
|
|
|
- Authorization: 'bearer' + token
|
|
|
|
- },
|
|
|
|
- formjc: {},
|
|
|
|
- dialogVisible2: false,
|
|
|
|
- activeName: 'first',
|
|
|
|
- id: 0,
|
|
|
|
- readForm: {},
|
|
|
|
- underTask: [],
|
|
|
|
- underTasktotal: '0',
|
|
|
|
- queryInfo: {
|
|
|
|
- pageNum: 1,
|
|
|
|
- pageSize: 10
|
|
|
|
- },
|
|
|
|
- // 填报对话框弹出
|
|
|
|
- inputDialogShow: false,
|
|
|
|
- cellStyle: {
|
|
|
|
- padding: 2 + 'px'
|
|
|
|
- },
|
|
|
|
- rowStyle: {
|
|
|
|
- height: 35 + 'px'
|
|
|
|
- },
|
|
|
|
- tableHeader: [{
|
|
|
|
- label: '样品编码',
|
|
|
|
- prop: 'sample_id'
|
|
|
|
- // fixed: 'left'
|
|
|
|
- }, {
|
|
|
|
- label: '样品名称',
|
|
|
|
- prop: 'sample_name',
|
|
|
|
- // fixed: 'left'
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- label: '受检单位',
|
|
|
|
- prop: 'units_name',
|
|
|
|
- width: 150
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- label: '样品产地',
|
|
|
|
- prop: 'place',
|
|
|
|
- width: 180
|
|
|
|
- }, {
|
|
|
|
- label: '抽样日期',
|
|
|
|
- prop: 'sample_date',
|
|
|
|
- width: 180
|
|
|
|
- }, {
|
|
|
|
- label: '状态',
|
|
|
|
- prop: 'status',
|
|
|
|
- width: 150
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
- checkHeader: [{
|
|
|
|
- label: '样品名称',
|
|
|
|
- prop: 'sample_name',
|
|
|
|
- // fixed: 'left'
|
|
|
|
- }, {
|
|
|
|
- label: '样品编码',
|
|
|
|
- prop: 'sample_id'
|
|
|
|
- // fixed: 'left'
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- label: '受检单位',
|
|
|
|
- prop: 'production_name',
|
|
|
|
- width: 180
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- label: '抽样单位',
|
|
|
|
- prop: 'sample_unit_name',
|
|
|
|
- width: 180
|
|
|
|
- }, {
|
|
|
|
- label: '检测单位',
|
|
|
|
- prop: 'units_name',
|
|
|
|
- width: 180
|
|
|
|
- }, {
|
|
|
|
- label: '判定结果',
|
|
|
|
- prop: 'test_result',
|
|
|
|
- width: 180
|
|
|
|
- }, {
|
|
|
|
- label: '状态',
|
|
|
|
- prop: 'test_status',
|
|
|
|
- width: 180
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
- checkHeader2: [{
|
|
|
|
- label: '检测项目',
|
|
|
|
- prop: 'test_name',
|
|
|
|
- // fixed: 'left'
|
|
|
|
- }],
|
|
|
|
- // 数据表格数据
|
|
|
|
- tableData: [],
|
|
|
|
- options: [],
|
|
|
|
- task_id: '',
|
|
|
|
- multipleSelection: null,
|
|
|
|
- // 填报检测对话框
|
|
|
|
- inputCheckShow: false,
|
|
|
|
- check_name: '',
|
|
|
|
- check_id: '',
|
|
|
|
- testPesticides: [],
|
|
|
|
- resultjc: [],
|
|
|
|
- // 模型列表
|
|
|
|
- options: [],
|
|
|
|
- bindForm: {
|
|
|
|
- test_model_id: '',
|
|
|
|
- closingdate: ''
|
|
|
|
- },
|
|
|
|
- jcheader: [{
|
|
|
|
- label: '检测项目',
|
|
|
|
- prop: 'test_name',
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- label: '检测值',
|
|
|
|
- prop: 'test_value',
|
|
|
|
- }, {
|
|
|
|
- label: '限量值',
|
|
|
|
- prop: 'state_value',
|
|
|
|
- }, {
|
|
|
|
- label: '单位',
|
|
|
|
- prop: 'unit',
|
|
|
|
- }, {
|
|
|
|
- label: '抽检结果',
|
|
|
|
- prop: 'test_result'
|
|
|
|
- }, {
|
|
|
|
- label: 'LOD',
|
|
|
|
- prop: 'LOD',
|
|
|
|
- }, {
|
|
|
|
- label: 'LOQ',
|
|
|
|
- prop: 'LOQ',
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
- tableHeader2: [{
|
|
|
|
- label: '抽样机构',
|
|
|
|
- prop: 'bear_name',
|
|
|
|
- width: 180,
|
|
|
|
- }, {
|
|
|
|
- label: '检测机构',
|
|
|
|
- prop: 'check_name'
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- label: '抽样地区',
|
|
|
|
- prop: 'address'
|
|
|
|
- }, {
|
|
|
|
- label: '抽样数量',
|
|
|
|
- prop: 'sample_number'
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- label: '报告上传单位',
|
|
|
|
- prop: 'report_name'
|
|
|
|
- }, {
|
|
|
|
- label: '报告上传截止时间',
|
|
|
|
- prop: 'uploadtime'
|
|
|
|
- }
|
|
|
|
- ],
|
|
|
|
- fileList:[],
|
|
|
|
- total:0,
|
|
|
|
- };
|
|
|
|
- },
|
|
|
|
- components: {
|
|
|
|
- inputCheck
|
|
|
|
- },
|
|
|
|
- mounted() {},
|
|
|
|
- created() {
|
|
|
|
- this.task_id = this.$route.params.id
|
|
|
|
- // console.log(this.$route.params)
|
|
|
|
- this.getTaskDetail()
|
|
|
|
- this.getSampleList()
|
|
|
|
- // this.getmodelList()
|
|
|
|
- this.getUnderTask()
|
|
|
|
- },
|
|
|
|
-
|
|
|
|
- methods: {
|
|
|
|
- // 获取机构地域表格
|
|
|
|
- async getUnderTask() {
|
|
|
|
- this.queryInfo['task_id'] = this.task_id
|
|
|
|
- const result = await this.$http.post('getUnderTask', this.queryInfo)
|
|
|
|
- // 判断业务逻辑
|
|
|
|
- if (result.data.code == 0) {
|
|
|
|
- this.underTask = result.data.data.rows
|
|
|
|
- this.underTasktotal = result.data.data.total
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- // 获取模型列表
|
|
|
|
- // async getmodelList() {
|
|
|
|
- // const {
|
|
|
|
- // data: res
|
|
|
|
- // } = await this.$http.post(
|
|
|
|
- // "getModelList", {
|
|
|
|
- // 'pageNum': 1,
|
|
|
|
- // 'pageSize': 100,
|
|
|
|
- // type_id: ""
|
|
|
|
- // }
|
|
|
|
- // );
|
|
|
|
- // this.options = res.data.rows
|
|
|
|
- // }, // 获取任务详情
|
|
|
|
- async getTaskDetail() {
|
|
|
|
- var that = this
|
|
|
|
- const {
|
|
|
|
- data: res
|
|
|
|
- } = await this.$http.post("getTaskDetail", {
|
|
|
|
- task_id: that.task_id
|
|
|
|
- });
|
|
|
|
- console.log(res.data.product)
|
|
|
|
- if (res.data.product.length > 0) {
|
|
|
|
- if (res.data.product[0].type_id == '1') {
|
|
|
|
- res.data.model_type = '种植业'
|
|
|
|
- } else if (res.data.product[0].type_id == '2') {
|
|
|
|
- res.data.model_type = '畜牧业'
|
|
|
|
- } else if (res.data.product[0].type_id == '3') {
|
|
|
|
- res.data.model_type = '渔业'
|
|
|
|
- } else {
|
|
|
|
- res.data.model_type = '其他'
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- that.readForm = res.data
|
|
|
|
- console.log(res.data+'11111')
|
|
|
|
-
|
|
|
|
- // this.bindForm.endtime_cydsb = res.data.endtime_cydsb
|
|
|
|
- },
|
|
|
|
- // 任务详情页面返回任务列表
|
|
|
|
- async back() {
|
|
|
|
- this.$router.push('routineMonitor')
|
|
|
|
- },
|
|
|
|
- // 修改检测报告
|
|
|
|
- // async update(){
|
|
|
|
-
|
|
|
|
- // const result = await this.$http.post('editSamplePesticides', {
|
|
|
|
- // sample_id: sample_id,
|
|
|
|
-
|
|
|
|
- // })
|
|
|
|
- // if (result.data.code == 0) {
|
|
|
|
- // that.formjc = result.data.data
|
|
|
|
- // }
|
|
|
|
- // },
|
|
|
|
- // 上传成功
|
|
|
|
- async uploadSuccess(res) {
|
|
|
|
- console.log(res.data)
|
|
|
|
- this.form.file_url = res.data.fileUrl
|
|
|
|
- this.form.file_name = res.data.fileName
|
|
|
|
- const result = await this.$http.post('saveTestFile', {
|
|
|
|
- sample_id: sample_id
|
|
|
|
- })
|
|
|
|
- if (result.data.code == 0) {
|
|
|
|
- that.formjc = result.data.data
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- download() {
|
|
|
|
- htmlToPdf.downloadPDF(document.querySelector('#pdf'), '检测报告')
|
|
|
|
- },
|
|
|
|
- async creatpdf(sample_id) {
|
|
|
|
- var that = this
|
|
|
|
- that.dialogVisible2 = true
|
|
|
|
- // async getSampleDetail() {
|
|
|
|
- const result = await this.$http.post('getSampleDetail', {
|
|
|
|
- sample_id: sample_id
|
|
|
|
- })
|
|
|
|
- if (result.data.code == 0) {
|
|
|
|
- that.formjc = result.data.data
|
|
|
|
- }
|
|
|
|
- const res = await this.$http.post('getTestValue', {
|
|
|
|
- sample_id: sample_id
|
|
|
|
- })
|
|
|
|
- if (res.data.code == 0) {
|
|
|
|
- that.resultjc = res.data.data.result_detail
|
|
|
|
- }
|
|
|
|
- // },
|
|
|
|
-
|
|
|
|
- },
|
|
|
|
- async onSubmit() {
|
|
|
|
- console.log(this.testPesticides)
|
|
|
|
- for (let i = 0; i < this.testPesticides.length; i++) {
|
|
|
|
- this.testPesticides[i]['unit'] = 'mg/kg'
|
|
|
|
- console.log(this.testPesticides[i]['state_value'])
|
|
|
|
- if (this.testPesticides[i]['state_value'] === 'ND') {
|
|
|
|
- if (this.testPesticides[i]['test_value'] !== 'ND') {
|
|
|
|
- this.testPesticides[i]['test_result'] = '不合格'
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- if (this.testPesticides[i]['test_value'] <= this.testPesticides[i]['state_value']) {
|
|
|
|
- this.testPesticides[i]['test_result'] = '合格'
|
|
|
|
- } else if (this.testPesticides[i]['test_value'] > this.testPesticides[i]['state_value']) {
|
|
|
|
- this.testPesticides[i]['test_result'] = '不合格'
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- delete this.testPesticides[i]['test_model_id']
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- var that = this
|
|
|
|
- const result = await this.$http.post("saveSamplePesticides", {
|
|
|
|
- pesticides: that.testPesticides,
|
|
|
|
- sample_id: that.check_id
|
|
|
|
- });
|
|
|
|
- if (result.data.code == 0) {
|
|
|
|
- this.$message({
|
|
|
|
- type: 'success',
|
|
|
|
- message: '检测成功!'
|
|
|
|
- });
|
|
|
|
- that.inputCheckShow = false
|
|
|
|
- that.getSampleList()
|
|
|
|
- } else {
|
|
|
|
- this.$message({
|
|
|
|
- type: 'error',
|
|
|
|
- message: result.data.message
|
|
|
|
- });
|
|
|
|
- that.inputCheckShow = false
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- async check(id, name) {
|
|
|
|
- this.inputCheckShow = true
|
|
|
|
- this.check_id = id,
|
|
|
|
- this.check_name = name
|
|
|
|
- var that = this
|
|
|
|
- const {
|
|
|
|
- data: res
|
|
|
|
- } = await this.$http.post("getTestPesticides", {
|
|
|
|
- sample_id: id
|
|
|
|
- });
|
|
|
|
- that.testPesticides = res.data
|
|
|
|
- },
|
|
|
|
- handleClick(tab, event) {
|
|
|
|
- console.log(tab, event);
|
|
|
|
- },
|
|
|
|
-
|
|
|
|
- // 获取抽样单列表
|
|
|
|
- async getSampleList() {
|
|
|
|
- this.queryInfo['task_id'] = this.task_id
|
|
|
|
- const {
|
|
|
|
- data: res
|
|
|
|
- } = await this.$http.post("getSampleList", this.queryInfo);
|
|
|
|
- // console.log(res)
|
|
|
|
- this.tableData = res.data.rows
|
|
|
|
- for (let i = 0; i < this.tableData.length; i++) {
|
|
|
|
- if (this.tableData[i].status == '0') {
|
|
|
|
- this.tableData[i].status = '未上报'
|
|
|
|
- } else {
|
|
|
|
- this.tableData[i].status = '已上报'
|
|
|
|
- }
|
|
|
|
- if (this.tableData[i].jc_value_id == null) {
|
|
|
|
- this.tableData[i].test_result = '暂未检测'
|
|
|
|
- } else {
|
|
|
|
- if (this.tableData[i].test_result == '0') {
|
|
|
|
- this.tableData[i].test_result = '不合格'
|
|
|
|
- } else if (this.tableData[i].test_result == '1') {
|
|
|
|
- this.tableData[i].test_result = '合格'
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if (this.tableData[i].test_status == '0') {
|
|
|
|
- this.tableData[i].test_status = '未上报'
|
|
|
|
- } else if (this.tableData[i].test_status == '1') {
|
|
|
|
- this.tableData[i].test_status = '已上报'
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- this.total = res.data.total
|
|
|
|
- },
|
|
|
|
- // 跳转到填写抽样单
|
|
|
|
- inputSample() {
|
|
|
|
- this.activeName = 'second'
|
|
|
|
- },
|
|
|
|
- // 填报抽样单
|
|
|
|
- input() {
|
|
|
|
- this.$router.push({
|
|
|
|
- name: 'inputSample',
|
|
|
|
- params: {
|
|
|
|
- id: this.readForm.id
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- },
|
|
|
|
- // 上传抽样信息
|
|
|
|
- async appear() {
|
|
|
|
- let that = this
|
|
|
|
- // that.orgs = that.multipleSelection
|
|
|
|
- console.log(that.multipleSelection)
|
|
|
|
- const result = await this.$http.post('setSampleStatus', that.multipleSelection)
|
|
|
|
- // 判断业务逻辑
|
|
|
|
- if (result.data.code == 0) {
|
|
|
|
- // 判断业务逻辑
|
|
|
|
- if (result.data.code == 0) {
|
|
|
|
- this.$message({
|
|
|
|
- type: 'success',
|
|
|
|
- message: '上报抽样信息成功'
|
|
|
|
- })
|
|
|
|
- this.getSampleList()
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- // 多选删除抽样信息
|
|
|
|
- async delAll() {
|
|
|
|
- let that = this
|
|
|
|
- // that.orgs = that.multipleSelection
|
|
|
|
- console.log(that.multipleSelection)
|
|
|
|
- const result = await this.$http.post('delSample', that.multipleSelection)
|
|
|
|
- // 判断业务逻辑
|
|
|
|
- if (result.data.code == 0) {
|
|
|
|
- this.$message({
|
|
|
|
- type: 'success',
|
|
|
|
- message: '删除成功'
|
|
|
|
- })
|
|
|
|
- this.getSampleList()
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- /** 修复当用户在大于1的分页进行数据搜索没有返回值的问题 */
|
|
|
|
- setPageNum() {
|
|
|
|
- this.queryInfo.pageNum = 1
|
|
|
|
- this.getSampleList()()
|
|
|
|
- },
|
|
|
|
- setSelectedRow() {
|
|
|
|
- // 设置当前页已选项
|
|
|
|
- this.hander = true
|
|
|
|
- this.tableData.forEach(item => {
|
|
|
|
- if (this.list.includes(item[this.uniqueKey])) {
|
|
|
|
- this.$refs.multipleTable.toggleRowSelection(item, true)
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- this.hander = false
|
|
|
|
- },
|
|
|
|
-
|
|
|
|
- /** 监听每页显示多少数据的改变 */
|
|
|
|
- handleSizeChange(newSize) {
|
|
|
|
- this.queryInfo.pageSize = newSize
|
|
|
|
- this.getSampleList()()
|
|
|
|
- },
|
|
|
|
-
|
|
|
|
- /** 监听页码的改变 */
|
|
|
|
- handleCurrentChange(newPage) {
|
|
|
|
- this.queryInfo.pageNum = newPage
|
|
|
|
- this.getSampleList()()
|
|
|
|
- },
|
|
|
|
- // 批量勾选
|
|
|
|
- handleSelectionChange(val) {
|
|
|
|
- this.multipleSelection = val
|
|
|
|
- console.log(this.multipleSelection)
|
|
|
|
- if (this.hander) return false
|
|
|
|
- // this.setSelectRows() // 处理选中的方法
|
|
|
|
- },
|
|
|
|
- // 跳转到查看抽样单详情
|
|
|
|
- sampleDetail(id) {
|
|
|
|
- this.$router.push({
|
|
|
|
- name: 'sampleDetail',
|
|
|
|
- params: {
|
|
|
|
- id: id
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-</script>
|
|
|
|
-
|
|
|
|
-<style lang="less" scoped>
|
|
|
|
- .el-breadcrumb {
|
|
|
|
- margin-bottom: 20px;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // .el-form-item {
|
|
|
|
- // margin-bottom: 0px;
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- .el-select {
|
|
|
|
- width: 210px;
|
|
|
|
- height: 100%;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- .select {
|
|
|
|
- display: flex;
|
|
|
|
- flex-direction: row;
|
|
|
|
- margin-left: 10px;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // .el-form {
|
|
|
|
- // margin-left: 35%;
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- .el-form-item {
|
|
|
|
- margin-left: 15px;
|
|
|
|
- // margin-bottom: 5px;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- .labelItem /deep/ .el-form-item__label {
|
|
|
|
- // width: 80px;
|
|
|
|
- text-align: center;
|
|
|
|
- vertical-align: middle;
|
|
|
|
- float: left;
|
|
|
|
- font-size: 14px;
|
|
|
|
- color: #606266;
|
|
|
|
- font-weight: bold;
|
|
|
|
- // line-height: 40px;
|
|
|
|
- padding: 0 20px 0 0;
|
|
|
|
- -webkit-box-sizing: border-box;
|
|
|
|
- box-sizing: border-box;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- .demonstration {
|
|
|
|
- margin: 20px;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- .el-form-item__content {
|
|
|
|
- // width: 200px;
|
|
|
|
- }
|
|
|
|
- .footer {
|
|
|
|
- margin-top: 20px;
|
|
|
|
- margin-left: 45%;
|
|
|
|
- }
|
|
|
|
- .el-table{
|
|
|
|
- margin-top: 20px;
|
|
|
|
- }
|
|
|
|
- .el-pagination {
|
|
|
|
- margin-top: 25px;
|
|
|
|
- }
|
|
|
|
|
|
+<template>
|
|
|
|
+ <div>
|
|
|
|
+
|
|
|
|
+ <el-breadcrumb separator-class="el-icon-arrow-right">
|
|
|
|
+ <el-breadcrumb-item>首页</el-breadcrumb-item>
|
|
|
|
+ <el-breadcrumb-item :to="{ path: '/jc/routineMonitor' }">任务列表</el-breadcrumb-item>
|
|
|
|
+ <el-breadcrumb-item>基本信息</el-breadcrumb-item>
|
|
|
|
+ </el-breadcrumb>
|
|
|
|
+
|
|
|
|
+ <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
|
|
|
|
+ <el-tab-pane label="任务详情" name="first">
|
|
|
|
+ <el-descriptions class="margin-top" title="例行监测任务" :column="2" :size="size" border>
|
|
|
|
+ <el-descriptions-item>
|
|
|
|
+ <template slot="label">
|
|
|
|
+ 发布单位
|
|
|
|
+ </template>
|
|
|
|
+ {{readForm.releaser}}
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
+ <el-descriptions-item>
|
|
|
|
+ <template slot="label">
|
|
|
|
+ 年度
|
|
|
|
+ </template>
|
|
|
|
+ {{readForm.year}}
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
+ <el-descriptions-item>
|
|
|
|
+ <template slot="label">
|
|
|
|
+ 开始时间和结束时间
|
|
|
|
+ </template>
|
|
|
|
+ {{readForm.starttime}}-{{readForm.endtime}}
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
+ <el-descriptions-item>
|
|
|
|
+ <template slot="label">
|
|
|
|
+ 抽样信息上报截止时间
|
|
|
|
+ </template>
|
|
|
|
+ {{readForm.endtime_cydsb}}
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
+ <el-descriptions-item>
|
|
|
|
+ <template slot="label">
|
|
|
|
+ 监测类型
|
|
|
|
+ </template>
|
|
|
|
+ {{readForm.task_class}}
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
+ <el-descriptions-item>
|
|
|
|
+ <template slot="label">
|
|
|
|
+ 行业
|
|
|
|
+ </template>
|
|
|
|
+ <!-- <div v-if="readForm.product!=[]"> -->
|
|
|
|
+ <span>{{readForm.model_type}}</span>
|
|
|
|
+ <!-- </div> -->
|
|
|
|
+ <!-- <div v-else>暂无</div> -->
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
+ <el-descriptions-item>
|
|
|
|
+ <template slot="label">
|
|
|
|
+ 抽检分离
|
|
|
|
+ </template>
|
|
|
|
+ <span v-if="readForm.is_divide==1">是</span>
|
|
|
|
+ <span v-if="readForm.is_divide==0">否</span>
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
+ <el-descriptions-item>
|
|
|
|
+ <template slot="label">
|
|
|
|
+ 附件
|
|
|
|
+ </template>
|
|
|
|
+ <div v-if="readForm.file_url==null">无</div>
|
|
|
|
+ <el-link v-else type="primary" :href="readForm.file_url">下载附件</el-link>
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
+
|
|
|
|
+ </el-descriptions>
|
|
|
|
+ <el-descriptions class="margin-top" :size="size" border>
|
|
|
|
+ <el-descriptions-item>
|
|
|
|
+ <template slot="label">
|
|
|
|
+ 备注
|
|
|
|
+ </template>
|
|
|
|
+ {{readForm.log}}
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
+ </el-descriptions>
|
|
|
|
+ <el-descriptions class="margin-top" :size="size" border>
|
|
|
|
+ <el-descriptions-item>
|
|
|
|
+
|
|
|
|
+ <template slot="label">
|
|
|
|
+ 检测对象
|
|
|
|
+ </template>
|
|
|
|
+ <span v-for="item in readForm.product">{{item.product_name}}、</span>
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
+ </el-descriptions>
|
|
|
|
+ <el-descriptions class="margin-top" :size="size" border>
|
|
|
|
+ <el-descriptions-item>
|
|
|
|
+ <template slot="label">
|
|
|
|
+ 检测项
|
|
|
|
+ </template>
|
|
|
|
+ <span v-for="item in readForm.pesticides">{{item.test_name}}、</span>
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
+ </el-descriptions>
|
|
|
|
+ <el-table :data="underTask" border stripe highlight-current-row style="width: 100%"
|
|
|
|
+ :row-style="rowStyle" :cell-style="cellStyle">
|
|
|
|
+ <el-table-column :key="table.label" v-for="table in tableHeader2" :label="table.label"
|
|
|
|
+ :prop="table.prop" align="center" :width="table.width" :fixed="table.fixed" />
|
|
|
|
+ </el-table>
|
|
|
|
+ <div class="footer">
|
|
|
|
+ <el-button type="success" size="mini" @click="input()">填报抽样单</el-button>
|
|
|
|
+ <!-- <el-button type="success" size="mini" @click="next">导出总览</el-button> -->
|
|
|
|
+ <el-button type="success" size="mini">返回</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </el-tab-pane>
|
|
|
|
+
|
|
|
|
+ <el-tab-pane v-if="sampleShow==true" label="抽样" name="second">
|
|
|
|
+ <!-- 头部搜索栏 -->
|
|
|
|
+ <el-row style="margin-right: 0px;">
|
|
|
|
+ <el-form style="display: flex; flex-direction: row;">
|
|
|
|
+ <el-form-item label="产品编码" class="select" size="small">
|
|
|
|
+ <el-input v-model="queryInfo.task_name"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="受检单位" class="select" size="small">
|
|
|
|
+ <el-input v-model="queryInfo.task_name"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="抽样编码" class="select" size="small">
|
|
|
|
+ <el-input v-model="queryInfo.task_name"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="样品名称" class="select" size="small">
|
|
|
|
+ <el-input v-model="queryInfo.task_name"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-form>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row style="margin-right: 0px;">
|
|
|
|
+ <el-form style="display: flex; flex-direction: row;">
|
|
|
|
+ <el-form-item label="抽样场所" class="select" size="small">
|
|
|
|
+ <el-input v-model="queryInfo.task_name"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="抽样日期" class="select" size="small">
|
|
|
|
+ <el-input v-model="queryInfo.task_name"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="抽样单位" class="select" size="small">
|
|
|
|
+ <el-input v-model="queryInfo.task_name"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="抽样机构" class="select" size="small">
|
|
|
|
+ <el-input v-model="queryInfo.task_name"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-button style="height: 30px;margin-left: 10px;" size="mini" type="success"
|
|
|
|
+ @click="searchData()">查询
|
|
|
|
+ </el-button>
|
|
|
|
+ <!-- 重置 -->
|
|
|
|
+ <el-button style="height: 30px;margin-left: 5px;" size="mini" type="success" @click="reset()">
|
|
|
|
+ 重置
|
|
|
|
+ </el-button>
|
|
|
|
+ </el-form>
|
|
|
|
+
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row style="margin-right: 0px;">
|
|
|
|
+ <el-form style="display: flex; flex-direction: row;">
|
|
|
|
+ <!-- <el-form-item label="产地" class="select">
|
|
|
|
+ <el-select v-model="value" placeholder="请选择省份" size="small">
|
|
|
|
+ <el-option v-for="item in options" :key="item.value" :label="item.label"
|
|
|
|
+ :value="item.value">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ <el-select v-model="value" placeholder="请选择城市" size="small">
|
|
|
|
+ <el-option v-for="item in options" :key="item.value" :label="item.label"
|
|
|
|
+ :value="item.value">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ <el-select v-model="value" placeholder="请选择区/县" size="small">
|
|
|
|
+ <el-option v-for="item in options" :key="item.value" :label="item.label"
|
|
|
|
+ :value="item.value">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item> -->
|
|
|
|
+ <!-- 查询 -->
|
|
|
|
+
|
|
|
|
+ </el-form>
|
|
|
|
+ <div style="display: flex;flex-direction: row;float: right;">
|
|
|
|
+ <el-button type="primary" size="small" plain icon="el-icon-plus" @click="input()">填报抽样单
|
|
|
|
+ </el-button>
|
|
|
|
+ <el-button type="primary" size="small" plain icon="el-icon-edit-outline" @click="appear">上报抽样信息
|
|
|
|
+ </el-button>
|
|
|
|
+ <!-- <el-button type="primary" size="small" plain icon="el-icon-scissors" @click="repeal()">导出</el-button> -->
|
|
|
|
+ <el-button type="primary" size="small" plain icon="el-icon-delete" @click="delAll">删除
|
|
|
|
+ </el-button>
|
|
|
|
+ <!-- <el-button type="primary" size="small" plain icon="el-icon-download">导出</el-button> -->
|
|
|
|
+ </div>
|
|
|
|
+ </el-row>
|
|
|
|
+
|
|
|
|
+ <!-- 表格数据区域-->
|
|
|
|
+ <el-table ref="multipleTable" :data="tableData" border stripe highlight-current-row
|
|
|
|
+ @selection-change="handleSelectionChange" style="width: 100%" :row-style="rowStyle"
|
|
|
|
+ :cell-style="cellStyle">
|
|
|
|
+ <el-table-column type="selection" width="50"></el-table-column>
|
|
|
|
+ <el-table-column label="序号" width="50px">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ {{ scope.$index+1 }}
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+
|
|
|
|
+ <el-table-column :key="table.label" v-for="table in tableHeader" :label="table.label"
|
|
|
|
+ :prop="table.prop" align="center" :width="table.width" :fixed="table.fixed" />
|
|
|
|
+ <el-table-column label="操作" align="center" fixed="right">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-button type="success" size="small" plain @click="sampleDetail(scope.row.sample_id)">查看
|
|
|
|
+ </el-button>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ <!-- 分页器区域-->
|
|
|
|
+ <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
|
|
|
+ :current-page="queryInfo.pageNum" :page-sizes="[1,10, 15, 20]" :page-size="queryInfo.pageSize"
|
|
|
|
+ layout="total, sizes, prev, pager, next, jumper" :total="total" background />
|
|
|
|
+ </el-tab-pane>
|
|
|
|
+
|
|
|
|
+ <el-tab-pane v-if="checkShow==true" label="检测" name="third">
|
|
|
|
+
|
|
|
|
+ <!-- 表格数据区域-->
|
|
|
|
+ <el-table :data="tableData" border stripe highlight-current-row style="width: 100%"
|
|
|
|
+ :row-style="rowStyle" :cell-style="cellStyle">
|
|
|
|
+ <!-- <el-table-column type="selection" width="50"></el-table-column> -->
|
|
|
|
+ <el-table-column label="序号" width="50px">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ {{ scope.$index+1 }}
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+
|
|
|
|
+ <el-table-column :key="table.label" v-for="table in checkHeader" :label="table.label"
|
|
|
|
+ :prop="table.prop" align="center" :width="table.width" :fixed="table.fixed" />
|
|
|
|
+ <el-table-column label="操作" align="center" fixed="right" width="220px">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-button type="success" size="mini" v-if="scope.row.jc_value_id==null" plain
|
|
|
|
+ @click="check(scope.row.sample_id,scope.row.sample_name)">检测</el-button>
|
|
|
|
+ <el-button type="primary" v-else size="mini" plain @click="update(scope.row)">修改</el-button>
|
|
|
|
+ <el-button type="primary" size="mini" plain @click="upcheck(scope.row.sample_id)">上报
|
|
|
|
+ </el-button>
|
|
|
|
+ <el-button type="primary" size="mini" plain @click="creatpdf(scope.row.sample_id)">生成检测报告
|
|
|
|
+ </el-button>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+
|
|
|
|
+ <!-- 分页器区域-->
|
|
|
|
+ <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
|
|
|
+ :current-page="queryInfo.pageNum" :page-sizes="[1,10, 15, 20]" :page-size="queryInfo.pageSize"
|
|
|
|
+ layout="total, sizes, prev, pager, next, jumper" :total="total" background />
|
|
|
|
+ </el-tab-pane>
|
|
|
|
+ <el-dialog title="填写检测单" :visible.sync="inputCheckShow" width="70%" :close-on-click-modal="false"
|
|
|
|
+ class="dialogItem">
|
|
|
|
+ <span class="demonstration">样品编码:{{check_id}}</span>
|
|
|
|
+ <span class="demonstration">样品名称:{{check_name}}</span>
|
|
|
|
+ <el-button type="success" size="small" plain @click="onSubmit">保存</el-button>
|
|
|
|
+ <span class="demonstration">注意:“不得检出”只能填为“ND”</span>
|
|
|
|
+ <!-- 表格数据区域-->
|
|
|
|
+ <el-table :data="testPesticides" border stripe highlight-current-row style="width: 100%"
|
|
|
|
+ :row-style="rowStyle" :cell-style="cellStyle">
|
|
|
|
+ <el-table-column :key="table.label" v-for="table in checkHeader2" :label="table.label"
|
|
|
|
+ :prop="table.prop" align="center" :width="table.width" :fixed="table.fixed" />
|
|
|
|
+ <el-table-column label="检测值">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-input v-model="scope.row.test_value" size="small" />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column label="限量值">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-input v-model="scope.row.state_value" size="small" />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column label="单位">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <span v-model="scope.row.unit" size="small">mg/kg</span>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column label="抽检结果">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <span v-if="scope.row.test_value<=scope.row.state_value&&scope.row.state_value!='ND'"
|
|
|
|
+ size="small">合格</span>
|
|
|
|
+ <span v-else-if="scope.row.test_value>scope.row.state_value" size="small">不合格</span>
|
|
|
|
+ <span v-else-if="scope.row.test_value=='ND'&&scope.row.state_value=='ND'"
|
|
|
|
+ size="small">合格</span>
|
|
|
|
+ <span v-else-if="scope.row.test_value!='ND'&&scope.row.state_value=='ND'"
|
|
|
|
+ size="small">不合格</span>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column label="LOD">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-input v-model="scope.row.LOD" size="small" />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column label="LOQ">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-input v-model="scope.row.LOQ" />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+
|
|
|
|
+ </el-table>
|
|
|
|
+ </el-dialog>
|
|
|
|
+ <!-- ///////////////////////////////////////////检测报告生成-------难、、、、、、、、、、、、、、、、、、、、、、 -->
|
|
|
|
+ <el-dialog title="生成监测报告" :visible.sync="dialogVisible2" width="50%">
|
|
|
|
+ <div id="pdf">
|
|
|
|
+ <el-form ref="formjc" :model="formjc" label-width="100px"
|
|
|
|
+ style="margin-top: 20px;width: 100%;background-color: aliceblue;padding: 5px;">
|
|
|
|
+ <el-row style="text-align: center; font-size: 23px; margin: 40px 0;">
|
|
|
|
+ 安徽省农业农村厅农产品质量安全例行监测检测报告
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="12">
|
|
|
|
+ <el-form-item label="样品名称" prop="sample_name" class="labelItem" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.sample_name"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="11">
|
|
|
|
+ <el-form-item label="样品编码" prop="sample_id" class="labelItem" style="" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.sample_id"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="12">
|
|
|
|
+ <el-form-item label="型号规格" prop="type" class="labelItem" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.type"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="11">
|
|
|
|
+ <el-form-item label="执行标准" prop="standard" class="labelItem" style="" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.standard"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="12">
|
|
|
|
+ <el-form-item label="生产日期或批号" prop="production_date" class="labelItem" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.production_date"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="11">
|
|
|
|
+ <el-form-item label="产地" prop="place" class="labelItem" style="" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.place"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="12">
|
|
|
|
+ <el-form-item label="产品认证情况" prop="certicfie" class="labelItem" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.certicfie"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="11">
|
|
|
|
+ <el-form-item label="证书编号" prop="certifie_num" class="labelItem" style="" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.certifie_num"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="12">
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="13">
|
|
|
|
+ <el-form-item label="抽样数量" prop="sample_renum" class="labelItem" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.sample_renum"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="10">
|
|
|
|
+ <el-form-item label="单位" prop="sample_num_unit" class="labelItem" size="mini"
|
|
|
|
+ label-width="60px">
|
|
|
|
+ <el-input disabled v-model="formjc.sample_num_unit"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="11">
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="13">
|
|
|
|
+ <el-form-item label="抽样基数" prop="sample_base" class="labelItem" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.sample_base"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="10">
|
|
|
|
+ <el-form-item label="单位" prop="sample_base_unit" class="labelItem" size="mini"
|
|
|
|
+ label-width="60px" clearable>
|
|
|
|
+ <el-input disabled v-model="formjc.sample_base_unit"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col>
|
|
|
|
+ <el-form-item label="抽样场所" prop="sample_ground" class="labelItem" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.sample_ground"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="7"
|
|
|
|
+ style="text-align: center;vertical-align: middle;line-height: 250px;font-size: 14px;">
|
|
|
|
+ <div class="">
|
|
|
|
+ 受检单位情况
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="15">
|
|
|
|
+ <el-form-item label="单位名称" prop="units_name" class="labelItem" style="" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.units_name"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="通讯地址" prop="address" class="labelItem" style="" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.address"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="法定代表人" prop="corporation" class="labelItem" style="" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.corporation"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="受检人" prop="user_name" class="labelItem" style="" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.user_name"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="电话" prop="phone" class="labelItem" style="" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.phone"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="传真" prop="fax" class="labelItem" style="" size="mini">
|
|
|
|
+ <el-input disabled v-model="formjc.fax"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ </el-form>
|
|
|
|
+ <el-table :data="resultjc" border stripe highlight-current-row style="width: 100%"
|
|
|
|
+ :row-style="rowStyle" :cell-style="cellStyle">
|
|
|
|
+ <el-table-column :key="table.label" v-for="table in jcheader" :label="table.label"
|
|
|
|
+ :prop="table.prop" align="center" :width="table.width" :fixed="table.fixed" />
|
|
|
|
+ </el-table>
|
|
|
|
+ </div>
|
|
|
|
+ <el-button @click="dialogVisible2 = false">取 消</el-button>
|
|
|
|
+ <el-button type="primary" @click="download">生成检测报告pdf</el-button>
|
|
|
|
+ </span>
|
|
|
|
+ </el-dialog>
|
|
|
|
+
|
|
|
|
+ <el-tab-pane label="报告上传" name="five">
|
|
|
|
+ <el-upload class="upload-demo" :file-list="fileList" drag :headers="myHeaders"
|
|
|
|
+ action="http://syjcapi.aielab.net/api/v1/ossUpload" :on-success="uploadSuccess" :limit="1">
|
|
|
|
+ <i class="el-icon-upload"></i>
|
|
|
|
+ <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
|
|
|
+ </el-upload>
|
|
|
|
+ </el-tab-pane>
|
|
|
|
+ </el-tabs>
|
|
|
|
+
|
|
|
|
+ </div>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+ import htmlToPdf from '../../assets/js/htmlToPdf.js'
|
|
|
|
+ import inputCheck from './inputCheck'
|
|
|
|
+ const token = window.sessionStorage.getItem('token')
|
|
|
|
+ const name = window.sessionStorage.getItem('name')
|
|
|
|
+ export default {
|
|
|
|
+ name: 'setTask',
|
|
|
|
+ data() {
|
|
|
|
+ return {
|
|
|
|
+ size: 'medium',
|
|
|
|
+ myHeaders: {
|
|
|
|
+ Authorization: 'bearer' + token
|
|
|
|
+ },
|
|
|
|
+ formjc: {},
|
|
|
|
+ dialogVisible2: false,
|
|
|
|
+ activeName: 'first',
|
|
|
|
+ id: 0,
|
|
|
|
+ readForm: {},
|
|
|
|
+ underTask: [],
|
|
|
|
+ underTasktotal: '0',
|
|
|
|
+ queryInfo: {
|
|
|
|
+ pageNum: 1,
|
|
|
|
+ pageSize: 10
|
|
|
|
+ },
|
|
|
|
+ // 填报对话框弹出
|
|
|
|
+ inputDialogShow: false,
|
|
|
|
+ cellStyle: {
|
|
|
|
+ padding: 2 + 'px'
|
|
|
|
+ },
|
|
|
|
+ rowStyle: {
|
|
|
|
+ height: 35 + 'px'
|
|
|
|
+ },
|
|
|
|
+ tableHeader: [{
|
|
|
|
+ label: '样品编码',
|
|
|
|
+ prop: 'sample_id'
|
|
|
|
+ // fixed: 'left'
|
|
|
|
+ }, {
|
|
|
|
+ label: '样品名称',
|
|
|
|
+ prop: 'sample_name',
|
|
|
|
+ // fixed: 'left'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ label: '受检单位',
|
|
|
|
+ prop: 'units_name',
|
|
|
|
+ width: 180
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ label: '样品产地',
|
|
|
|
+ prop: 'place',
|
|
|
|
+ width: 180
|
|
|
|
+ }, {
|
|
|
|
+ label: '抽样日期',
|
|
|
|
+ prop: 'sample_date',
|
|
|
|
+ width: 180
|
|
|
|
+ }, {
|
|
|
|
+ label: '状态',
|
|
|
|
+ prop: 'status',
|
|
|
|
+ width: 180
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
|
|
+ checkHeader: [{
|
|
|
|
+ label: '样品名称',
|
|
|
|
+ prop: 'sample_name',
|
|
|
|
+ // fixed: 'left'
|
|
|
|
+ }, {
|
|
|
|
+ label: '样品编码',
|
|
|
|
+ prop: 'sample_id'
|
|
|
|
+ // fixed: 'left'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ label: '受检单位',
|
|
|
|
+ prop: 'production_name',
|
|
|
|
+ width: 180
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ label: '抽样单位',
|
|
|
|
+ prop: 'sample_unit_name',
|
|
|
|
+ width: 180
|
|
|
|
+ }, {
|
|
|
|
+ label: '检测单位',
|
|
|
|
+ prop: 'units_name',
|
|
|
|
+ width: 180
|
|
|
|
+ }, {
|
|
|
|
+ label: '判定结果',
|
|
|
|
+ prop: 'test_result',
|
|
|
|
+ width: 180
|
|
|
|
+ }, {
|
|
|
|
+ label: '状态',
|
|
|
|
+ prop: 'test_status',
|
|
|
|
+ width: 180
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
|
|
+ checkHeader2: [{
|
|
|
|
+ label: '检测项目',
|
|
|
|
+ prop: 'test_name',
|
|
|
|
+ // fixed: 'left'
|
|
|
|
+ }],
|
|
|
|
+ // 数据表格数据
|
|
|
|
+ tableData: [],
|
|
|
|
+ options: [],
|
|
|
|
+ task_id: '',
|
|
|
|
+ multipleSelection: null,
|
|
|
|
+ // 填报检测对话框
|
|
|
|
+ inputCheckShow: false,
|
|
|
|
+ check_name: '',
|
|
|
|
+ check_id: '',
|
|
|
|
+ testPesticides: [],
|
|
|
|
+ resultjc: [],
|
|
|
|
+ // 模型列表
|
|
|
|
+ options: [],
|
|
|
|
+ bindForm: {
|
|
|
|
+ test_model_id: '',
|
|
|
|
+ closingdate: ''
|
|
|
|
+ },
|
|
|
|
+ jcheader: [{
|
|
|
|
+ label: '检测项目',
|
|
|
|
+ prop: 'test_name',
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ label: '检测值',
|
|
|
|
+ prop: 'test_value',
|
|
|
|
+ }, {
|
|
|
|
+ label: '限量值',
|
|
|
|
+ prop: 'state_value',
|
|
|
|
+ }, {
|
|
|
|
+ label: '单位',
|
|
|
|
+ prop: 'unit',
|
|
|
|
+ }, {
|
|
|
|
+ label: '抽检结果',
|
|
|
|
+ prop: 'test_result'
|
|
|
|
+ }, {
|
|
|
|
+ label: 'LOD',
|
|
|
|
+ prop: 'LOD',
|
|
|
|
+ }, {
|
|
|
|
+ label: 'LOQ',
|
|
|
|
+ prop: 'LOQ',
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
|
|
+ tableHeader2: [{
|
|
|
|
+ label: '抽样机构',
|
|
|
|
+ prop: 'bear_name',
|
|
|
|
+ width: 180,
|
|
|
|
+ }, {
|
|
|
|
+ label: '检测机构',
|
|
|
|
+ prop: 'check_name'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ label: '抽样地区',
|
|
|
|
+ prop: 'address'
|
|
|
|
+ }, {
|
|
|
|
+ label: '抽样数量',
|
|
|
|
+ prop: 'sample_number'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ label: '报告上传单位',
|
|
|
|
+ prop: 'report_name'
|
|
|
|
+ }, {
|
|
|
|
+ label: '报告上传截止时间',
|
|
|
|
+ prop: 'uploadtime'
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
|
|
+ fileList: [],
|
|
|
|
+ total: 0,
|
|
|
|
+ sampleShow: false, //是否展示抽样卡片
|
|
|
|
+ checkShow: false //是否展示检测卡片
|
|
|
|
+ };
|
|
|
|
+ },
|
|
|
|
+ components: {
|
|
|
|
+ inputCheck
|
|
|
|
+ },
|
|
|
|
+ mounted() {},
|
|
|
|
+ created() {
|
|
|
|
+ this.task_id = this.$route.params.id
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ this.getTaskDetail()
|
|
|
|
+ this.getSampleList()
|
|
|
|
+ // this.getmodelList()
|
|
|
|
+ this.getUnderTask()
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ methods: {
|
|
|
|
+ // 获取机构地域表格
|
|
|
|
+ async getUnderTask() {
|
|
|
|
+ this.queryInfo['task_id'] = this.task_id
|
|
|
|
+ const result = await this.$http.post('getUnderTask', this.queryInfo)
|
|
|
|
+ // 判断业务逻辑
|
|
|
|
+ if (result.data.code == 0) {
|
|
|
|
+ this.underTask = result.data.data.rows
|
|
|
|
+ // 抽检分离时判断用户是抽样机构还是检测机构
|
|
|
|
+ for (let i = 0; i < this.underTask.length; i++) {
|
|
|
|
+ if (this.underTask[i].bear_name == name) {
|
|
|
|
+ this.sampleShow = true
|
|
|
|
+ }
|
|
|
|
+ if (this.underTask[i].check_name == name) {
|
|
|
|
+ this.checkShow = true
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ this.underTasktotal = result.data.data.total
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ // 获取模型列表
|
|
|
|
+ // async getmodelList() {
|
|
|
|
+ // const {
|
|
|
|
+ // data: res
|
|
|
|
+ // } = await this.$http.post(
|
|
|
|
+ // "getModelList", {
|
|
|
|
+ // 'pageNum': 1,
|
|
|
|
+ // 'pageSize': 100,
|
|
|
|
+ // type_id: ""
|
|
|
|
+ // }
|
|
|
|
+ // );
|
|
|
|
+ // this.options = res.data.rows
|
|
|
|
+ // }, // 获取任务详情
|
|
|
|
+ async getTaskDetail() {
|
|
|
|
+ var that = this
|
|
|
|
+ const {
|
|
|
|
+ data: res
|
|
|
|
+ } = await this.$http.post("getTaskDetail", {
|
|
|
|
+ task_id: that.task_id
|
|
|
|
+ });
|
|
|
|
+ console.log(res.data.product)
|
|
|
|
+ if (res.data.product.length > 0) {
|
|
|
|
+ if (res.data.product[0].type_id == '1') {
|
|
|
|
+ res.data.model_type = '种植业'
|
|
|
|
+ } else if (res.data.product[0].type_id == '2') {
|
|
|
|
+ res.data.model_type = '畜牧业'
|
|
|
|
+ } else if (res.data.product[0].type_id == '3') {
|
|
|
|
+ res.data.model_type = '渔业'
|
|
|
|
+ } else {
|
|
|
|
+ res.data.model_type = '其他'
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ that.readForm = res.data
|
|
|
|
+ // 抽检不分离
|
|
|
|
+ if (that.readForm.is_divide == 0) {
|
|
|
|
+ this.sampleShow = true
|
|
|
|
+ this.checkShow = true
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ // 上传成功
|
|
|
|
+ async uploadSuccess(res) {
|
|
|
|
+ console.log(res.data)
|
|
|
|
+ this.form.file_url = res.data.fileUrl
|
|
|
|
+ this.form.file_name = res.data.fileName
|
|
|
|
+ const result = await this.$http.post('saveTestFile', {
|
|
|
|
+ sample_id: sample_id
|
|
|
|
+ })
|
|
|
|
+ if (result.data.code == 0) {
|
|
|
|
+ that.formjc = result.data.data
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ download() {
|
|
|
|
+ htmlToPdf.downloadPDF(document.querySelector('#pdf'), '检测报告')
|
|
|
|
+ },
|
|
|
|
+ async creatpdf(sample_id) {
|
|
|
|
+ var that = this
|
|
|
|
+ that.dialogVisible2 = true
|
|
|
|
+ // async getSampleDetail() {
|
|
|
|
+ const result = await this.$http.post('getSampleDetail', {
|
|
|
|
+ sample_id: sample_id
|
|
|
|
+ })
|
|
|
|
+ if (result.data.code == 0) {
|
|
|
|
+ that.formjc = result.data.data
|
|
|
|
+ }
|
|
|
|
+ const res = await this.$http.post('getTestValue', {
|
|
|
|
+ sample_id: sample_id
|
|
|
|
+ })
|
|
|
|
+ if (res.data.code == 0) {
|
|
|
|
+ that.resultjc = res.data.data.result_detail
|
|
|
|
+ }
|
|
|
|
+ // },
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ async onSubmit() {
|
|
|
|
+ console.log(this.testPesticides)
|
|
|
|
+ for (let i = 0; i < this.testPesticides.length; i++) {
|
|
|
|
+ this.testPesticides[i]['unit'] = 'mg/kg'
|
|
|
|
+ console.log(this.testPesticides[i]['state_value'])
|
|
|
|
+ if (this.testPesticides[i]['state_value'] === 'ND') {
|
|
|
|
+ if (this.testPesticides[i]['test_value'] !== 'ND') {
|
|
|
|
+ this.testPesticides[i]['test_result'] = '不合格'
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ if (this.testPesticides[i]['test_value'] <= this.testPesticides[i]['state_value']) {
|
|
|
|
+ this.testPesticides[i]['test_result'] = '合格'
|
|
|
|
+ } else if (this.testPesticides[i]['test_value'] > this.testPesticides[i]['state_value']) {
|
|
|
|
+ this.testPesticides[i]['test_result'] = '不合格'
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ delete this.testPesticides[i]['test_model_id']
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var that = this
|
|
|
|
+ const result = await this.$http.post("saveSamplePesticides", {
|
|
|
|
+ pesticides: that.testPesticides,
|
|
|
|
+ sample_id: that.check_id
|
|
|
|
+ });
|
|
|
|
+ if (result.data.code == 0) {
|
|
|
|
+ this.$message({
|
|
|
|
+ type: 'success',
|
|
|
|
+ message: '检测成功!'
|
|
|
|
+ });
|
|
|
|
+ that.inputCheckShow = false
|
|
|
|
+ that.getSampleList()
|
|
|
|
+ } else {
|
|
|
|
+ this.$message({
|
|
|
|
+ type: 'error',
|
|
|
|
+ message: result.data.message
|
|
|
|
+ });
|
|
|
|
+ that.inputCheckShow = false
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ async check(id, name) {
|
|
|
|
+ this.inputCheckShow = true
|
|
|
|
+ this.check_id = id,
|
|
|
|
+ this.check_name = name
|
|
|
|
+ var that = this
|
|
|
|
+ const {
|
|
|
|
+ data: res
|
|
|
|
+ } = await this.$http.post("getTestPesticides", {
|
|
|
|
+ sample_id: id
|
|
|
|
+ });
|
|
|
|
+ that.testPesticides = res.data
|
|
|
|
+ },
|
|
|
|
+ handleClick(tab, event) {
|
|
|
|
+ console.log(tab, event);
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ // 获取抽样单列表
|
|
|
|
+ async getSampleList() {
|
|
|
|
+ this.queryInfo['task_id'] = this.task_id
|
|
|
|
+ const {
|
|
|
|
+ data: res
|
|
|
|
+ } = await this.$http.post("getSampleList", this.queryInfo);
|
|
|
|
+ // console.log(res)
|
|
|
|
+ this.tableData = res.data.rows
|
|
|
|
+ for (let i = 0; i < this.tableData.length; i++) {
|
|
|
|
+ if (this.tableData[i].status == '0') {
|
|
|
|
+ this.tableData[i].status = '未上报'
|
|
|
|
+ } else {
|
|
|
|
+ this.tableData[i].status = '已上报'
|
|
|
|
+ }
|
|
|
|
+ if (this.tableData[i].jc_value_id == null) {
|
|
|
|
+ this.tableData[i].test_result = '暂未检测'
|
|
|
|
+ } else {
|
|
|
|
+ if (this.tableData[i].test_result == '0') {
|
|
|
|
+ this.tableData[i].test_result = '不合格'
|
|
|
|
+ } else if (this.tableData[i].test_result == '1') {
|
|
|
|
+ this.tableData[i].test_result = '合格'
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (this.tableData[i].test_status == '0') {
|
|
|
|
+ this.tableData[i].test_status = '未上报'
|
|
|
|
+ } else if (this.tableData[i].test_status == '1') {
|
|
|
|
+ this.tableData[i].test_status = '已上报'
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ this.total = res.data.total
|
|
|
|
+ },
|
|
|
|
+ // 跳转到填写抽样单
|
|
|
|
+ inputSample() {
|
|
|
|
+ this.activeName = 'second'
|
|
|
|
+ },
|
|
|
|
+ // 填报抽样单
|
|
|
|
+ input() {
|
|
|
|
+ this.$router.push({
|
|
|
|
+ name: 'inputSample',
|
|
|
|
+ params: {
|
|
|
|
+ id: this.readForm.id
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ // 上传抽样信息
|
|
|
|
+ async appear() {
|
|
|
|
+ let that = this
|
|
|
|
+ // that.orgs = that.multipleSelection
|
|
|
|
+ console.log(that.multipleSelection)
|
|
|
|
+ const result = await this.$http.post('setSampleStatus', that.multipleSelection)
|
|
|
|
+ // 判断业务逻辑
|
|
|
|
+ if (result.data.code == 0) {
|
|
|
|
+ // 判断业务逻辑
|
|
|
|
+ if (result.data.code == 0) {
|
|
|
|
+ this.$message({
|
|
|
|
+ type: 'success',
|
|
|
|
+ message: '上报抽样信息成功'
|
|
|
|
+ })
|
|
|
|
+ this.getSampleList()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ // 多选删除抽样信息
|
|
|
|
+ async delAll() {
|
|
|
|
+ let that = this
|
|
|
|
+ // that.orgs = that.multipleSelection
|
|
|
|
+ console.log(that.multipleSelection)
|
|
|
|
+ const result = await this.$http.post('delSample', that.multipleSelection)
|
|
|
|
+ // 判断业务逻辑
|
|
|
|
+ if (result.data.code == 0) {
|
|
|
|
+ this.$message({
|
|
|
|
+ type: 'success',
|
|
|
|
+ message: '删除成功'
|
|
|
|
+ })
|
|
|
|
+ this.getSampleList()
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ /** 修复当用户在大于1的分页进行数据搜索没有返回值的问题 */
|
|
|
|
+ setPageNum() {
|
|
|
|
+ this.queryInfo.pageNum = 1
|
|
|
|
+ this.getSampleList()()
|
|
|
|
+ },
|
|
|
|
+ setSelectedRow() {
|
|
|
|
+ // 设置当前页已选项
|
|
|
|
+ this.hander = true
|
|
|
|
+ this.tableData.forEach(item => {
|
|
|
|
+ if (this.list.includes(item[this.uniqueKey])) {
|
|
|
|
+ this.$refs.multipleTable.toggleRowSelection(item, true)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ this.hander = false
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ /** 监听每页显示多少数据的改变 */
|
|
|
|
+ handleSizeChange(newSize) {
|
|
|
|
+ this.queryInfo.pageSize = newSize
|
|
|
|
+ this.getSampleList()()
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ /** 监听页码的改变 */
|
|
|
|
+ handleCurrentChange(newPage) {
|
|
|
|
+ this.queryInfo.pageNum = newPage
|
|
|
|
+ this.getSampleList()()
|
|
|
|
+ },
|
|
|
|
+ // 批量勾选
|
|
|
|
+ handleSelectionChange(val) {
|
|
|
|
+ this.multipleSelection = val
|
|
|
|
+ console.log(this.multipleSelection)
|
|
|
|
+ if (this.hander) return false
|
|
|
|
+ // this.setSelectRows() // 处理选中的方法
|
|
|
|
+ },
|
|
|
|
+ // 跳转到查看抽样单详情
|
|
|
|
+ sampleDetail(id) {
|
|
|
|
+ this.$router.push({
|
|
|
|
+ name: 'sampleDetail',
|
|
|
|
+ params: {
|
|
|
|
+ id: id
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+</script>
|
|
|
|
+
|
|
|
|
+<style lang="less" scoped>
|
|
|
|
+ .el-breadcrumb {
|
|
|
|
+ margin-bottom: 20px;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // .el-form-item {
|
|
|
|
+ // margin-bottom: 0px;
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ .el-select {
|
|
|
|
+ width: 210px;
|
|
|
|
+ height: 100%;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .select {
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: row;
|
|
|
|
+ margin-left: 10px;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // .el-form {
|
|
|
|
+ // margin-left: 35%;
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ // .el-form-item {
|
|
|
|
+ // // margin-bottom: 8px;
|
|
|
|
+ // margin: 0 auto;
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ // .labelItem /deep/ .el-form-item__label {
|
|
|
|
+ // // width: 80px;
|
|
|
|
+ // text-align: center;
|
|
|
|
+ // vertical-align: middle;
|
|
|
|
+ // float: left;
|
|
|
|
+ // font-size: 14px;
|
|
|
|
+ // color: #606266;
|
|
|
|
+ // font-weight: bold;
|
|
|
|
+ // // line-height: 40px;
|
|
|
|
+ // padding: 0 20px 0 0;
|
|
|
|
+ // -webkit-box-sizing: border-box;
|
|
|
|
+ // box-sizing: border-box;
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ .demonstration {
|
|
|
|
+ margin: 20px;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .el-form-item__content {
|
|
|
|
+ // width: 200px;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .footer {
|
|
|
|
+ margin-top: 20px;
|
|
|
|
+ margin-left: 45%;
|
|
|
|
+ }
|
|
</style>
|
|
</style>
|