From 1a09e4c1f2eef787ed9e5826f16a587185e364b1 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期四, 26 十二月 2024 14:33:06 +0800 Subject: [PATCH] 完成7.8报告结果搬迁 --- src/components/view/a7-report-results.vue | 431 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/assets/api/controller.js | 11 + 2 files changed, 442 insertions(+), 0 deletions(-) diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js index 778c836..6bc3b9c 100644 --- a/src/assets/api/controller.js +++ b/src/assets/api/controller.js @@ -61,6 +61,7 @@ processEvaluate, qualityMonitor, measuresAddressRisksOpportunities, + processReport, } } @@ -805,4 +806,14 @@ removeRiskFactors: "/manageRiskAssessmentResults/removeRiskFactors", // 鍗遍櫓鍥犵礌杈ㄨ瘑涓庨闄╄瘎浠风粨鏋滀竴瑙� 鍒犻櫎 exportHazardFactorIdentification: "/manageRiskAssessmentResults/exportHazardFactorIdentification", // 鍗遍櫓鍥犵礌杈ㄨ瘑涓庨闄╄瘎浠风粨鏋滀竴瑙� 瀵煎嚭 exportSignificantRiskFactors: "/manageControlPlanList/exportSignificantRiskFactors", // 閲嶅ぇ椋庨櫓鍥犵礌鍒嗘瀽鍙婃帶鍒惰鍒掓竻鍗� 瀵煎嚭 +} + +// 7.8鎶ュ憡缁撴灉 +const processReport = { + pageProcessReport:'/processReport/pageProcessReport',// 鍒嗛〉 + addProcessReport:'/processReport/addProcessReport',//鏂板 + delProcessReport:'/processReport/delProcessReport',//鍒犻櫎 + getProcessReport:'/processReport/getProcessReport',//鏌ョ湅 + doProcessReport:'/processReport/doProcessReport',//淇敼 + exportProcessReport:'/processReport/exportProcessReport',//瀵煎嚭 } \ No newline at end of file diff --git a/src/components/view/a7-report-results.vue b/src/components/view/a7-report-results.vue new file mode 100644 index 0000000..54264cf --- /dev/null +++ b/src/components/view/a7-report-results.vue @@ -0,0 +1,431 @@ +<template> + <div class="report-results"> + <el-row class="title"> + <el-col :span="12" style="padding-left: 20px;text-align: left;">鎶ュ憡缁撴灉</el-col> + <el-col :span="12" style="text-align: right;"> + <el-button size="medium" type="primary" @click="handleDown" :loading="outLoading" v-if="outPower">瀵煎嚭</el-button> + <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">鏂板</el-button> + </el-col> + </el-row> + <div class="search"> + <div class="search_thing"> + <div class="search_label">妫�楠屾姤鍛婄紪鍙凤細</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="componentData.entity.insReportCode" + @keyup.enter.native="refreshTable()"></el-input></div> + </div> + <!-- <div class="search_thing"> + <div class="search_label">鍙戦�佷汉锛�</div> + <div class="search_input"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="componentData.entity.sendUserName" + @keyup.enter.native="refreshTable()"></el-input> + </div> + </div> --> + <div class="search_thing" style="padding-left: 30px;"> + <el-button size="small" @click="refresh()">閲� 缃�</el-button> + <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> + </div> + </div> + <div class="table"> + <ValueTable ref="ValueTable" :url="$api.processReport.pageProcessReport" + :delUrl="$api.processReport.delProcessReport" + :componentData="componentData" :key="upIndex"/> + </div> + <el-dialog + :title="title" + :visible.sync="addDialogVisible" + width="400px" top="6vh"> + <el-row> + <el-col :span="24" style="margin-bottom: 16px;"> + <div class="search_thing"> + <div class="search_label">妫�楠屾姤鍛婄紪鍙凤細</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="addInfo.insReportCode"></el-input></div> + </div> + </el-col> + <el-col :span="24" style="margin-bottom: 16px;"> + <div class="search_thing"> + <div class="search_label">椤垫暟锛�</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="addInfo.pages"></el-input></div> + </div> + </el-col> + <el-col :span="24" style="margin-bottom: 16px;"> + <div class="search_thing"> + <div class="search_label">鍙戦�佷唤鏁帮細</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="addInfo.number"></el-input></div> + </div> + </el-col> + <el-col :span="24" style="margin-bottom: 16px;"> + <div class="search_thing"> + <div class="search_label">鍙戝線浣曞锛�</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="addInfo.send"></el-input></div> + </div> + </el-col> + <el-col :span="24" style="margin-bottom: 16px;"> + <div class="search_thing"> + <div class="search_label">鍙戦�佹柟寮忥細</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="addInfo.method"></el-input></div> + </div> + </el-col> + <el-col :span="24" style="margin-bottom: 16px;"> + <div class="search_thing"> + <div class="search_label">鍙戦�佹棩鏈燂細</div> + <div class="search_input"> + <el-date-picker + v-model="addInfo.sendTime" + type="date" + size="small" + placeholder="閫夋嫨鏃ユ湡" + format="yyyy-MM-dd" + value-format="yyyy-MM-dd" style="width: 100%;"> + </el-date-picker> + </div> + </div> + </el-col> + <el-col :span="24" style="margin-bottom: 16px;"> + <div class="search_thing"> + <div class="search_label">鍙戦�佷汉锛�</div> + <div class="search_input"> + <el-select v-model="addInfo.sendUser" placeholder="璇烽�夋嫨" size="small" style="width: 100%;"> + <el-option + v-for="item in personList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </div> + </div> + </el-col> + <el-col :span="24" style="margin-bottom: 16px;"> + <div class="search_thing"> + <div class="search_label">绛炬敹浜猴細</div> + <div class="search_input"> + <el-select v-model="addInfo.signatory" placeholder="璇烽�夋嫨" size="small" style="width: 100%;" multiple> + <el-option + v-for="item in personList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </div> + </div> + </el-col> + <el-col :span="24" style="margin-bottom: 16px;"> + <div class="search_thing"> + <div class="search_label">澶囨敞锛�</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="addInfo.remark" type="textarea" + :rows="2"></el-input></div> + </div> + </el-col> + </el-row> + <span slot="footer" class="dialog-footer"> + <el-button @click="addDialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="handleAdd" :loading="addLoading">纭� 瀹�</el-button> + </span> + </el-dialog> + <!-- html瀵煎嚭涓簑ord锛屾牱瀛愬お涓戜簡锛屼唬鐮佸厛鏀剧潃鍚� --> + <!-- <div style="position: fixed;top: 0;width: 1050px;height: 80vh;overflow-y: auto;z-index: 0;opacity: 0;"> + <div ref="content"> + <h4 style="display: flex;align-items: center;flex-direction: column;justify-content: center;"> + <span style="font-size: 20px;">妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃</span> + <span>Registration form for the issuance of inspection reports</span> + </h4> + <table border="1" class="tables" cellpadding="10"> + <tr> + <td> + <p>搴忓彿</p> + <p class="en">No.</p> + </td> + <td> + <p>妫�楠屾姤鍛婄紪鍙�</p> + <p class="en">Inspection report number</p> + </td> + <td> + <p>椤垫暟</p> + <p class="en">Pages</p> + </td> + <td> + <p>鍙戦�佷唤鏁�</p> + <p class="en">Number of copies sent</p> + </td> + <td> + <p>鍙戝線浣曞</p> + <p class="en">Where to send to</p> + </td> + <td> + <p>鍙戦�佹柟寮�</p> + <p class="en">Send method</p> + </td> + <td> + <p>鍙戦�佹棩鏈�</p> + <p class="en">Date sent</p> + </td> + <td> + <p>鍙戦�佷汉</p> + <p class="en">Sender</p> + </td> + <td> + <p>绛炬敹浜�</p> + <p class="en">Signatory</p> + </td> + <td> + <p>澶囨敞</p> + <p class="en">Remark</p> + </td> + </tr> + <tr v-for="(item,index) in mutilSelect" :key="index"> + <td>{{ index+1 }}</td> + <td>{{ item.insReportCode }}</td> + <td>{{ item.pages }}</td> + <td>{{ item.number }}</td> + <td>{{ item.send }}</td> + <td>{{ item.method }}</td> + <td>{{ item.sendTime }}</td> + <td>{{ item.sendUserName }}</td> + <td> + <img :src="javaApi+'/img/'+item.signatoryUrl" :alt="item.signatory" style="width: 100px;"> + </td> + <td>{{ item.remark }}</td> + </tr> + </table> + </div> + </div> --> + </div> +</template> + +<script> +import ValueTable from '../tool/value-table.vue' +export default { + components: { + ValueTable + }, + data() { + return { + outLoading:false, + addPower:true, + outPower:true, + componentData: { + entity: { + insReportCode: null, + // sendUserName: null, + orderBy: { + field: 'createTime', + order: 'desc' + } + }, + isIndex: true, + showSelect: true, + select: true, + selectMethod: 'handleChangeTask', + do: [{ + id: 'delete', + font: '鍒犻櫎', + type: 'text', + method: 'doDiy' + }, { + id: 'handleWork', + font: '淇敼', + type: 'text', + method: 'handleWork' + }], + tagField: {}, + selectField: { + sendUser:{ + select: [] + }, + signatory:{ + select: [] + }, + }, + // addUpload:['signatoryUrl'], + requiredAdd: [], + requiredUp: [], + needSort: [], + inputType:聽'' + }, + entityCopy: {}, + upIndex: 0, + personList:[], + title:'鏂板', + addDialogVisible:false, + addInfo:{ + signatory:[] + }, + addLoading:false, + mutilSelect:[] + } + }, + mounted() { + this.entityCopy = this.HaveJson(this.componentData.entity); + this.getPower() + this.getAuthorizedPerson() + }, + methods: { + getPower(){ + let power = JSON.parse(sessionStorage.getItem('power')) + let up = false + let del = false + let add = false + let out = false + for (var i = 0; i < power.length; i++) { + if (power[i].menuMethod == 'doProcessReport') { + up = true + } + if (power[i].menuMethod == 'addProcessReport') { + add = true + } + if (power[i].menuMethod == 'delProcessReport') { + del = true + } + if (power[i].menuMethod == 'exportProcessReport') { + out = true + } + } + if (!up) { + this.componentData.do.splice(1, 1) + } + if (!del) { + this.componentData.do.splice(0, 1) + } + this.outPower = out + this.addPower = add + }, + handleDown() { + if(this.mutilSelect.length==0){ + this.$message.warning('璇烽�夋嫨瑕佸鍑虹殑鏁版嵁') + return + } + // html瀵煎嚭涓簑ord锛屾牱瀛愬お涓戜簡锛屼唬鐮佸厛鏀剧潃鍚� + // exportHtmlToWord(this.$refs.content,'妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃') + this.outLoading = true + this.$axios.post(this.$api.processReport.exportProcessReport,{"ids":this.mutilSelect.map(m=>m.id)},{headers: { 'Content-Type': 'application/json' },noQs:true}).then(res => { + this.outLoading = false + if (res.code === 201) return + this.$message.success('瀵煎嚭鎴愬姛') + const url = this.javaApi+'/word/'+res.message; + const link = document.createElement('a'); + link.href = url; + link.download = '鎶ュ憡缁撴灉'; + link.click(); + }) + }, + openAdd() { + this.title = '鏂板' + this.addInfo = { + signatory:[] + } + this.addDialogVisible = true; + }, + refreshTable() { + this.$refs['ValueTable'].selectList() + }, + refresh() { + this.componentData.entity = this.HaveJson(this.entityCopy) + this.upIndex++ + this.refreshTable() + }, + 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 + }) + }, + handleAdd(){ + this.addLoading = true + delete this.addInfo.createTime + delete this.addInfo.createUser + delete this.addInfo.updateTime + delete this.addInfo.signatoryUrl + delete this.addInfo.updateUserer + delete this.addInfo.sendUserName + let addInfo = this.HaveJson(this.addInfo) + addInfo.signatory = addInfo.signatory.join(',') + this.$axios.post(this.$api.processReport[this.title=='鏂板'?'addProcessReport':'doProcessReport'], addInfo,{headers: { 'Content-Type': 'application/json' }}).then(res => { + this.addLoading = false + if (res.code == 201) { + return + } + this.addDialogVisible = false + this.$message({ + type: 'success', + message: '鎿嶄綔鎴愬姛!' + }); + this.refreshTable() + }).catch(err => {}) + }, + handleWork(row){ + this.title = '淇敼' + this.addInfo = row + console.log(this.addInfo) + this.addInfo.signatory = this.addInfo.signatory?this.addInfo.signatory.split(',').map(m=>Number(m)):[] + this.addDialogVisible = true; + }, + handleChangeTask(list){ + this.mutilSelect = list + } + } +} +</script> + +<style scoped> +.title { + height: 60px; + line-height: 60px; + } + .search { + background-color: #fff; + height: 80px; + display: flex; + align-items: center; + } + + .search_thing { + width: 350px; + display: flex; + align-items: center; + } + + .search_label { + width: 110px; + font-size: 14px; + text-align: right; + } + + .search_input { + width: calc(100% - 110px); + } + + .table { + margin-top: 10px; + background-color: #fff; + width: calc(100% - 40px); + height: calc(100% - 60px - 80px - 10px - 40px); + padding: 20px; + } + .tables { + table-layout: fixed; + width: 100%; + margin-top: 10px; + } + + .tables td { + height: 40px; + width: 100px; + text-align: center; + font-size: 14px; + word-wrap: break-word; + white-space: normal; + } + .en{ + font-size: 12px; + word-break: break-word; /* 鑷姩鏂 */ + overflow-wrap: break-word; /* 闃叉婧㈠嚭 */ + white-space: normal; /* 榛樿鎹㈣ */ + } +</style> -- Gitblit v1.9.3