¶Ô±ÈÐÂÎļþ |
| | |
| | | // è´¨éçæ§è®¡å页é¢ç¸å
³æ¥å£ |
| | | import request from '@/utils/request' |
| | | |
| | | // çæ§å¹´åº¦è®¡åå表 |
| | | export function pageQualityMonitor(query) { |
| | | return request({ |
| | | url: '/qualityMonitor/pageQualityMonitor', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | // çæ§è®¡åå®¡æ ¸ |
| | | export function examineQualityMonitor(query) { |
| | | return request({ |
| | | url: '/qualityMonitor/examineQualityMonitor', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | // çæ§è®¡åæ¹å |
| | | export function ratifyQualityMonitor(query) { |
| | | return request({ |
| | | url: '/qualityMonitor/ratifyQualityMonitor', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | // æ¹å宿æ¥å |
| | | export function ratifyFinishReport(query) { |
| | | return request({ |
| | | url: '/qualityMonitor/ratifyFinishReport', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | // 导åºçæ§è®¡å |
| | | export function exportQualityMonitorDetail(query) { |
| | | return request({ |
| | | url: '/qualityMonitor/exportQualityMonitorDetail', |
| | | method: 'get', |
| | | params: query, |
| | | responseType: "blob" |
| | | }) |
| | | } |
| | | // å é¤çç£è®¡å |
| | | export function delQualitySupervise(query) { |
| | | return request({ |
| | | url: '/qualityMonitor/delQualitySupervise', |
| | | method: 'delete', |
| | | params: query |
| | | }) |
| | | } |
| | | // çæ§è®¡å详æ
å表 |
| | | export function pageQualityMonitorDetail(query) { |
| | | return request({ |
| | | url: '/qualityMonitor/pageQualityMonitorDetail', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | // è´¨éçæ§å®æ½è®¡åå¯¼åº |
| | | export function exportQualityMonitorRatify(query) { |
| | | return request({ |
| | | url: '/qualityMonitor/exportQualityMonitorRatify', |
| | | method: 'get', |
| | | params: query, |
| | | responseType: "blob" |
| | | }) |
| | | } |
| | | // è´¨éçæ§è¯ä»·å¯¼åº |
| | | export function exportQualityMonitorEvaluate(query) { |
| | | return request({ |
| | | url: '/qualityMonitor/exportQualityMonitorEvaluate', |
| | | method: 'get', |
| | | params: query, |
| | | responseType: "blob" |
| | | }) |
| | | } |
| | | // å é¤çæ§è®¡å详æ
|
| | | export function delQualityMonitorDetail(query) { |
| | | return request({ |
| | | url: '/qualityMonitor/delQualityMonitorDetail', |
| | | method: 'delete', |
| | | params: query |
| | | }) |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog :visible.sync="filesDialogVisible" title="éä»¶ä¸ä¼ " width="80%" @closed="closeFilesLook"> |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <el-upload ref='upload' |
| | | :action="fileAction" |
| | | :auto-upload="true" |
| | | :before-upload="fileBeforeUpload" :data="{detailsEvaluateId: info.detailsEvaluateId}" |
| | | :headers="headers" :on-error="onError" |
| | | :on-success="handleSuccessUp" |
| | | :show-file-list="false" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' style="width: 80px !important;"> |
| | | <el-button size="small" style="height: 38px" type="primary">éä»¶ä¸ä¼ </el-button> |
| | | </el-upload> |
| | | </div> |
| | | <div> |
| | | <lims-table :tableData="tableData" :column="columnData" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 270px)'" key="tableData"></lims-table> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog |
| | | :visible.sync="lookDialogVisible" |
| | | fullscreen |
| | | title="æ¥çéä»¶" width="800px"> |
| | | <filePreview v-if="lookDialogVisible" :currentFile="{}" |
| | | :fileUrl="javaApi+'/word/'+currentInfo.fileUrl" style="height: 90vh;overflow-y: auto;top: 0"/> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import file from '@/utils/file'; |
| | | import filePreview from '@/components/Preview/filePreview.vue'; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | |
| | | export default { |
| | | name: 'ViewRecord', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {limsTable, filePreview }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | filesDialogVisible: false, |
| | | tableLoading: false, |
| | | filesLookInfo: {}, |
| | | columnData: [ |
| | | { |
| | | label: 'æä»¶åç§°', |
| | | prop: 'fileName', |
| | | minWidth: '150px' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | minWidth: '100', |
| | | label: 'æä½', |
| | | fixed: 'right', |
| | | operation: [ |
| | | { |
| | | name: 'é¢è§', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleLook(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'ä¸è½½', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.upload(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delete(row) |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | info: {}, |
| | | currentInfo:{}, |
| | | lookDialogVisible: false, |
| | | }; |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | openDia(row) { |
| | | this.filesDialogVisible = true |
| | | this.info = row |
| | | this.searchTableList() |
| | | }, |
| | | // æ¥è¯¢éä»¶å表 |
| | | searchTableList () { |
| | | this.tableLoading = true |
| | | this.$axios.get(this.$api.qualityMonitor.getEvaluateFileList + '?detailsEvaluateId=' + this.info.detailsEvaluateId).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.tableData = res.data |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | closeFilesLook () { |
| | | this.filesDialogVisible = false |
| | | }, |
| | | // ä¸è½½ |
| | | upload (row) { |
| | | let url = ''; |
| | | if(row.type==1){ |
| | | url = this.javaApi+'/img/'+row.fileUrl |
| | | file.downloadIamge(url,row.fileName) |
| | | }else{ |
| | | url = this.javaApi+'/word/'+row.fileUrl |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = row.fileName; |
| | | link.click(); |
| | | } |
| | | }, |
| | | // å é¤ |
| | | delete (row) { |
| | | this.tableLoading = true |
| | | this.$axios.get(this.$api.qualityMonitor.delVerifyEvaluateFileList + '?evaluateFileId=' + row.evaluateFileId).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('å 餿å') |
| | | this.searchTableList() |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | // ä¸ä¼ éªè¯ |
| | | fileBeforeUpload(file) { |
| | | let flag = true |
| | | if (file.size > 1024 * 1024 * 10) { |
| | | this.$message.error('ä¸ä¼ æä»¶ä¸è¶
è¿10M'); |
| | | this.$refs.upload.clearFiles() |
| | | flag = false |
| | | } |
| | | if (!flag) { |
| | | return Promise.reject(flag); //æ£ç¡®çç»æ¢ |
| | | } |
| | | }, |
| | | onError(err, file, fileList,type) { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$refs.upload.clearFiles() |
| | | }, |
| | | handleSuccessUp(response, ) { |
| | | this.upLoading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('ä¸ä¼ æå'); |
| | | this.searchTableList() |
| | | } |
| | | }, |
| | | // æ¥çæä»¶ |
| | | handleLook(row){ |
| | | this.currentInfo = row |
| | | this.lookDialogVisible = true |
| | | }, |
| | | }, |
| | | computed: { |
| | | headers() { |
| | | return { |
| | | 'token': sessionStorage.getItem('token') |
| | | } |
| | | }, |
| | | fileAction() { |
| | | return this.javaApi + this.$api.qualityMonitor.uploadEvaluateFile |
| | | |
| | | } |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" |
| | | :visible.sync="formDia" |
| | | title="宿½" |
| | | width="60%" @close="closeCarryOutDia"> |
| | | <el-steps :active="currentStep" align-center finish-status="success"> |
| | | <el-step title="宿½"></el-step> |
| | | <el-step title="æ¹å"></el-step> |
| | | </el-steps> |
| | | <div style="height: 620px;overflow-y: auto"> |
| | | <table border="1" cellspacing="10" class="tables"> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>çæ§é¡¹ç®ï¼</p> |
| | | </td> |
| | | <td colspan="3"> |
| | | <el-input v-if="currentStep === 0" v-model="form.monitorProject" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small"> |
| | | </el-input> |
| | | <span v-else class="td-info"> {{ form.monitorProject }}</span> |
| | | </td> |
| | | <td class="td-title"> |
| | | <p>çæ§æ¶é´ï¼</p> |
| | | </td> |
| | | <td colspan="3"> |
| | | <el-input v-if="currentStep === 0" v-model="form.monitorData" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small"> |
| | | </el-input> |
| | | <span v-else class="td-info"> {{ form.monitorData }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="8"> |
| | | <div> |
| | | <p>çæ§ç®çï¼</p> |
| | | </div> |
| | | <div> |
| | | <el-input v-if="currentStep === 0" v-model="form.monitorPurpose" |
| | | :rows="3" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small" |
| | | type="textarea"> |
| | | </el-input> |
| | | <span v-else class="td-info2"> {{ form.monitorPurpose }}</span> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="8"> |
| | | <div> |
| | | <p>çæ§æ¹æ³ï¼</p> |
| | | </div> |
| | | <div> |
| | | <el-input v-if="currentStep === 0" v-model="form.monitorMethod" |
| | | :rows="4" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small" |
| | | type="textarea"> |
| | | </el-input> |
| | | <span v-else class="td-info2"> {{ form.monitorMethod }}</span> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="8"> |
| | | <div> |
| | | <p>åå 人åï¼</p> |
| | | </div> |
| | | <div> |
| | | <el-input v-if="currentStep === 0" v-model="form.participant" |
| | | :rows="3" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small" |
| | | type="textarea"> |
| | | </el-input> |
| | | <span v-else class="td-info2"> {{ form.participant }}</span> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="8"> |
| | | <div> |
| | | <p>è¿ç¨æ§å¶ï¼</p> |
| | | </div> |
| | | <div> |
| | | <el-input v-if="currentStep === 0" v-model="form.processControl" |
| | | :rows="3" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small" |
| | | type="textarea"> |
| | | </el-input> |
| | | <span v-else class="td-info2"> {{ form.processControl }}</span> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="8"> |
| | | <div> |
| | | <p>ç»æè¯ä»·æ åï¼å¦ä½è¯ä»·ï¼ï¼</p> |
| | | </div> |
| | | <div> |
| | | <el-input v-if="currentStep === 0" v-model="form.howEvaluate" |
| | | :rows="3" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small" |
| | | type="textarea"> |
| | | </el-input> |
| | | <span v-else class="td-info2"> {{ form.howEvaluate }}</span> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="8"> |
| | | <div> |
| | | <p>ç»è´¹é¢ç®ï¼</p> |
| | | </div> |
| | | <div> |
| | | <el-input v-if="currentStep === 0" v-model="form.budget" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small"> |
| | | </el-input> |
| | | <span v-else class="td-info2"> {{ form.budget }}</span> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="4"> |
| | | <div> |
| | | <p>æ£æµé¨é¨ï¼</p> |
| | | </div> |
| | | <div> |
| | | <el-input v-if="currentStep === 0" v-model="form.inspectionDepartment" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small"> |
| | | </el-input> |
| | | <span v-else class="td-info2"> {{ form.inspectionDepartment }}</span> |
| | | </div> |
| | | </td> |
| | | <td colspan="4"> |
| | | <div v-if="currentStep === 0"> |
| | | <div>æ¹å人ï¼</div> |
| | | <div> |
| | | <el-select v-if="currentStep === 0" v-model="form.ratifyUserId" clearable |
| | | filterable |
| | | placeholder="è¯·éæ©" size="small"> |
| | | <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | <span v-else class="td-info2"> {{ form.ratifyName }}</span> |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <div v-if="currentStep !== 0"> |
| | | <p>æ¹åæè§ï¼</p> |
| | | </div> |
| | | <div> |
| | | <el-input v-if="currentStep === 1" v-model="form.ratifyOpinion" |
| | | :rows="3" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small" |
| | | type="textarea"> |
| | | </el-input> |
| | | <span v-if="currentStep === 2" class="td-info2"> {{ form.ratifyOpinion }}</span> |
| | | <span v-if="currentStep !== 0" class="td-info3"> {{ 'æ¹å人ï¼' + form.ratifyName }}</span> |
| | | </div> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeCarryOutDia">å æ¶</el-button> |
| | | <el-button v-if="currentStep !== 2" :loading="editLoad" type="primary" @click="handleEdit">æ 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | export default { |
| | | name: 'carryOutDialog', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | currentStep: 0, |
| | | form: { |
| | | monitorProject: '', |
| | | monitorData: '', |
| | | monitorPurpose: '', |
| | | monitorMethod: '', |
| | | participant: '', |
| | | processControl: '', |
| | | howEvaluate: '', |
| | | budget: '', |
| | | inspectionDepartment: '', |
| | | ratifyUserId: '', |
| | | ratifyOpinion: '', |
| | | qualityMonitorDetailsId: '', |
| | | ratifyName: '', |
| | | }, |
| | | personList: [], |
| | | editLoad: false, |
| | | isCarryOut: false, // æ¯å¦ä¸ºå®æ½ |
| | | }; |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | openDia(row) { |
| | | this.formDia = true |
| | | this.searchInfo(row) |
| | | this.getAuthorizedPerson() |
| | | }, |
| | | // æ¥è¯¢çæ§è®¡å详æ
宿½ä¿¡æ¯ |
| | | searchInfo (row) { |
| | | this.$axios.get(this.$api.qualityMonitor.getQualityMonitorRatify + '?qualityMonitorDetailsId=' + row.qualityMonitorDetailsId).then(res => { |
| | | if (res.code === 201) return |
| | | // ædetailsRatifyIdå说ææäº¤è¿å®æ½ä¿¡æ¯ |
| | | if (res.data.detailsRatifyId) { |
| | | // æ¯å¦ç»æ0:æªç»æ, 1:å·²ç»æ |
| | | if (res.data.isFinish == 0) { |
| | | this.currentStep = 1 |
| | | } else if (res.data.isFinish == 1) { |
| | | this.currentStep = 2 |
| | | } |
| | | } else { |
| | | this.currentStep = 0 |
| | | } |
| | | this.form = res.data |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | // æäº¤ |
| | | handleEdit() { |
| | | if (!this.form.ratifyUserId) { |
| | | this.$message.warning('è¯·éæ©æ¹å人') |
| | | return |
| | | } |
| | | this.editLoad = true |
| | | if (this.currentStep == 0) { |
| | | this.addInfo() |
| | | } else { |
| | | this.editInfo() |
| | | } |
| | | }, |
| | | // æäº¤å®æ½ |
| | | addInfo () { |
| | | this.$axios.post(this.$api.qualityMonitor.addQualityMonitorRatify, this.form, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | this.editLoad = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeCarryOutDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.editLoad = false |
| | | }) |
| | | }, |
| | | // æäº¤æ¹å |
| | | editInfo () { |
| | | this.$axios.post(this.$api.qualityMonitor.addQualityMonitorRatifyOpinion, this.form, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | this.editLoad = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeCarryOutDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.editLoad = false |
| | | }) |
| | | }, |
| | | // å
³éå¼¹æ¡ |
| | | closeCarryOutDia () { |
| | | this.formDia = false |
| | | this.$emit('closeCarryOutDia') |
| | | }, |
| | | getAuthorizedPerson() { |
| | | this.$axios.get(this.$api.user.getUserMenu).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id |
| | | }) |
| | | }) |
| | | this.personList = data |
| | | }) |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | >>>.el-dialog { |
| | | margin: 20px auto 50px !important; |
| | | } |
| | | .tables { |
| | | table-layout: fixed; |
| | | width: 100%; |
| | | margin-top: 10px; |
| | | } |
| | | .td-title { |
| | | height: 40px; |
| | | width: 100px; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | padding: 6px; |
| | | } |
| | | .td-info { |
| | | display: inline-block; |
| | | width: 100%; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | } |
| | | .td-info2 { |
| | | display: inline-block; |
| | | width: 90%; |
| | | text-align: left; |
| | | font-size: 16px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | margin-left: 20px; |
| | | } |
| | | .tables td { |
| | | height: 40px; |
| | | width: 100px; |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | padding: 6px; |
| | | } |
| | | .td-info3 { |
| | | width: 90%; |
| | | display: inline-block; |
| | | text-align: right; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog title="ç¼è¾" :visible.sync="formDia" |
| | | :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | width="80%" @close="closeDia"> |
| | | <el-form :model="form" :rules="rules" ref="form" label-width="140px"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="çæ§ç®ç" prop="monitorPurpose"> |
| | | <el-input v-model="form.monitorPurpose" size="small" clearable></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="计åå¼å±æ¶é´" prop="plannedTime"> |
| | | <el-input v-model="form.plannedTime" size="small" clearable></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="çæ§é¡¹ç®" prop="monitorProject"> |
| | | <el-input v-model="form.monitorProject" size="small" clearable></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="åå åä½ï¼äººåï¼" prop="participant"> |
| | | <el-input v-model="form.participant" size="small" clearable></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="é¢ç®ï¼å
ï¼" prop="budget"> |
| | | <el-input v-model="form.budget" size="small" clearable></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ç»ç»äººå" prop="organization"> |
| | | <el-input v-model="form.organization" size="small" clearable></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="çæ§æ¹å¼" prop="monitorWay"> |
| | | <el-input v-model="form.monitorWay" size="small" clearable></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeDia">å æ¶</el-button> |
| | | <el-button type="primary" @click="submitForm" :loading="upLoad">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'detailFormDialog', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | props: ['qualityMonitorId'], |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | form: { |
| | | qualityMonitorDetailsId: '', |
| | | monitorPurpose: '', |
| | | plannedTime: '', |
| | | monitorProject: '', |
| | | participant: '', |
| | | budget: '', |
| | | organization: '', |
| | | monitorWay: '', |
| | | }, |
| | | rules: { |
| | | monitorPurpose: [{ required: true, message: '请è¾å
¥çæ§ç®ç', trigger: 'blur' }], |
| | | monitorProject: [{ required: true, message: '请è¾å
¥çæ§é¡¹ç®', trigger: 'blur' }], |
| | | }, |
| | | upLoad: false, |
| | | operationType: '', |
| | | }; |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | openDia(type, row) { |
| | | this.formDia = true |
| | | this.operationType = type |
| | | if (type === 'edit') { |
| | | this.searchInfo(row) |
| | | } |
| | | }, |
| | | searchInfo (row) { |
| | | this.form = {...row} |
| | | }, |
| | | // æäº¤è¡¨å |
| | | submitForm () { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | if (this.operationType === 'add') { |
| | | this.handleAdd() |
| | | } else { |
| | | this.handleEdit() |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // æäº¤æ°å¢ |
| | | handleAdd () { |
| | | let entity = this.HaveJson(this.form) |
| | | entity.qualityMonitorId = this.qualityMonitorId |
| | | this.upLoad = true |
| | | this.$axios.post(this.$api.qualityMonitor.addQualityMonitorDetail, entity, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | this.upLoad = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æ°å¢æå') |
| | | this.closeDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.upLoad = false |
| | | }) |
| | | }, |
| | | // æäº¤ä¿®æ¹ |
| | | handleEdit () { |
| | | const entity = this.HaveJson(this.form) |
| | | this.upLoad = true |
| | | this.$axios.post(this.$api.qualityMonitor.updateQualityMonitorDetail, entity, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | this.upLoad = false |
| | | if (res.code === 201) return |
| | | this.$message.success('ä¿®æ¹æå') |
| | | this.closeDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.upLoad = false |
| | | }) |
| | | }, |
| | | // å
³éå¼¹æ¡ |
| | | closeDia () { |
| | | this.$refs.form.resetFields(); |
| | | this.formDia = false |
| | | this.$emit('closeDia') |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | >>>.el-dialog__body { |
| | | max-height: 720px; |
| | | overflow-y: auto; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" |
| | | :visible.sync="formDia" |
| | | title="è´¨éçæ§è¯ä»·" |
| | | width="60%" @close="closeEvaDia"> |
| | | <div style="text-align: right"> |
| | | <el-button size="small" type="primary" @click="viewTestRecord">éä»¶ä¸ä¼ </el-button> |
| | | </div> |
| | | <el-steps :active="currentStep" align-center finish-status="success"> |
| | | <el-step title="çæ§è®¡å宿½æ
åµ" @click.native="setStep(0)"></el-step> |
| | | <el-step title="çæ§ç»æè¯ä»·" @click.native="setStep(1)"></el-step> |
| | | <el-step title="è¯å®¡ç»è®ºï¼æ¯å¦éåæªæ½ï¼" @click.native="setStep(2)"></el-step> |
| | | </el-steps> |
| | | <div> |
| | | <table border="1" cellspacing="10" class="tables"> |
| | | <tr v-if="showStep === 0"> |
| | | <td class="td-title"> |
| | | <p><span class="required-span">* </span>è¯å®¡ç®çï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | <el-input v-if="showStep === 0 && currentStep === 0" v-model="form.reviewPurpose" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small"> |
| | | </el-input> |
| | | <span v-if="showStep === 0 && currentStep !== 0" class="td-info1"> {{ form.reviewPurpose }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 0"> |
| | | <td class="td-title"> |
| | | <p><span class="required-span">* </span>è¯å®¡äººåï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | <el-input v-if="showStep === 0 && currentStep === 0" v-model="form.reviewUser" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small"> |
| | | </el-input> |
| | | <span v-if="showStep === 0 && currentStep !== 0" class="td-info1"> {{ form.reviewUser }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 0"> |
| | | <td class="td-title"> |
| | | <p><span class="required-span">* </span>è¯å®¡æ¥æï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | <el-input v-if="showStep === 0 && currentStep === 0" v-model="form.reviewTime" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small"> |
| | | </el-input> |
| | | <span v-if="showStep === 0 && currentStep !== 0" class="td-info1"> {{ form.reviewTime }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 0"> |
| | | <td class="td-title"> |
| | | <p><span class="required-span">* </span>çæ§è®¡å宿½æ
åµï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | <el-input v-if="showStep === 0 && currentStep === 0" v-model="form.implementCondition" |
| | | :rows="5" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small" |
| | | type="textarea"> |
| | | </el-input> |
| | | <span v-if="showStep === 0 && currentStep !== 0" class="td-info1"> {{ form.implementCondition }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 0"> |
| | | <td class="td-title"> |
| | | <p>宿½é¨é¨ï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | <span> {{ form.implementDepartment }}</span> |
| | | </td> |
| | | <td v-if="currentStep === 0" class="td-title"> |
| | | <p>è¯·éæ©ä¸ä¸æ¥è´è´£äººï¼</p> |
| | | </td> |
| | | <td v-if="currentStep === 0" class="td-info"> |
| | | <el-select v-model="form.implementUserId" clearable filterable |
| | | placeholder="è¯·éæ©" size="small"> |
| | | <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 1"> |
| | | <td class="td-title"> |
| | | <p>çæ§ç»æè¯ä»·ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="4"> |
| | | <el-input v-if="showStep === 1 && currentStep === 1" v-model="form.implementResult" |
| | | :rows="5" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small" |
| | | type="textarea"> |
| | | </el-input> |
| | | <span v-if="showStep === 1 && currentStep !== 1" class="td-info1"> {{ form.implementResult }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 1"> |
| | | <td class="td-title"> |
| | | <p>å½åè´è´£äººï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="4"> |
| | | {{form.implementName}} |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 1"> |
| | | <td v-if="currentStep === 1" class="td-title"> |
| | | <p>è¯·éæ©ä¸ä¸æ¥è´è´£äººï¼</p> |
| | | </td> |
| | | <td v-if="currentStep === 1" class="td-info" colspan="4"> |
| | | <el-select v-model="form.ratifyUserId" clearable filterable |
| | | placeholder="è¯·éæ©" size="small"> |
| | | <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 2"> |
| | | <td class="td-title"> |
| | | <p>è¯å®¡ç»è®ºï¼æ¯å¦éåæªæ½ï¼ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="4"> |
| | | <el-input v-if="showStep === 2 && currentStep === 2" v-model="form.ratifyOpinion" |
| | | :rows="5" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small" |
| | | type="textarea"> |
| | | </el-input> |
| | | <span v-if="showStep === 2 && currentStep !== 2" class="td-info1"> {{ form.ratifyOpinion }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 2"> |
| | | <td class="td-title"> |
| | | <p>å½åè´è´£äººï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="4"> |
| | | {{form.ratifyUserName}} |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 2"> |
| | | <td class="td-title"> |
| | | <p>å®¡æ¹æ¥æï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="4"> |
| | | {{form.ratifyTime}} |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeEvaDia">å æ¶</el-button> |
| | | <el-button v-if="currentStep !== 3" :loading="editLoad" type="primary" @click="handleEdit">æ 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <view-record v-if="ViewRecord" ref="ViewRecord"></view-record> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ViewRecord from './ViewRecord.vue'; |
| | | |
| | | export default { |
| | | name: 'evaluateDialog', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { ViewRecord }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | currentStep: 0, |
| | | showStep: 0, |
| | | form: { |
| | | implementDepartment: '', |
| | | reviewPurpose: '', |
| | | reviewUser: '', |
| | | reviewTime: '', |
| | | implementCondition: '', |
| | | implementName: '', |
| | | implementUserId: '', |
| | | implementResult: '', |
| | | ratifyUserName: '', |
| | | ratifyUserId: '', |
| | | ratifyOpinion: '', |
| | | qualityMonitorDetailsId: '', |
| | | ratifyTime: '', |
| | | detailsEvaluateId: '', |
| | | }, |
| | | editLoad: false, |
| | | personList: [], |
| | | ViewRecord: false, |
| | | }; |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | openDia (row) { |
| | | this.formDia = true |
| | | this.searchInfo(row) |
| | | this.getAuthorizedPerson() |
| | | this.getDepartment() |
| | | }, |
| | | // æ¥è¯¢çæ§è®¡å详æ
宿½ä¿¡æ¯ |
| | | searchInfo (row) { |
| | | this.form.qualityMonitorDetailsId = row.qualityMonitorDetailsId |
| | | this.$axios.get(this.$api.qualityMonitor.getQualityMonitorEvaluate + '?qualityMonitorDetailsId=' + row.qualityMonitorDetailsId).then(res => { |
| | | if (res.code === 201) return |
| | | if (res.data === null) { |
| | | this.showStep = 0 |
| | | this.currentStep = 0 |
| | | } else { |
| | | this.form = res.data |
| | | if (res.data.isFinish === 0) { |
| | | if (res.data.implementUserId && !res.data.ratifyUserId) { |
| | | this.showStep = 1 |
| | | this.currentStep = 1 |
| | | } else if (res.data.implementUserId && res.data.ratifyUserId) { |
| | | this.showStep = 2 |
| | | this.currentStep = 2 |
| | | } |
| | | } else { |
| | | this.currentStep = 3 |
| | | this.showStep = 2 |
| | | } |
| | | } |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | // æäº¤ |
| | | handleEdit () { |
| | | if (this.currentStep === 2) { |
| | | this.$axios.post(this.$api.qualityMonitor.addMonitorEvaluateOpinion, this.form, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | this.editLoad = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeEvaDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.editLoad = false |
| | | }) |
| | | } else { |
| | | if (!this.form.reviewPurpose) { |
| | | this.$message.warning('请填åè¯å®¡ç®ç') |
| | | return |
| | | } |
| | | if (!this.form.reviewUser) { |
| | | this.$message.warning('请填åè¯å®¡äººå') |
| | | return |
| | | } |
| | | if (!this.form.reviewTime) { |
| | | this.$message.warning('请填åè¯å®¡æ¥æ') |
| | | return |
| | | } |
| | | if (!this.form.implementCondition) { |
| | | this.$message.warning('请填åçæ§è®¡å宿½æ
åµ') |
| | | return |
| | | } |
| | | if (!this.form.implementUserId) { |
| | | this.$message.warning('è¯·éæ©ä¸ä¸æ¥è´è´£äºº') |
| | | return |
| | | } |
| | | if (this.currentStep === 1) { |
| | | if (!this.form.ratifyUserId) { |
| | | this.$message.warning('è¯·éæ©ä¸ä¸æ¥è´è´£äºº') |
| | | return |
| | | } |
| | | } |
| | | this.$axios.post(this.$api.qualityMonitor.addQualityMonitorEvaluate, this.form, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | this.editLoad = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeEvaDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.editLoad = false |
| | | }) |
| | | } |
| | | }, |
| | | // å
³éå¼¹æ¡ |
| | | closeEvaDia () { |
| | | this.formDia = false |
| | | this.$emit('closeEvaDia') |
| | | }, |
| | | setStep (step) { |
| | | this.showStep = step |
| | | }, |
| | | viewTestRecord () { |
| | | this.ViewRecord = true |
| | | this.$nextTick(() => { |
| | | this.$refs.ViewRecord.openDia( this.form) |
| | | }) |
| | | }, |
| | | getAuthorizedPerson() { |
| | | this.$axios.get(this.$api.user.getUserMenu).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id |
| | | }) |
| | | }) |
| | | this.personList = data |
| | | }) |
| | | }, |
| | | getDepartment() { |
| | | this.$axios.get(this.$api.user.selectUserDepartmentLimsName).then(res => { |
| | | if (res.code === 201) return |
| | | this.form.implementDepartment = res.data |
| | | }) |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .tables { |
| | | table-layout: fixed; |
| | | width: 100%; |
| | | margin-top: 10px; |
| | | } |
| | | .td-title { |
| | | height: 40px; |
| | | width: 170px; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | padding: 6px; |
| | | } |
| | | .td-info { |
| | | padding: 6px; |
| | | } |
| | | .td-info1 { |
| | | display: inline-block; |
| | | width: 100%; |
| | | text-align: left; |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <!-- 7.7è´¨éçæ§è®¡å--> |
| | | <div class="app-container"> |
| | | <div class="table-card"> |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <el-form :model="yearForm" ref="yearForm" size="small" :inline="true"> |
| | | <el-form-item label="计ååç§°" prop="monitorName"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="yearForm.monitorName" |
| | | @keyup.enter.native="getYearPlanList"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="clearYear">é ç½®</el-button> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="getYearPlanList">æ¥ è¯¢</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div> |
| | | <el-button size="small" type="primary" @click="leadInto">导å
¥</el-button> |
| | | </div> |
| | | </div> |
| | | <lims-table :tableData="yearTableData" :column="yearColumnData" :page="yearPage" :tableLoading="yearLoading" |
| | | height="40vh" @pagination="pagination" |
| | | key="yearTableData"></lims-table> |
| | | </div> |
| | | <div style="margin-top: 20px"> |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <el-form :model="yearDetailForm" ref="yearDetailForm" size="small" :inline="true"> |
| | | <el-form-item label="çæ§ç®ç" prop="monitorPurpose"> |
| | | <el-input v-model="yearDetailForm.monitorPurpose" placeholder="请è¾å
¥" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="çæ§é¡¹ç®" prop="monitorProject"> |
| | | <el-input v-model="yearDetailForm.monitorProject" placeholder="请è¾å
¥" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="clearDetail">é ç½®</el-button> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="getYearDetailPlanList">æ¥ è¯¢</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div> |
| | | <el-button size="small" type="primary" @click="showDialog('add')">æ°å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <lims-table :tableData="yearDetailTableData" :column="yearDetailColumnData" :page="yearDetailPage" :tableLoading="yearDetailLoading" |
| | | height="40vh" @pagination="pagination1" |
| | | key="yearDetailTableData"></lims-table> |
| | | </div> |
| | | <!--æ°å¢ä¿®æ¹å¼¹æ¡--> |
| | | <detail-form-dialog v-if="formDia" ref="formDia" :qualityMonitorId="qualityMonitorId" @closeDia="closeDia"></detail-form-dialog> |
| | | <!--宿½æµç¨å¼¹æ¡--> |
| | | <carry-out-dialog v-if="carryOutDia" ref="carryOutDia" :qualityMonitorId="qualityMonitorId" @closeDia="closeCarryOutDia"></carry-out-dialog> |
| | | <!--è¯ä»·æµç¨å¼¹æ¡--> |
| | | <evaluate-dialog v-if="evaluateDialog" ref="evaluateDialog" @closeEvaDia="closeEvaDia"></evaluate-dialog> |
| | | <el-dialog :visible.sync="examineDialog" title="å®¡æ ¸" width="30%" @close="closeExamineDia"> |
| | | <span> |
| | | å®¡æ ¸å¤æ³¨ï¼ |
| | | <el-input v-model="examineInfo.examineRemark" type="textarea"></el-input> |
| | | </span> |
| | | <span style="margin-top: 10px;display: inline-block"> |
| | | æ¹åäººï¼ |
| | | <el-select v-model="examineInfo.ratifyUserId" clearable |
| | | filterable size="small" style="width: 70%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :loading="examineLoading" @click="handleReview(0)">ä¸éè¿</el-button> |
| | | <el-button :loading="examineLoading" type="primary" @click="handleReview(1)">é è¿</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="ratifyDialog" title="æ¹å" width="30%" @close="closeRatifyDia"> |
| | | <span> |
| | | æ¹å夿³¨ï¼ |
| | | <el-input v-model="ratifyInfo.ratifyRemark" type="textarea"></el-input> |
| | | </span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :loading="ratifyLoading" @click="handleRatify(0)">䏿¹å</el-button> |
| | | <el-button :loading="ratifyLoading" type="primary" @click="handleRatify(1)">æ¹ å</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <!--é¢è§æ¥å--> |
| | | <el-dialog |
| | | :visible.sync="lookDialogVisible" |
| | | fullscreen |
| | | title="æ¥çéä»¶" top="5vh" width="800px"> |
| | | <filePreview v-if="lookDialogVisible" :currentFile="{}" |
| | | :fileUrl="javaApi+'/word/' + currentInfo.finishReportUrl" style="height: 70vh;overflow-y: auto;"/> |
| | | <div> |
| | | æ¹åç¶æï¼ |
| | | <el-tag v-if="this.ratifyStatus === 1" type="success">æ¹å</el-tag> |
| | | <el-tag v-if="this.ratifyStatus === 0" type="danger">䏿¹å</el-tag> |
| | | </div> |
| | | <div> |
| | | æ¹åæè§ï¼ |
| | | <el-input v-model="approvalRemarks" :disabled="this.ratifyStatus === 1" type="textarea"></el-input> |
| | | </div> |
| | | <span v-if="this.ratifyStatus !== 1" slot="footer" class="dialog-footer"> |
| | | <el-button :loading="lookDialogLoading" @click="handleApproval(0)">䏿¹å</el-button> |
| | | <el-button :loading="lookDialogLoading" type="primary" @click="handleApproval(1)">æ¹ å</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="downloadDialog" title="导åº" width="600px"> |
| | | <span> |
| | | <el-button plain type="primary" @click="controlDown">宿½è®¡å导åº</el-button> |
| | | <el-button plain type="primary" @click="processingDown">è¯ä»·å¯¼åº</el-button> |
| | | </span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="downloadDialog = false">å æ¶</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <!--导å
¥è®¡å--> |
| | | <el-dialog :visible.sync="uploadDia" title="æ°æ®å¯¼å
¥" width="500px" :close-on-click-modal="false" :close-on-press-escape="false"> |
| | | <div style="display: flex; align-items: center;"> |
| | | <span style="width: 60px">年份ï¼</span> |
| | | <el-date-picker |
| | | v-model="planYear" |
| | | type="year" |
| | | value-format="yyyy" |
| | | clearable |
| | | size="small" |
| | | format="yyyy" |
| | | placeholder="鿩年"> |
| | | </el-date-picker> |
| | | </div> |
| | | <div style="display: flex;align-items: center;margin: 10px 0"> |
| | | <div style="width: 60px">å®¡æ ¸äººï¼</div> |
| | | <el-select v-model="examineUserId" clearable |
| | | filterable size="small" style="width: 50%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div style="margin: 0 auto;"> |
| | | <el-upload ref="upload" :action="action" :auto-upload="false" :file-list="fileList" |
| | | :headers="headers" :limit="1" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' |
| | | :on-change="beforeUpload" :on-error="onError" :on-success="handleSuccessUp" drag |
| | | :data="{planYear: planYear, examineUserId: examineUserId}" |
| | | name="file"> |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">å°æä»¶æå°æ¤å¤ï¼æ<em>ç¹å»ä¸ä¼ </em></div> |
| | | </el-upload> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="uploadDia = false">å æ¶</el-button> |
| | | <el-button :loading="uploading" type="primary" @click="submitUpload">ä¸ ä¼ </el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <!--çææ¥åå¼¹æ¡--> |
| | | <el-dialog :visible.sync="uploadDia1" title="çææ¥å" width="500px"> |
| | | <div v-if="approvalRemarks"> |
| | | æ¹åæè§ï¼ |
| | | <el-input v-model="approvalRemarks" :disabled="this.ratifyStatus === 1" type="textarea"></el-input> |
| | | </div> |
| | | <div style="margin: 0 auto;"> |
| | | <el-upload ref="upload1" :action="action1" :auto-upload="false" |
| | | :data="{qualityMonitorDetailsId: qualityMonitorDetailsId}" :file-list="fileList1" :headers="headers" |
| | | :limit="1" |
| | | :on-change="beforeUpload1" :on-error="onError1" :on-success="onSuccess1" accept='.doc,.docx' |
| | | drag |
| | | name="file"> |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">å°æä»¶æå°æ¤å¤ï¼æ<em>ç¹å»ä¸ä¼ </em></div> |
| | | </el-upload> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="uploadDia1 = false">å æ¶</el-button> |
| | | <el-button :loading="uploading1" type="primary" @click="submitUpload1()">ä¸ ä¼ </el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import DetailFormDialog from './components/detailFormDialog.vue'; |
| | | import CarryOutDialog from './components/carryOutDialog.vue'; |
| | | import EvaluateDialog from './components/evaluateDialog.vue'; |
| | | import filePreview from "@/components/Preview/filePreview.vue"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { |
| | | delQualityMonitorDetail, |
| | | delQualitySupervise, |
| | | examineQualityMonitor, exportQualityMonitorDetail, exportQualityMonitorEvaluate, exportQualityMonitorRatify, |
| | | pageQualityMonitor, pageQualityMonitorDetail, ratifyFinishReport, |
| | | ratifyQualityMonitor |
| | | } from "@/api/cnas/process/ensureResultsValidity/qualityMonitor"; |
| | | import {selectUserCondition} from "@/api/performance/class"; |
| | | import {getToken} from "@/utils/auth"; |
| | | |
| | | export default { |
| | | name: 'a7-Ensure-results-validity', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {limsTable, filePreview, EvaluateDialog, CarryOutDialog, DetailFormDialog }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | examineUserId: '', |
| | | responsibleOptions: [], |
| | | yearForm: { |
| | | monitorName: '', |
| | | }, |
| | | yearPage: { |
| | | current: 1, |
| | | size: 20, |
| | | total: 0 |
| | | }, |
| | | yearColumnData: [ |
| | | { |
| | | label: '计ååç§°', |
| | | prop: 'monitorName', |
| | | minWidth: '150px' |
| | | }, { |
| | | label: 'ç¼å¶äºº', |
| | | prop: 'writeName', |
| | | minWidth: '100' |
| | | }, { |
| | | label: 'ç¼å¶æ¥æ', |
| | | prop: 'writeTime', |
| | | minWidth: '160' |
| | | }, { |
| | | dataType: 'tag', |
| | | label: 'å®¡æ ¸ç¶æ', |
| | | prop: 'examineStatus', |
| | | minWidth: '100', |
| | | formatData: (params) => { |
| | | if (params === 0) { |
| | | return 'ä¸éè¿'; |
| | | } else if (params === 1) { |
| | | return 'éè¿'; |
| | | } else { |
| | | return null; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params === 0) { |
| | | return 'danger'; |
| | | } else if (params === 1) { |
| | | return 'success'; |
| | | } else { |
| | | return null; |
| | | } |
| | | } |
| | | }, { |
| | | label: 'å®¡æ ¸å
容', |
| | | prop: 'examineRemark', |
| | | minWidth: '100' |
| | | }, { |
| | | label: 'å®¡æ ¸äºº', |
| | | prop: 'examineName', |
| | | minWidth: '100' |
| | | }, { |
| | | label: 'å®¡æ ¸æ¥æ', |
| | | prop: 'examineTime', |
| | | minWidth: '160' |
| | | },{ |
| | | dataType: 'tag', |
| | | label: 'æ¹åç¶æ', |
| | | prop: 'ratifyStatus', |
| | | minWidth: '100', |
| | | formatData: (params) => { |
| | | if (params === 0) { |
| | | return '䏿¹å'; |
| | | } else if (params === 1) { |
| | | return 'æ¹å'; |
| | | } else { |
| | | return null; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params === 0) { |
| | | return 'danger'; |
| | | } else if (params === 1) { |
| | | return 'success'; |
| | | } else { |
| | | return null; |
| | | } |
| | | } |
| | | },{ |
| | | label: 'æ¹åå
容', |
| | | prop: 'ratifyRemark', |
| | | minWidth: '100' |
| | | },{ |
| | | label: 'æ¹å人', |
| | | prop: 'ratifyName', |
| | | minWidth: '100' |
| | | },{ |
| | | label: 'æ¹åæ¥æ', |
| | | prop: 'ratifyTime', |
| | | minWidth: '160' |
| | | }, { |
| | | dataType: 'action', |
| | | minWidth: '190', |
| | | label: 'æä½', |
| | | fixed: 'right', |
| | | operation: [ |
| | | { |
| | | name: 'å®¡æ ¸', |
| | | type: 'text', |
| | | disabled: (row) => { |
| | | if (row.examineStatus === 1 || JSON.parse(localStorage.getItem("user")).userId != row.examineUserId) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | clickFun: (row) => { |
| | | this.examinePlan(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'æ¹å', |
| | | type: 'text', |
| | | disabled: (row) => { |
| | | if (row.ratifyStatus === 1 || row.examineStatus !== 1 || JSON.parse(localStorage.getItem("user")).userId != row.ratifyUserId) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | clickFun: (row) => { |
| | | this.approvalPlan(row) |
| | | } |
| | | }, |
| | | { |
| | | name: '导åº', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDown(row) |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.ratifyStatus !== 1) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delPlan(row) |
| | | }, |
| | | disabled: (row) => { |
| | | if(row.examineStatus === 1) { |
| | | return true; |
| | | } else { |
| | | return false; |
| | | } |
| | | }, |
| | | } |
| | | ] |
| | | }], |
| | | yearTableData: [], // 年表 |
| | | yearLoading: false, |
| | | yearDetailForm: { |
| | | monitorPurpose: '', |
| | | monitorProject: '', |
| | | }, |
| | | yearDetailColumnData: [ |
| | | { |
| | | label: 'çæ§ç®ç', |
| | | prop: 'monitorPurpose', |
| | | width: '150px', |
| | | showOverflowTooltip: true, |
| | | }, { |
| | | label: '计åå¼å±æ¶é´', |
| | | prop: 'plannedTime', |
| | | minWidth: '150px' |
| | | }, { |
| | | label: 'çæ§é¡¹ç®', |
| | | prop: 'monitorProject', |
| | | minWidth: '150px' |
| | | }, { |
| | | label: 'åå åä½ï¼äººåï¼', |
| | | prop: 'participant', |
| | | minWidth: '150px' |
| | | }, { |
| | | label: 'é¢ç®ï¼å
ï¼', |
| | | prop: 'budget', |
| | | minWidth: '150px' |
| | | },{ |
| | | label: 'ç»ç»äººå', |
| | | prop: 'organization', |
| | | minWidth: '150px' |
| | | },{ |
| | | label: 'çæ§æ¹å¼', |
| | | prop: 'monitorWay', |
| | | minWidth: '150px' |
| | | }, { |
| | | dataType: 'action', |
| | | width: '280', |
| | | label: 'æä½', |
| | | fixed: 'right', |
| | | operation: [ |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.showDialog('edit', row) |
| | | } |
| | | }, |
| | | { |
| | | name: '宿½', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.carryOut(row) |
| | | } |
| | | }, |
| | | { |
| | | name: '宿æ¥å', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.record(row) |
| | | }, |
| | | }, |
| | | { |
| | | name: 'è¯ä»·', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.evaluate(row) |
| | | } |
| | | }, |
| | | { |
| | | name: '导åº', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.downLoadPost(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delYearPlanDetail(row) |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | yearDetailTableData: [], // å¹´æç»è¡¨ |
| | | yearDetailLoading: false, |
| | | yearDetailPage: { |
| | | current: 1, |
| | | size: 20, |
| | | total: 0 |
| | | }, |
| | | formDia: false, |
| | | qualityMonitorId: '', |
| | | carryOutDia: false, |
| | | evaluateDialog: false, |
| | | examineDialog: false, |
| | | examineLoading: false, |
| | | ratifyDialog: false, |
| | | ratifyLoading: false, |
| | | examineInfo: {}, |
| | | ratifyInfo: {}, |
| | | upLoading: false, |
| | | uploadDia: false, |
| | | uploadDia1: false, |
| | | uploading: false, |
| | | uploading1: false, |
| | | fileList: [], |
| | | fileList1: [], |
| | | lookDialogVisible: false, |
| | | lookDialogLoading: false, |
| | | currentInfo: {}, |
| | | qualityMonitorDetailsId: '', |
| | | ratifyStatus: '', |
| | | approvalRemarks: '', |
| | | downloadDialog: false, |
| | | download: {}, |
| | | planYear: '', |
| | | headers: { |
| | | Authorization: "Bearer " + getToken(), |
| | | }, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.getYearPlanList() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å¹´åº¦è®¡å表 |
| | | getYearPlanList () { |
| | | const entity = { |
| | | monitorName: this.yearForm.monitorName, |
| | | } |
| | | const page = this.yearPage |
| | | this.yearLoading = true |
| | | pageQualityMonitor({ ...entity, ...page }).then(res => { |
| | | this.yearLoading = false |
| | | this.yearTableData = res.data.records |
| | | this.yearPage.total = res.data.total |
| | | if (this.yearTableData.length > 0) { |
| | | this.rowClick(this.yearTableData[0]) |
| | | } |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.yearLoading = false |
| | | }) |
| | | }, |
| | | clearYear () { |
| | | this.yearForm.monitorName = '' |
| | | this.getYearPlanList() |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.yearPage.current = page; |
| | | this.yearPage.size = limit; |
| | | this.getYearPlanList(); |
| | | }, |
| | | pagination1({ page, limit }) { |
| | | this.yearDetailPage.current = page; |
| | | this.yearDetailPage.size = limit; |
| | | this.getYearPlanList(); |
| | | }, |
| | | leadInto () { |
| | | this.uploadDia = true |
| | | this.getUserList() |
| | | }, |
| | | // 导å
¥æµç¨ |
| | | beforeUpload(file) { |
| | | if (file.size > 1024 * 1024 * 10) { |
| | | this.$message.error('ä¸ä¼ æä»¶ä¸è¶
è¿10M'); |
| | | this.$refs.upload.clearFiles() |
| | | return false; |
| | | } else { |
| | | return true; |
| | | } |
| | | }, |
| | | onError(err, file, fileList) { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$refs.upload.clearFiles() |
| | | }, |
| | | handleSuccessUp(response) { |
| | | this.uploading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('ä¸ä¼ æå'); |
| | | } else { |
| | | this.$message.error(response.msg) |
| | | } |
| | | }, |
| | | submitUpload () { |
| | | if (!this.planYear) { |
| | | this.$message.warning('è¯·éæ©å¹´ä»½') |
| | | return; |
| | | } |
| | | if (!this.examineUserId) { |
| | | this.$message.warning('è¯·éæ©æ¹å人') |
| | | return; |
| | | } |
| | | this.$refs.upload.submit(); |
| | | this.timer = setTimeout(() => { |
| | | this.uploadDia = false |
| | | this.fileList = [] |
| | | this.planYear = '' |
| | | this.examineUserId = '' |
| | | this.getYearPlanList() |
| | | }, 1000) |
| | | }, |
| | | // end |
| | | // å®¡æ ¸ |
| | | examinePlan (row) { |
| | | this.examineDialog = true |
| | | this.examineInfo = row |
| | | this.getUserList() |
| | | }, |
| | | handleReview (examineStatus) { |
| | | // å®¡æ ¸ç¶æ , 0 ä¸éè¿, 1éè¿ |
| | | this.examineInfo.examineStatus = examineStatus |
| | | this.examineLoading = true |
| | | examineQualityMonitor(this.examineInfo).then(res => { |
| | | this.examineLoading = false |
| | | this.$message.success('æä½æå') |
| | | this.closeExamineDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.examineLoading = false |
| | | }) |
| | | }, |
| | | closeExamineDia () { |
| | | this.examineDialog = false |
| | | this.examineInfo.examineRemark = '' |
| | | this.getYearPlanList() |
| | | }, |
| | | // æ¹å |
| | | approvalPlan (row) { |
| | | this.ratifyDialog = true |
| | | this.ratifyInfo = row |
| | | }, |
| | | handleRatify (ratifyStatus) { |
| | | // æ¹åç¶æ , 0 ä¸éè¿, 1éè¿ |
| | | this.ratifyInfo.ratifyStatus = ratifyStatus |
| | | this.ratifyLoading = true |
| | | ratifyQualityMonitor(this.ratifyInfo).then(res => { |
| | | this.ratifyLoading = false |
| | | this.$message.success('æä½æå') |
| | | this.closeRatifyDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.ratifyLoading = false |
| | | }) |
| | | }, |
| | | closeRatifyDia () { |
| | | this.ratifyDialog = false |
| | | this.ratifyInfo.ratifyRemark = '' |
| | | this.getYearPlanList() |
| | | }, |
| | | // æ¹åæ¥å |
| | | handleApproval (status) { |
| | | const personTrainingUpdateDto = { |
| | | qualityMonitorDetailsId: this.currentInfo.qualityMonitorDetailsId, |
| | | ratifyRemark: this.approvalRemarks, |
| | | ratifyStatus: status |
| | | } |
| | | this.lookDialogLoading = true |
| | | ratifyFinishReport(personTrainingUpdateDto).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('æäº¤æåï¼'); |
| | | this.lookDialogVisible = false |
| | | this.getYearDetailPlanList(); |
| | | } |
| | | this.lookDialogLoading = false |
| | | }).catch(() => { |
| | | this.lookDialogLoading = false |
| | | }) |
| | | }, |
| | | // å¯¼åº |
| | | handleDown (row) { |
| | | exportQualityMonitorDetail({qualityMonitorId: row.qualityMonitorId}).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | this.$download.saveAs(blob, row.monitorName + '.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // å é¤è¿åº¦è®¡å表 |
| | | delPlan (row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.yearLoading = true |
| | | delQualitySupervise({qualityMonitorId: row.qualityMonitorId}).then(res => { |
| | | this.yearLoading = false |
| | | this.$message.success('å 餿å') |
| | | this.getYearPlanList() |
| | | }).catch(err => { |
| | | this.yearLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | // 年度计åè¡¨æ ¼ï¼ç¹å»è¡æ°æ®åå·æ°è¯¦æ
|
| | | rowClick(row) { |
| | | this.qualityMonitorId = row.qualityMonitorId |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // è·å年度æç»è¡¨ |
| | | getYearDetailPlanList () { |
| | | const entity = { |
| | | qualityMonitorId: this.qualityMonitorId, |
| | | monitorPurpose: this.yearDetailForm.monitorPurpose, |
| | | monitorProject: this.yearDetailForm.monitorProject, |
| | | } |
| | | const page = this.yearDetailPage |
| | | this.yearDetailLoading = true |
| | | pageQualityMonitorDetail({ ...entity, ...page }).then(res => { |
| | | this.yearDetailLoading = false |
| | | this.yearDetailTableData = res.data.records |
| | | this.yearDetailPage.total = res.data.total |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.yearDetailLoading = false |
| | | }) |
| | | }, |
| | | // éç½®æç»è¡¨ |
| | | clearDetail () { |
| | | this.yearDetailForm = { |
| | | monitorPurpose: '', |
| | | monitorProject: '' |
| | | } |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // æç»è¡¨å®æ½ |
| | | carryOut (row) { |
| | | this.carryOutDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.carryOutDia.openDia(row) |
| | | }) |
| | | }, |
| | | closeCarryOutDia () { |
| | | this.carryOutDia = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // æå¼æ¥åå¼¹æ¡ |
| | | record (row) { |
| | | this.qualityMonitorDetailsId = row.qualityMonitorDetailsId |
| | | this.approvalRemarks = row.approvalRemarks |
| | | if (row.finishReportUrl) { |
| | | this.currentInfo = row |
| | | this.ratifyStatus = row.ratifyStatus |
| | | this.lookDialogVisible = true |
| | | } else { |
| | | this.uploadDia1 = true |
| | | } |
| | | }, |
| | | onSuccess1(response, file, fileList) { |
| | | this.$refs.upload1.clearFiles() |
| | | this.uploading1 = false |
| | | if (response.code == 200) { |
| | | this.$message.success('ä¸ä¼ æå'); |
| | | this.uploadDia1 = false |
| | | } else { |
| | | this.$message.error(response.msg) |
| | | } |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | beforeUpload1(file) { |
| | | if (file.size > 1024 * 1024 * 10) { |
| | | this.$message.error('ä¸ä¼ æä»¶ä¸è¶
è¿10M'); |
| | | this.$refs.upload1.clearFiles() |
| | | return false; |
| | | } else { |
| | | return true; |
| | | } |
| | | }, |
| | | onError1(err, file, fileList) { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$refs.upload1.clearFiles() |
| | | this.uploading1 = false |
| | | }, |
| | | submitUpload1() { |
| | | if (this.$refs.upload1.uploadFiles.length === 0) { |
| | | this.$message.error('æªéæ©æä»¶') |
| | | return |
| | | } |
| | | this.uploading1 = true |
| | | this.$refs.upload1.submit(); |
| | | this.uploadDia1 = false; |
| | | }, |
| | | // end |
| | | // æå¼è¯ä»·å¼¹æ¡ |
| | | evaluate (row) { |
| | | this.evaluateDialog = true |
| | | this.$nextTick(() => { |
| | | this.$refs.evaluateDialog.openDia(row) |
| | | }) |
| | | }, |
| | | closeEvaDia () { |
| | | this.evaluateDialog = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // æå¼å¯¼åºå¼¹æ¡ |
| | | downLoadPost (row) { |
| | | this.downloadDialog = true |
| | | this.download = row |
| | | }, |
| | | // æå¼å¹´åº¦æç»æ°å¢ãä¿®æ¹å¼¹æ¡ |
| | | showDialog (type, row) { |
| | | this.formDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.formDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | closeDia () { |
| | | this.formDia = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // æ§å¶åå¯¼åº |
| | | controlDown() { |
| | | exportQualityMonitorRatify({qualityMonitorDetailsId: this.download.qualityMonitorDetailsId}).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'è´¨éçæ§å®æ½è®¡å.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // å¤çåå¯¼åº |
| | | processingDown() { |
| | | exportQualityMonitorEvaluate({qualityMonitorDetailsId: this.download.qualityMonitorDetailsId}).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'è´¨éçæ§è¯ä»·.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | delYearPlanDetail (row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.yearDetailLoading = true |
| | | delQualityMonitorDetail({qualityMonitorDetailsId: row.qualityMonitorDetailsId}).then(res => { |
| | | this.yearDetailLoading = false |
| | | this.$message.success('å 餿å') |
| | | this.getYearDetailPlanList() |
| | | }).catch(err => { |
| | | this.yearDetailLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }) |
| | | }, |
| | | // è·åè´è´£äººä¿¡æ¯æ¥å£ |
| | | getUserList() { |
| | | selectUserCondition().then((res) => { |
| | | this.responsibleOptions = res.data; |
| | | }) |
| | | } |
| | | }, |
| | | // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ |
| | | computed: { |
| | | action() { |
| | | return this.javaApi + '/qualityMonitor/importQualityMonitor' |
| | | }, |
| | | action1() { |
| | | return this.javaApi + '/qualityMonitor/uploadFinishReport' |
| | | } |
| | | }, |
| | | beforeDestroy() { |
| | | clearTimeout(this.timer); |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | |
| | | :rowClassName="rowClassName" :height="'calc(100vh - 270px)'" @pagination="pagination" |
| | | key="tableData0"></lims-table> |
| | | </div> |
| | | <!-- <div style="width: 100%;height: 100%;" v-if="activeFace >0 && isCopper == null">--> |
| | | <!-- <Add :active="activeFace" :currentId="currentId"/>--> |
| | | <!-- </div>--> |
| | | <!-- <div style="width: 100%;height: 100%;" v-if="activeFace >0 && isCopper == 0">--> |
| | | <!-- <CustomsInspection :active="activeFace" :customsInspection="customsInspection" :currentId="currentId"/>--> |
| | | <!-- </div>--> |
| | | <!-- <div style="width: 100%;height: 100%;" v-if="activeFace >0 && isCopper == 1">--> |
| | | <!-- <CopperOrder :active="activeFace" :currentId="currentId"></CopperOrder>--> |
| | | <!-- </div>--> |
| | | <!-- <Inspection v-if="state>0" @goback="goback" :orderId="orderId" :sonLaboratory="componentData.entity.sonLaboratory" :typeSource="typeSource" :state="state"/>--> |
| | | <!-- <!–产ä¸é¾ä¿¡æ¯æ¥ç–>--> |
| | | <!-- <ShowInfo v-if="showInfoDialog" :showInfoDialog="showInfoDialog" ref="showInfoDialog"></ShowInfo>--> |
| | | <!--æ¥åæ¥ç--> |
| | | <el-dialog title="æ¥åæ¥ç" :visible.sync="issuedVisible" width="80vw" :modal-append-to-body="false" |
| | | :fullscreen="fullscreen"> |
| | |
| | | import {selectInsOrderPlanList, selectUserCondition} from "@/api/business/inspectionTask"; |
| | | import {mapGetters} from "vuex"; |
| | | import {upReportUrl} from "@/api/business/insReport"; |
| | | import {delfile} from "@/api/business/rawMaterialOrder"; |
| | | import filePreview from "@/components/Preview/filePreview.vue"; |
| | | |
| | | export default { |