| | |
| | | <template> |
| | | <div> |
| | | <div v-if="!showDetail"> |
| | | <div> |
| | | <div class="content-main"> |
| | | <div class="top-bar"> |
| | | <el-form ref="form" :inline="true" :model="searchData"> |
| | | <el-form-item label="委托编号:" class="sermargin"> |
| | | <el-input v-model="searchData.code" class="input-form" placeholder="请输入"> |
| | | <el-input size="small" v-model="searchData.code" class="input-form" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="样品名称:" class="sermargin"> |
| | | <el-input v-model="searchData.name" class="input-form" placeholder="请输入"> |
| | | <el-input size="small" v-model="searchData.name" class="input-form" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="委托单位:" style="margin-right: 20px;"> |
| | | <el-select v-model="searchData.department" placeholder="全部"> |
| | | <el-select v-model="searchData.department" 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-item> |
| | | <el-button type="primary" @click="search">查询</el-button> |
| | | <el-button type="primary" plain @click="reset">重置</el-button> |
| | | <el-button type="primary" size="small" @click="search">查询</el-button> |
| | | <el-button type="primary" size="small" plain @click="reset">重置</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-form> |
| | | <el-popover placement="left" width="350" trigger="click"> |
| | | <el-popover placement="left" width="410" trigger="click"> |
| | | <div class="vue_qr_div"> |
| | | <el-row> |
| | | <el-col> |
| | | <el-input v-model="view" readonly size="medium" style="width: 250px;margin-right: 10px;"></el-input> |
| | | <el-button size="small" type="primary" v-if="viewId==null" @click="viewDia=true">生成</el-button> |
| | | <el-button size="small" type="primary" v-else-if="viewId!=null" @click="copy">复制</el-button> |
| | | <el-button size="small" type="primary" @click="viewDia=true">生成</el-button> |
| | | <el-button size="small" type="primary" @click="copy">复制</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="margin-top: 10px;"> |
| | | <el-col v-if="viewId==null">当前链接已过期,请点击生成按钮重新生成</el-col> |
| | | <el-col |
| | | v-else-if="viewId!=null">当前链接将在{{(parseInt(viewTime)/60/60)>1?(parseInt(viewTime)/60/60).toFixed(1)+'小时':Math.round(parseInt(viewTime)/60)+'分钟'}}后过期</el-col> |
| | | v-else-if="viewId!=null">当前链接将在{{(parseInt(viewTime2)/60/60)>1?(parseInt(viewTime2)/60/60).toFixed(1)+'小时':Math.round(parseInt(viewTime2)/60)+'分钟'}}后过期</el-col> |
| | | </el-row> |
| | | </div> |
| | | <el-button slot="reference" class="rightBtn" type="primary" @click="goToaddCommision">新增委托</el-button> |
| | | <el-button size="small" slot="reference" class="rightBtn" type="primary" @click="goToaddCommision">新增委托</el-button> |
| | | </el-popover> |
| | | </el-form> |
| | | </div> |
| | |
| | | </el-radio-group> |
| | | </div> |
| | | <div class="generateInsp"> |
| | | <el-button type="primary" size="mini" icon="el-icon-document" |
| | | <el-button @click="addReportBtn" type="primary" size="mini" icon="el-icon-document" |
| | | style="background-color: rgb(1, 102, 226);">生成报检单</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table-box"> |
| | | <el-table ref="commisionTable" :max-height="800" :cell-style="{textAlign: 'center'}" |
| | | :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" |
| | | :data="commisionTable" style="width: 100%"> |
| | | <el-table-column type="selection" min-width="10%" /> |
| | | <el-table ref="commisionTable" :max-height="800" :cell-style="{textAlign: 'left'}" |
| | | :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'left'}" |
| | | :data="commisionTable" @selection-change="handleSelectionChange" style="width: 100%"> |
| | | <el-table-column type="selection" :selectable="checkSelect" min-width="10%" /> |
| | | <el-table-column type="index" label="序号" min-width="10%" /> |
| | | <el-table-column prop="entrust_coding" label="委托编号" min-width="10%" /> |
| | | <el-table-column prop="entrusted" label="委托单位" min-width="12%" /> |
| | | <el-table-column prop="samples_number" label="样品编号" min-width="8%" /> |
| | | <el-table-column prop="samples_number" label="样品数量" min-width="8%" /> |
| | | <el-table-column prop="sample_name" label="样品名称" min-width="8%" /> |
| | | <el-table-column prop="specifications_models" label="规格型号" min-width="12%" /> |
| | | <el-table-column prop="dateSurvey" label="送达时间" min-width="8%" /> |
| | | <el-table-column prop="speName" label="规格型号" min-width="12%" /> |
| | | <el-table-column prop="inspectionTime" label="送样时间" min-width="8%" /> |
| | | <el-table-column prop="completionDeadline" label="完成期限" min-width="8%" /> |
| | | <el-table-column prop="contacts" label="委托编制人" min-width="8%" /> |
| | | <el-table-column prop="inspectionTime" label="检验日期" min-width="8%" /> |
| | | <el-table-column prop="inspection_status" label="状态" min-width="8%"> |
| | | <template slot-scope="scope"> |
| | | <div v-if="scope.row.inspection_status === 1"> |
| | | <span style="color: green;">已检测</span> |
| | | <div v-if="scope.row.inspection_status === 2"> |
| | | <span style="color: green;">已报检</span> |
| | | </div> |
| | | <div v-else> |
| | | <span style="color: red;">待检测</span> |
| | | <span style="color: red;">未报检</span> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div v-else> |
| | | <router-view /> |
| | | </div> |
| | | <el-dialog title="链接时长设置" :visible.sync="viewDia" width="30%"> |
| | | <div> |
| | |
| | | </el-dialog> |
| | | <!-- 隐藏域输入框用来复制 --> |
| | | <input id="copyContext" style="position: absolute;top: 0;left: 0;opacity: 0;z-index: -10;" /> |
| | | <el-dialog title="选择日期" :visible.sync="addReportDialog" width="60%"> |
| | | <el-form :model="addInspectionForm" :rules="addInspectionFormRules" ref="addInspectionForm"> |
| | | <el-form-item label="检验日期" label-width="100px" prop="inspectionDate"> |
| | | <el-date-picker v-model="addInspectionForm.inspectionDate" type="daterange" value-format="yyyy-MM-dd" |
| | | range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="当前版本" label-width="100px" prop="version"> |
| | | <el-select @change="changeVersionFun" v-model="addInspectionForm.version" placeholder="请选择版本"> |
| | | <el-option v-for="item in chooseVersion" :key="item.value" :label="item.label" :value="item.value" ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-table |
| | | style="width:90%;margin-left:5%" :data="standardLibraryData" row-key="id" border |
| | | default-expand-all :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"> |
| | | <el-table-column type="index" width="50px" label="序号"></el-table-column> |
| | | <el-table-column label="项目名称" prop="name" sortable></el-table-column> |
| | | <el-table-column prop="unit" label="单位" sortable></el-table-column> |
| | | <el-table-column label="标准值" prop="required" sortable></el-table-column> |
| | | <el-table-column prop="internal" label="内控值" sortable></el-table-column> |
| | | </el-table> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="resetForm('addInspectionForm')">取 消</el-button> |
| | | <el-button type="primary" @click="confirmBtn('addInspectionForm')">确 定</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | import { |
| | | getCommisionList, |
| | | getViewUUID, |
| | | selectViewUUID |
| | | selectViewUUID, |
| | | delLink, |
| | | chooseVersion, |
| | | lookProByVer, |
| | | addInspect |
| | | } from '@/api/inspection/commisioninspection' |
| | | export default { |
| | | data() { |
| | | return { |
| | | standardLibraryData:[], |
| | | chooseVersion: [], |
| | | addInspectionForm: { |
| | | inspectionDate: [], |
| | | version: null |
| | | }, |
| | | addInspectionFormRules: { |
| | | inspectionDate: [{ |
| | | required: true, |
| | | message: '请选择日期区间', |
| | | trigger: 'change' |
| | | }], |
| | | }, |
| | | addReportDialog: false, |
| | | checkData: [], |
| | | form: [], |
| | | searchData: { |
| | | code: '', |
| | |
| | | value: '1', |
| | | label: '部门1' |
| | | }], |
| | | radioValue: 0, |
| | | radioValue: null, |
| | | commisionTable: [{ |
| | | specifications_models: "GGXH-AAAAA", |
| | | inspectionTime: "2023-08-03", |
| | |
| | | }], |
| | | conditionsOptions: [{ |
| | | label: '全部', |
| | | value: 0 |
| | | value: null |
| | | }, |
| | | { |
| | | label: '已检验', |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: '待检验', |
| | | label: '已报检', |
| | | value: 2 |
| | | }, |
| | | { |
| | | label: '未报检', |
| | | value: 1 |
| | | } |
| | | ], |
| | | currentPage: 1, |
| | |
| | | view: null, |
| | | viewId: null, |
| | | viewTime: 1, |
| | | viewTime2: 1, |
| | | viewDia: false |
| | | } |
| | | }, |
| | | watch:{ |
| | | addReportDialog(newVal){ |
| | | if(newVal === false){ |
| | | this.resetForm("addInspectionForm"); |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | }, |
| | | updated() { |
| | | if (this.$router.currentRoute.name === 'AddCommision') { |
| | | // console.log(this.$router.currentRoute.name) |
| | | this.showDetail = true |
| | | } |
| | | }, |
| | | methods: { |
| | | resetForm(formName) { |
| | | this.addInspectionForm.inspectionDate = [], |
| | | this.$refs[formName].resetFields(); |
| | | this.addReportDialog = false |
| | | }, |
| | | checkSelect(row) { |
| | | if (row.inspection_status === 2) { |
| | | return false; |
| | | } else { |
| | | return true; |
| | | } |
| | | }, |
| | | handleSelectionChange(val) { |
| | | if (val.length > 1) { |
| | | let data = val.pop(); |
| | | this.$refs.commisionTable.clearSelection(); |
| | | this.$refs.commisionTable.toggleRowSelection(data); |
| | | this.checkData = data; |
| | | }else{ |
| | | this.checkData = val; |
| | | } |
| | | }, |
| | | //生成报检单确认按钮 |
| | | confirmBtn(formName) { |
| | | this.$refs[formName].validate((valid)=>{ |
| | | if(valid){ |
| | | let dateArr = this.addInspectionForm.inspectionDate; |
| | | //添加报检单 |
| | | let val = this.checkData[0]; |
| | | let obj = { |
| | | "endTime": dateArr[1], |
| | | "mcode":"mcode", |
| | | "formTime": val.inspectionTime, |
| | | "id": val.id, |
| | | "name": val.sample_name, |
| | | "num": val.samples_number, |
| | | "specifications": val.speName, |
| | | "startTime": dateArr[0], |
| | | "supplier": val.entrusted, |
| | | "type": 2, |
| | | // "unit": "mm", |
| | | "version": this.addInspectionForm.version |
| | | } |
| | | this.createReport(obj); |
| | | this.addReportDialog = false; |
| | | } |
| | | }); |
| | | }, |
| | | //生成报检单请求 |
| | | async createReport(param) { |
| | | await addInspect(param).then(res =>{ |
| | | this.search(); |
| | | this.$message.success('报检成功') |
| | | this.$router.push(`/experiment/Viewdetails/${res.data}`) |
| | | }).catch(()=>{ |
| | | this.$message.error('报检失败') |
| | | }); |
| | | }, |
| | | //生成报检单按钮 |
| | | addReportBtn() { |
| | | if (this.checkData.length < 1) { |
| | | this.$message.error("请选择一条数据!"); |
| | | } else { |
| | | if (this.checkData.length > 1) { |
| | | this.$message.error("最多选择一条数据!"); |
| | | } else { |
| | | let mcode = this.checkData[0].entrust_coding; |
| | | let name = this.checkData[0].sample_name; |
| | | let specifications = this.checkData[0].speName; |
| | | let id = this.checkData[0].id; |
| | | this.getChooseVersionFun(mcode,name,specifications,id); |
| | | this.addReportDialog = true; |
| | | } |
| | | } |
| | | }, |
| | | changeVersionFun(){ |
| | | let mCode = this.checkData[0].entrust_coding; |
| | | let name = this.checkData[0].sample_name; |
| | | let specifications = this.checkData[0].speName; |
| | | let version = this.addInspectionForm.version; |
| | | let id = this.checkData[0].id; |
| | | this.getProByVersion(mCode,name,specifications,version,id); |
| | | }, |
| | | //获取版本下的标准库数据 |
| | | async getProByVersion(mCode,name,specifications,version,id){ |
| | | var vm = this; |
| | | await lookProByVer({ |
| | | id : id, |
| | | mcode : mCode, |
| | | name : name, |
| | | specifications : specifications, |
| | | version: version |
| | | }).then((res)=>{ |
| | | var data = res.data; |
| | | for(var i=0;i<data.length;i++){ |
| | | data[i].id = "0" + i; |
| | | } |
| | | vm.standardLibraryData = res.data; |
| | | }) |
| | | }, |
| | | //获取版本列表 |
| | | async getChooseVersionFun(mCode,name,specifications,id){ |
| | | var vm = this; |
| | | this.chooseVersion = []; |
| | | await chooseVersion({ |
| | | id : id, |
| | | name : name, |
| | | specifications : specifications |
| | | }).then((res)=>{ |
| | | vm.getProByVersion(mCode,name,specifications,res.data[0],id); |
| | | for(let i=0;i<res.data.length;i++){ |
| | | vm.chooseVersion.push({ |
| | | value: res.data[i], |
| | | label: "V"+res.data[i] |
| | | }); |
| | | } |
| | | vm.addInspectionForm.version = res.data[0]; |
| | | }); |
| | | }, |
| | | async getCommisionList() { |
| | | const res = await getCommisionList({ |
| | | pageNo: this.currentPage, |
| | |
| | | }) |
| | | this.commisionTable = res.data.row |
| | | this.total = res.data.total |
| | | // console.log(res) |
| | | // 获取所有的委托单位名称 |
| | | const allDepartmentNames = [...new Set(this.commisionTable.map(item => item.entrusted))] |
| | | // 将allDepartmentNames转换为options需要的格式 |
| | |
| | | inspectionStatus: this.radioValue |
| | | }) |
| | | } |
| | | // console.log(res) |
| | | this.commisionTable = res.data.row |
| | | this.total = res.data.total |
| | | }, |
| | | |
| | | // 重置方法 |
| | | reset() { |
| | | // 重置搜索条件 |
| | |
| | | }, |
| | | async radioclick() { |
| | | // 处理点击radio的时间 |
| | | console.log('radioValue', this.radioValue) |
| | | if (this.radioValue === 0) { |
| | | this.getCommisionList() |
| | | } else { |
| | | const res = await getCommisionList({ |
| | | pageNo: this.currentPage, |
| | | pageSize: this.pageSize, |
| | | inspectionStatus: this.radioValue |
| | | }) |
| | | // console.log(res) |
| | | this.commisionTable = res.data.row |
| | | this.total = res.data.total |
| | | } else if(this.radioValue === 1) { |
| | | const res = await getCommisionList({ |
| | | pageNo: this.currentPage, |
| | | pageSize: this.pageSize, |
| | | inspectionStatus: this.radioValue |
| | | }) |
| | | this.commisionTable = res.data.row |
| | | this.total = res.data.total |
| | | }else{ |
| | | this.getCommisionList(); |
| | | } |
| | | |
| | | }, |
| | | // 每页条数改变时触发 选择一页显示多少行 |
| | | async handleSizeChange(val) { |
| | | // console.log(`每页 ${val} 条`) |
| | | this.currentPage = 1 |
| | | this.pageSize = val |
| | | if (this.radioValue === 0) { |
| | |
| | | }, |
| | | // 当前页改变时触发 跳转其他页 |
| | | async handleCurrentChange(val) { |
| | | // console.log(`当前页: ${val}`) |
| | | this.currentPage = val |
| | | if (this.radioValue === 0) { |
| | | this.getCommisionList() |
| | |
| | | selectViewUUID({ |
| | | day: this.day |
| | | }).then(res => { |
| | | this.view = `${this.vueIp}addCommision/${res.data.id}` |
| | | this.view = `${this.vueIp}/#/addCommision/${res.data.id}` |
| | | this.viewId = res.data.id |
| | | this.viewTime = res.data.time |
| | | this.viewTime2 = res.data.time |
| | | }) |
| | | }, |
| | | getViewId() { |
| | |
| | | day: this.viewTime == null ? 1 : this.viewTime |
| | | }).then(res => { |
| | | this.viewId = res.data |
| | | this.view = `${this.vueIp}addCommision/${res.data.id}` |
| | | this.view = `${this.vueIp}/#/addCommision/${res.data.id}` |
| | | this.viewDia = false |
| | | this.$message.success('链接已生成,点击复制按钮进行复制') |
| | | }) |
| | |
| | | if (document.execCommand('copy')) { |
| | | this.$message.success('已复制到剪贴板') |
| | | } |
| | | }, |
| | | handleClick(row){ |
| | | delLink({ |
| | | id: row.id |
| | | }).then(res=>{ |
| | | this.$message.success('删除成功') |
| | | this.getCommisionList() |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | <style scoped lang="scss"> |
| | | .top-bar { |
| | | margin: -25px -15px; |
| | | background: #fff; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | padding: 5px 24px 0px 24px; |
| | | padding: 24px 24px 0px 24px; |
| | | |
| | | .sermargin { |
| | | margin-right: 60px; |