From 9dd11bd6a971e13aa74ad7a8994f9710edb42590 Mon Sep 17 00:00:00 2001 From: spring <2396852758@qq.com> Date: 星期二, 25 二月 2025 15:05:51 +0800 Subject: [PATCH] 修改导出 --- src/views/CNAS/systemManagement/customerSatisfaction/index.vue | 7 src/views/CNAS/systemManagement/documentControl/components/DistributionCollectionRecord.vue | 28 - src/views/CNAS/systemManagement/managementReview/components/reviewReport.vue | 27 - src/views/CNAS/systemManagement/managementReview/components/managementReviewPlan.vue | 33 - src/views/structural/capabilityAndLaboratory/laboratory/index.vue | 257 +++------------ src/api/cnas/process/reportResults.js | 29 + src/views/CNAS/process/reportResults/index.vue | 431 ++++++++++++++++++++++++++ src/views/CNAS/resourceDemand/standardMaterialAccept/index.vue | 89 ++--- src/views/CNAS/systemManagement/managementReview/components/meetingRecords.vue | 27 - 9 files changed, 549 insertions(+), 379 deletions(-) diff --git a/src/api/cnas/process/reportResults.js b/src/api/cnas/process/reportResults.js new file mode 100644 index 0000000..4f140af --- /dev/null +++ b/src/api/cnas/process/reportResults.js @@ -0,0 +1,29 @@ +// 鎶ュ憡缁撴灉鐩稿叧鎺ュ彛 +import request from "@/utils/request"; + +//8鎶ュ憡缁撴灉-瀵煎嚭 +export function exportProcessReport(query) { + return request({ + url: "/processReport/exportProcessReport", + method: "get", + params: query, + }); +} + +// 8鎶ュ憡缁撴灉-鏂板 +export function addProcessReport(data) { + return request({ + url: "/processReport/addProcessReport", + method: "post", + data: data, + }); +} + +// 8鎶ュ憡缁撴灉-淇敼 +export function doProcessReport(data) { + return request({ + url: "/processReport/doProcessReport", + method: "post", + data: data, + }); +} diff --git a/src/views/CNAS/process/reportResults/index.vue b/src/views/CNAS/process/reportResults/index.vue new file mode 100644 index 0000000..dd4403e --- /dev/null +++ b/src/views/CNAS/process/reportResults/index.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="queryParams.insReportCode" + @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"> + <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 290px)'" + :page="page" @pagination="pagination"></lims-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> + </div> +</template> + +<script> +import limsTable from "@/components/Table/lims-table.vue"; +import { + exportProcessReport, + doProcessReport, + addProcessReport +} from '@/api/cnas/process/reportResults.js' +import { + selectUserCondition, +} from "@/api/business/inspectionTask.js"; +export default { + components: { + limsTable + }, + 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: 'handleWork', + font: '淇敼', + type: 'text', + method: 'handleWork' + }, + { + id: 'delete', + font: '鍒犻櫎', + type: 'text', + method: 'doDiy' + } + ], + tagField: {}, + selectField: { + sendUser: { + select: [] + }, + signatory: { + select: [] + }, + }, + // addUpload:['signatoryUrl'], + requiredAdd: [], + requiredUp: [], + needSort: [], + inputType: '' + }, + entityCopy: {}, + upIndex: 0, + personList: [], + title: '鏂板', + addDialogVisible: false, + addInfo: { + signatory: [] + }, + addLoading: false, + mutilSelect: [], + queryParams: {}, + tableData: [], + column: [ + { label: "缂栧彿", prop: "number" }, + { label: "杈呭姪椤圭洰鍚嶇О", prop: "auxiliaryProject", width: "120px" }, + { + label: "瀹為獙瀹�", + prop: "laboratory", + dataType: "tag", + formatData: (params) => { + return this.laboratoryList.find((m) => m.value == params).label; + }, + }, + { label: "鍗曚綅", prop: "unit" }, + { label: "鏍稿噯宸ユ椂", prop: "approvedWorkingHour" }, + { label: "閮ㄩ棬", prop: "department" }, + { label: "澶囨敞", prop: "remarks" }, + { + dataType: "action", + fixed: "right", + label: "鎿嶄綔", + operation: [ + { + name: "缂栬緫", + type: "text", + clickFun: (row) => { + this.openAdd("缂栬緫", row); + }, + showHide: (row) => { + return this.checkPermi([ + "performance:manHour:workTimeConfig:edit", + ]); + }, + }, + { + name: "鍒犻櫎", + type: "text", + clickFun: (row) => { + this.handleDelete(row); + }, + showHide: (row) => { + return this.checkPermi([ + "performance:manHour:workTimeConfig:del", + ]); + }, + }, + ], + }, + ], + page: { + total: 0, + size: 10, + current: 0, + }, + tableLoading: false, + } + }, + 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 + exportProcessReport({ ids: this.mutilSelect.map(m => m.id) }).then(res => { + this.outLoading = false + if (res.code === 201) return + this.$message.success('瀵煎嚭鎴愬姛') + const url = this.javaApi + '/word/' + res.message; + this.$download.saveAs(url, "鎶ュ憡缁撴灉"); + }) + }, + 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() { + selectUserCondition().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(',') + if (this.title == '鏂板') { + addProcessReport(addInfo).then(res => { + this.addLoading = false + if (res.code == 201) { + return + } + this.addDialogVisible = false + this.$message({ + type: 'success', + message: '鎿嶄綔鎴愬姛!' + }); + this.refreshTable() + }).catch(err => { }) + } else { + doProcessReport(addInfo).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> diff --git a/src/views/CNAS/resourceDemand/standardMaterialAccept/index.vue b/src/views/CNAS/resourceDemand/standardMaterialAccept/index.vue index b6bb91f..1a67d66 100644 --- a/src/views/CNAS/resourceDemand/standardMaterialAccept/index.vue +++ b/src/views/CNAS/resourceDemand/standardMaterialAccept/index.vue @@ -19,34 +19,34 @@ </div> <div class="table"> <lims-table :tableData="tableData" :column="columns" :height="'calc(100vh - 250px)'" @pagination="pagination" - :page="page" :tableLoading="tableLoading"></lims-table> + :page="page" :tableLoading="tableLoading"></lims-table> </div> <AddRecord ref="addRecordRef" @submit="submit"></AddRecord> </div> -<!-- <div class="tables">--> -<!-- <ZTTable--> -<!-- :column="columns"--> -<!-- :table-data="tableData"--> -<!-- >--> -<!-- <template slot="action" slot-scope="{ row }">--> -<!-- <el-button type="text" @click="edit(row)">缂栬緫</el-button>--> -<!-- </template>--> -<!-- </ZTTable>--> -<!-- <div class="pagination">--> -<!-- <div></div>--> -<!-- <el-pagination--> -<!-- :page-size="pagination.pageSize"--> -<!-- :page-sizes="[10, 20, 30, 40]"--> -<!-- :total="pagination.total"--> -<!-- layout="total, sizes, prev, pager, next, jumper"--> -<!-- @current-change="handleCurrent"--> -<!-- @size-change="handleSize"--> -<!-- >--> -<!-- </el-pagination>--> -<!-- </div>--> -<!-- </div>--> -<!-- <AddRecord ref="addRecordRef" @submit="submit"></AddRecord>--> + <!-- <div class="tables">--> + <!-- <ZTTable--> + <!-- :column="columns"--> + <!-- :table-data="tableData"--> + <!-- >--> + <!-- <template slot="action" slot-scope="{ row }">--> + <!-- <el-button type="text" @click="edit(row)">缂栬緫</el-button>--> + <!-- </template>--> + <!-- </ZTTable>--> + <!-- <div class="pagination">--> + <!-- <div></div>--> + <!-- <el-pagination--> + <!-- :page-size="pagination.pageSize"--> + <!-- :page-sizes="[10, 20, 30, 40]"--> + <!-- :total="pagination.total"--> + <!-- layout="total, sizes, prev, pager, next, jumper"--> + <!-- @current-change="handleCurrent"--> + <!-- @size-change="handleSize"--> + <!-- >--> + <!-- </el-pagination>--> + <!-- </div>--> + <!-- </div>--> + <!-- <AddRecord ref="addRecordRef" @submit="submit"></AddRecord>--> </template> <script> @@ -138,8 +138,8 @@ }, methods: { async getTableData() { - const res = await getPageAcceptance(this.form); - if(res.code === 200){ + const res = await getPageAcceptance(this.form); + if (res.code === 200) { this.tableData = res.data.records; this.page.total = res.data.total; } @@ -150,9 +150,9 @@ }, async submit(form) { - const {code} = await form.acceptance.id ? updateAcceptanc(this.form):addAcceptance((this.form)); - if(code == 200) { - this.$message.success(`${form.acceptance.id ? '缂栬緫':'娣诲姞'}鎴愬姛`) + const { code } = await form.acceptance.id ? updateAcceptanc(this.form) : addAcceptance((this.form)); + if (code == 200) { + this.$message.success(`${form.acceptance.id ? '缂栬緫' : '娣诲姞'}鎴愬姛`) this.getTableData() } }, @@ -169,7 +169,7 @@ url: getAcceptanceDetails, params: { id } }) - if(code == 200) { + if (code == 200) { return data; } }, @@ -183,33 +183,8 @@ url: `${exportAcceptance}`, responseType: "blob" }) - const blob = new Blob([res], {type: 'application/octet-stream'}); - //灏咮lob 瀵硅薄杞崲鎴愬瓧绗︿覆 - let reader = new FileReader(); - reader.readAsText(blob, 'utf-8'); - reader.onload = () => { - try { - let result = JSON.parse(reader.result); - if (result.message) { - this.$message.error(result.message); - } else { - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = '鏍囧噯鐗╄川楠屾敹.xlsx'; - link.click(); - this.$message.success('瀵煎嚭鎴愬姛') - } - } catch (err) { - console.log(err); - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = '鏍囧噯鐗╄川楠屾敹.xlsx'; - link.click(); - this.$message.success('瀵煎嚭鎴愬姛') - } - } + const blob = new Blob([res], { type: 'application/octet-stream' }); + this.$download.saveAs(blob, '鏍囧噯鐗╄川楠屾敹.xlsx'); }, // 鍒嗛〉鍒囨崲 diff --git a/src/views/CNAS/systemManagement/customerSatisfaction/index.vue b/src/views/CNAS/systemManagement/customerSatisfaction/index.vue index 414a023..a85c943 100644 --- a/src/views/CNAS/systemManagement/customerSatisfaction/index.vue +++ b/src/views/CNAS/systemManagement/customerSatisfaction/index.vue @@ -310,13 +310,10 @@ let url = ''; if (row.type == 1) { url = this.javaApi + '/img/' + row.fileUrl - file.downloadIamge(url, row.fileName) + this.$download.saveAs(url, row.fileName); } else { url = this.javaApi + '/word/' + row.fileUrl - const link = document.createElement('a'); - link.href = url; - link.download = row.fileName; - link.click(); + this.$download.saveAs(url, row.fileName); } }, // 鍒犻櫎瀹㈡埛鍒嗘瀽闄勪欢 diff --git a/src/views/CNAS/systemManagement/documentControl/components/DistributionCollectionRecord.vue b/src/views/CNAS/systemManagement/documentControl/components/DistributionCollectionRecord.vue index 0548ea4..257bc6b 100644 --- a/src/views/CNAS/systemManagement/documentControl/components/DistributionCollectionRecord.vue +++ b/src/views/CNAS/systemManagement/documentControl/components/DistributionCollectionRecord.vue @@ -394,33 +394,7 @@ exportManageDocumentIssueRecycle(this.queryParams).then(res => { this.outLoading = false const blob = new Blob([res], { type: 'application/octet-stream' }); - // this.$download.saveAs(blob, '鍙戞斁鍥炴敹璁板綍.xlsx') - //灏咮lob 瀵硅薄杞崲鎴愬瓧绗︿覆 - let reader = new FileReader(); - reader.readAsText(blob, 'utf-8'); - reader.onload = () => { - try { - let result = JSON.parse(reader.result); - if (result.message) { - this.$message.error(result.message); - } else { - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = '鍙戞斁鍥炴敹璁板綍.xlsx'; - link.click(); - this.$message.success('瀵煎嚭鎴愬姛') - } - } catch (err) { - console.log(err); - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = '鍙戞斁鍥炴敹璁板綍.xlsx'; - link.click(); - this.$message.success('瀵煎嚭鎴愬姛') - } - } + this.$download.saveAs(blob, '鍙戞斁鍥炴敹璁板綍.xlsx'); }) }, changeFileList(e) { diff --git a/src/views/CNAS/systemManagement/managementReview/components/managementReviewPlan.vue b/src/views/CNAS/systemManagement/managementReview/components/managementReviewPlan.vue index db15a30..20cd3c2 100644 --- a/src/views/CNAS/systemManagement/managementReview/components/managementReviewPlan.vue +++ b/src/views/CNAS/systemManagement/managementReview/components/managementReviewPlan.vue @@ -276,33 +276,7 @@ return } const blob = new Blob([res], { type: 'application/octet-stream' }); - //灏咮lob 瀵硅薄杞崲鎴愬瓧绗︿覆 - let reader = new FileReader(); - reader.readAsText(blob, 'utf-8'); - reader.onload = () => { - try { - let result = JSON.parse(reader.result); - if (result.message) { - this.$message.error(result.message); - } else { - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = '璇勫璁″垝.docx'; - link.click(); - this.$download.saveAs(blob, name) - this.$message.success('瀵煎嚭鎴愬姛') - } - } catch (err) { - console.log(err); - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = '璇勫璁″垝.docx'; - link.click(); - this.$message.success('瀵煎嚭鎴愬姛') - } - } + this.$download.saveAs(blob, '璇勫璁″垝.docx'); }) }, lookFile(url, name) { @@ -313,10 +287,7 @@ handleDown0(url, name) { if (!url) return this.$message.warning('鏂囦欢鏈笂浼�') let url0 = this.javaApi + '/word/' + url - const link = document.createElement('a'); - link.href = url0; - link.target = '_blank'; - link.click(); + this.$download.saveAs(url0, name); } } }; diff --git a/src/views/CNAS/systemManagement/managementReview/components/meetingRecords.vue b/src/views/CNAS/systemManagement/managementReview/components/meetingRecords.vue index 819fa92..890ae93 100644 --- a/src/views/CNAS/systemManagement/managementReview/components/meetingRecords.vue +++ b/src/views/CNAS/systemManagement/managementReview/components/meetingRecords.vue @@ -172,32 +172,7 @@ return } const blob = new Blob([res], { type: 'application/octet-stream' }); - //灏咮lob 瀵硅薄杞崲鎴愬瓧绗︿覆 - let reader = new FileReader(); - reader.readAsText(blob, 'utf-8'); - reader.onload = () => { - try { - let result = JSON.parse(reader.result); - if (result.message) { - this.$message.error(result.message); - } else { - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = '浼氳璁板綍.docx'; - link.click(); - this.$message.success('瀵煎嚭鎴愬姛') - } - } catch (err) { - console.log(err); - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = '浼氳璁板綍.docx'; - link.click(); - this.$message.success('瀵煎嚭鎴愬姛') - } - } + this.$download.saveAs(blob, '浼氳璁板綍.docx'); }) }, } diff --git a/src/views/CNAS/systemManagement/managementReview/components/reviewReport.vue b/src/views/CNAS/systemManagement/managementReview/components/reviewReport.vue index 72a90bc..1599da1 100644 --- a/src/views/CNAS/systemManagement/managementReview/components/reviewReport.vue +++ b/src/views/CNAS/systemManagement/managementReview/components/reviewReport.vue @@ -231,32 +231,7 @@ return } const blob = new Blob([res], { type: 'application/octet-stream' }); - //灏咮lob 瀵硅薄杞崲鎴愬瓧绗︿覆 - let reader = new FileReader(); - reader.readAsText(blob, 'utf-8'); - reader.onload = () => { - try { - let result = JSON.parse(reader.result); - if (result.message) { - this.$message.error(result.message); - } else { - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = '璇勫鎶ュ憡.docx'; - link.click(); - this.$message.success('瀵煎嚭鎴愬姛') - } - } catch (err) { - console.log(err); - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = '璇勫鎶ュ憡.docx'; - link.click(); - this.$message.success('瀵煎嚭鎴愬姛') - } - } + this.$download.saveAs(blob, '璇勫鎶ュ憡.docx'); }) }, submit(type, row) { diff --git a/src/views/structural/capabilityAndLaboratory/laboratory/index.vue b/src/views/structural/capabilityAndLaboratory/laboratory/index.vue index 820d8d2..5e33081 100644 --- a/src/views/structural/capabilityAndLaboratory/laboratory/index.vue +++ b/src/views/structural/capabilityAndLaboratory/laboratory/index.vue @@ -3,103 +3,50 @@ <div> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> <el-form-item label="璧勮川鍚嶇О" prop="name"> - <el-select - v-model="queryParams.name" - placeholder="閫夋嫨璧勮川鍚嶇О" - size="small" - @change="refreshTable()" - > - <el-option - v-for="dict in dict.type.cnas_method_qualification" - :key="dict.value" - :label="dict.label" - :value="dict.value" - > + <el-select v-model="queryParams.name" placeholder="閫夋嫨璧勮川鍚嶇О" size="small" @change="refreshTable()"> + <el-option v-for="dict in dict.type.cnas_method_qualification" :key="dict.value" :label="dict.label" + :value="dict.value"> {{ dict.label }} </el-option> </el-select> </el-form-item> <el-form-item> - <el-button - type="primary" - icon="el-icon-search" - size="mini" - @click="refreshTable" - >鏌� 璇�</el-button - > - <el-button icon="el-icon-refresh" size="mini" @click="refresh" - >閲� 缃�</el-button - > + <el-button type="primary" icon="el-icon-search" size="mini" @click="refreshTable">鏌� 璇�</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="refresh">閲� 缃�</el-button> </el-form-item> </el-form> </div> <div> <el-row class="title"> <el-col :span="12" style="text-align: left"> - <el-radio-group - v-model="radio" - @input="selectorSwitch" - size="medium" - fill="#409EFF" - > + <el-radio-group v-model="radio" @input="selectorSwitch" size="medium" fill="#409EFF"> <el-radio-button :label="0">璧勮川鏄庣粏</el-radio-button> <el-radio-button :label="1">璧勮川鎬昏</el-radio-button> </el-radio-group> </el-col> <el-col :span="12" style="text-align: right" v-if="radio === 0"> - <el-button size="small" type="primary" @click="openAdd" - >璧勮川鏇存柊</el-button - > - <el-button size="small" icon="el-icon-delete" @click="handleDel" - >鍒犻櫎</el-button - > + <el-button size="small" type="primary" @click="openAdd">璧勮川鏇存柊</el-button> + <el-button size="small" icon="el-icon-delete" @click="handleDel">鍒犻櫎</el-button> </el-col> </el-row> </div> <div v-if="radio === 0"> - <lims-table - :tableData="tableData" - :column="column" - :isSelection="true" - :handleSelectionChange="handleSelectionChange" - @pagination="pagination" - :height="'calc(100vh - 300px)'" - :page="page" - :tableLoading="tableLoading" - ></lims-table> + <lims-table :tableData="tableData" :column="column" :isSelection="true" + :handleSelectionChange="handleSelectionChange" @pagination="pagination" :height="'calc(100vh - 300px)'" + :page="page" :tableLoading="tableLoading"></lims-table> </div> - <div - class="table" - v-if="radio === 1" - v-loading="pageLoading" - @scroll="scrollFn" - > + <div class="table" v-if="radio === 1" v-loading="pageLoading" @scroll="scrollFn"> <el-row :gutter="16"> - <el-col - :span="8" - v-for="(m, i) in list" - :key="i" - :xs="24" - :sm="12" - :md="8" - :lg="8" - :xl="6" - style="margin-bottom: 16px" - > + <el-col :span="8" v-for="(m, i) in list" :key="i" :xs="24" :sm="12" :md="8" :lg="8" :xl="6" + style="margin-bottom: 16px"> <div class="table-item"> - <el-image - style=" + <el-image style=" width: 102px; height: 102px; margin-right: 20px; border-radius: 16px; - " - :src="javaApi + '/img/' + m.imageUrl" - > - <div - slot="error" - class="image-error" - style=" + " :src="javaApi + '/img/' + m.imageUrl"> + <div slot="error" class="image-error" style=" width: 100px; height: 100px; border-radius: 16px; @@ -107,18 +54,11 @@ align-items: center; justify-content: center; border: 1px solid #eeeeee; - " - > - <i - class="el-icon-picture-outline" - style="font-size: 30px; color: #666666" - ></i> + "> + <i class="el-icon-picture-outline" style="font-size: 30px; color: #666666"></i> </div> </el-image> - <div - class="table-item-right" - style="flex: 1; font-size: 12px; color: #666666" - > + <div class="table-item-right" style="flex: 1; font-size: 12px; color: #666666"> <p style="line-height: 26px"> 璧勮川鍚嶇О锛�<span style="color: #3a7bfa">{{ m.name }}</span> </p> @@ -126,168 +66,76 @@ <p style="line-height: 26px">鍒版湡鏃堕棿锛歿{ m.expireTime }}</p> <p> <span>鐘舵�侊細</span> - <el-tag - :type="m.state === 0 ? 'danger' : 'success'" - size="small" - >{{ m.state === 0 ? "澶辨晥" : "鏈夋晥" }}</el-tag - > + <el-tag :type="m.state === 0 ? 'danger' : 'success'" size="small">{{ m.state === 0 ? "澶辨晥" : "鏈夋晥" + }}</el-tag> </p> </div> </div> </el-col> </el-row> - <div - v-if="list.length < 1 && !pageLoading && !isLoding" - style=" + <div v-if="list.length < 1 && !pageLoading && !isLoding" style=" color: #909399; font-size: 14px; text-align: center; margin-top: 200px; - " - > + "> 鏆傛棤鏁版嵁 </div> <div v-if="list.length > 0"> - <el-button - v-if="isLoding" - type="text" - style="display: flex; margin: 0 auto; color: #909399" - > + <el-button v-if="isLoding" type="text" style="display: flex; margin: 0 auto; color: #909399"> <i class="el-icon-loading" style="font-size: 20px"></i> </el-button> - <el-button - type="text" - v-if="finishLoding" - style="display: flex; margin: 0 auto; color: #909399" - >宸茬粡娌℃湁鏇村鍟</el-button - > + <el-button type="text" v-if="finishLoding" + style="display: flex; margin: 0 auto; color: #909399">宸茬粡娌℃湁鏇村鍟</el-button> </div> </div> - <el-dialog - title="璧勮川鏇存柊" - :visible.sync="qualificationsConnectVisible" - width="400px" - > - <el-form - ref="formDataRef" - :model="formData" - label-position="right" - :rules="formDataRules" - label-width="78px" - > + <el-dialog title="璧勮川鏇存柊" :visible.sync="qualificationsConnectVisible" width="400px"> + <el-form ref="formDataRef" :model="formData" label-position="right" :rules="formDataRules" label-width="78px"> <el-form-item label="璧勮川鍚嶇О" prop="name"> - <el-select - v-model="formData.name" - placeholder="璇烽�夋嫨" - style="width: 100%" - size="small" - clearable - > - <el-option - v-for="dict in dict.type.cnas_method_qualification" - :key="dict.value" - :label="dict.label" - :value="dict.value" - > + <el-select v-model="formData.name" placeholder="璇烽�夋嫨" style="width: 100%" size="small" clearable> + <el-option v-for="dict in dict.type.cnas_method_qualification" :key="dict.value" :label="dict.label" + :value="dict.value"> {{ dict.label }} </el-option> </el-select> </el-form-item> <el-form-item label="璧勮川缂栫爜" prop="code"> - <el-input - size="small" - placeholder="璇疯緭鍏�" - clearable - v-model="formData.code" - ></el-input> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="formData.code"></el-input> </el-form-item> <el-form-item label="棰佸彂鏈烘瀯" prop="organization"> - <el-input - size="small" - placeholder="璇疯緭鍏�" - clearable - v-model="formData.organization" - ></el-input> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="formData.organization"></el-input> </el-form-item> <el-form-item label="璧勮川璇存槑" prop="explanation"> - <el-input - size="small" - placeholder="璇疯緭鍏�" - clearable - v-model="formData.explanation" - ></el-input> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="formData.explanation"></el-input> </el-form-item> <el-form-item label="棰佸彂鏃堕棿" prop="dateOfIssuance"> - <el-date-picker - style="width: 100%" - v-model="formData.dateOfIssuance" - type="datetime" - size="small" - format="yyyy-MM-dd HH:mm:ss" - value-format="yyyy-MM-dd HH:mm:ss" - clearable - placeholder="閫夋嫨鏃ユ湡" - > + <el-date-picker style="width: 100%" v-model="formData.dateOfIssuance" type="datetime" size="small" + format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" clearable placeholder="閫夋嫨鏃ユ湡"> </el-date-picker> </el-form-item> <el-form-item label="鍒版湡鏃堕棿" prop="expireTime"> - <el-date-picker - style="width: 100%" - v-model="formData.expireTime" - type="datetime" - size="small" - format="yyyy-MM-dd HH:mm:ss" - value-format="yyyy-MM-dd HH:mm:ss" - clearable - placeholder="閫夋嫨鏃ユ湡" - > + <el-date-picker style="width: 100%" v-model="formData.expireTime" type="datetime" size="small" + format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" clearable placeholder="閫夋嫨鏃ユ湡"> </el-date-picker> </el-form-item> <el-form-item label="璧勮川鍥剧墖"> - <el-upload - ref="upload" - :action="uploadAction" - :on-success="(m) => handleSuccessUpImg(m, 'imageUrl')" - accept="image/jpg,image/jpeg,image/png" - :multiple="false" - :limit="1" - :headers="headers" - :on-change="beforeUpload" - :on-error="onError" - > - <el-button slot="trigger" size="small" type="primary" - >閫夊彇鍥剧墖</el-button - > + <el-upload ref="upload" :action="uploadAction" :on-success="(m) => handleSuccessUpImg(m, 'imageUrl')" + accept="image/jpg,image/jpeg,image/png" :multiple="false" :limit="1" :headers="headers" + :on-change="beforeUpload" :on-error="onError"> + <el-button slot="trigger" size="small" type="primary">閫夊彇鍥剧墖</el-button> </el-upload> </el-form-item> <el-form-item label="璧勮川闄勪欢"> - <el-upload - ref="upload1" - :action="uploadAction" - :on-success="(m) => handleSuccessUpImg(m, 'fileUrl')" - accept="image/jpg,image/jpeg,image/png,application/pdf,.doc,.docx" - :headers="headers" - :multiple="false" - :limit="1" - :on-change="beforeUpload1" - :on-error="onError1" - > - <el-button slot="trigger" size="small" type="primary" - >閫夊彇鏂囦欢</el-button - > + <el-upload ref="upload1" :action="uploadAction" :on-success="(m) => handleSuccessUpImg(m, 'fileUrl')" + accept="image/jpg,image/jpeg,image/png,application/pdf,.doc,.docx" :headers="headers" :multiple="false" + :limit="1" :on-change="beforeUpload1" :on-error="onError1"> + <el-button slot="trigger" size="small" type="primary">閫夊彇鏂囦欢</el-button> </el-upload> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> - <el-button @click="qualificationsConnectVisible = false" - >鍙� 娑�</el-button - > - <el-button - type="primary" - @click="confirmQualifications" - :loading="loading" - >纭� 瀹�</el-button - > + <el-button @click="qualificationsConnectVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="confirmQualifications" :loading="loading">纭� 瀹�</el-button> </span> </el-dialog> </div> @@ -480,12 +328,6 @@ }, // 璧勮川鏄庣粏闄勪欢涓嬭浇 handleDownLoad(row) { - // let url = row.fileUrl; - // const link = document.createElement('a'); - // link.href = this.javaApi + '/img/'+ url; - // document.body.appendChild(link); - // link.target = '_blank'; - // link.click(); const url = process.env.VUE_APP_BASE_API + "/img/" + row.fileUrl; this.$download.saveAs(url, row.fileUrl); }, @@ -595,6 +437,7 @@ line-height: 40px; margin-bottom: 10px; } + .table-item { border-radius: 8px 8px 8px 8px; box-shadow: 4px 4px 8px 0px rgba(51, 51, 51, 0.04); -- Gitblit v1.9.3