¶Ô±ÈÐÂÎļþ |
| | |
| | | //è´¨éçç£ç®¡çè¯å®¡è¾å
¥ææç¸å
³æ¥å£ |
| | | import request from '@/utils/request' |
| | | |
| | | // å页æ¥è¯¢ |
| | | export function pageManagementReview(query) { |
| | | return request({ |
| | | url: '/managementReview/pageManagementReview', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | // å¯¼åº |
| | | export function exportManagementReview(query) { |
| | | return request({ |
| | | url: '/managementReview/exportManagementReview', |
| | | method: 'get', |
| | | params: query, |
| | | responseType: 'blob' |
| | | }) |
| | | } |
| | | // å é¤ |
| | | export function deleteManagementReview(query) { |
| | | return request({ |
| | | url: '/managementReview/deleteManagementReview', |
| | | method: 'delete', |
| | | params: query |
| | | }) |
| | | } |
| | | // æ°å¢ä¿®æ¹æäº¤ |
| | | export function saveOrUpdateManagementReview(query) { |
| | | return request({ |
| | | url: '/managementReview/saveOrUpdateManagementReview', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | |
| | | <div v-if="isImage"> |
| | | <img :src="imgUrl" alt="Image Preview" /> |
| | | </div> |
| | | <div v-if="isPdf"> |
| | | <object :data="fileUrl" type="application/pdf" width="100%" height="750px"> |
| | | <p>æ¨çæµè§å¨ä¸æ¯æ PDF é¢è§ã<a :href="fileUrl" style="color: #3a7bfa;" target="_blank">ä¸è½½ PDF æä»¶</a></p> |
| | | </object> |
| | | <div v-if="isPdf" style="height: 80vh;"> |
| | | <!-- <object :data="fileUrl" type="application/pdf" width="100%" height="750px">--> |
| | | <!-- <p>æ¨çæµè§å¨ä¸æ¯æ PDF é¢è§ã<a :href="fileUrl" style="color: #3a7bfa;" target="_blank">ä¸è½½ PDF æä»¶</a></p>--> |
| | | <!-- </object>--> |
| | | <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" /> |
| | | </div> |
| | | <div v-if="isDoc"> |
| | | <p v-if="!isDocShow">ææ¡£æ æ³ç´æ¥é¢è§ï¼è¯·ä¸è½½æ¥çã</p> |
| | |
| | | import VueOfficeExcel from '@vue-office/excel' |
| | | //å¼å
¥ç¸å
³æ ·å¼ |
| | | import '@vue-office/excel/lib/index.css' |
| | | import onlyoffice from "@/components/Onlyoffice/onlyoffice.vue"; |
| | | export default { |
| | | components: { |
| | | onlyoffice, |
| | | VueOfficeDocx, |
| | | VueOfficeExcel, |
| | | }, |
| | |
| | | type: Object, |
| | | required: true |
| | | }, |
| | | option: { |
| | | type: Object, |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | </el-dialog> |
| | | <!--é¢è§æ¥å--> |
| | | <el-dialog :visible.sync="lookDialogVisible" fullscreen title="æ¥çéä»¶" top="5vh" width="800px"> |
| | | <filePreview v-if="lookDialogVisible" :currentFile="{}" |
| | | <filePreview v-if="lookDialogVisible" :currentFile="{}" :option="option" |
| | | :fileUrl="javaApi + '/word/' + currentInfo.finishReportUrl" style="height: 70vh;overflow-y: auto;" /> |
| | | <div> |
| | | æ¹åç¶æï¼ |
| | |
| | | <div style="margin: 0 auto;"> |
| | | <el-upload ref="upload1" :action="action1" :auto-upload="false" |
| | | :data="{ qualityMonitorDetailsId: qualityMonitorDetailsId }" :file-list="fileList1" :headers="uploadHeader" |
| | | :limit="1" :on-change="beforeUpload1" :on-error="onError1" :on-success="onSuccess1" accept='.doc,.docx' drag |
| | | :limit="1" :on-change="beforeUpload1" :on-error="onError1" :on-success="onSuccess1" accept='.doc,.docx,application/pdf,' drag |
| | | name="file"> |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">å°æä»¶æå°æ¤å¤ï¼æ<em>ç¹å»ä¸ä¼ </em></div> |
| | |
| | | ratifyRemark: '', |
| | | downloadDialog: false, |
| | | download: {}, |
| | | planYear: '' |
| | | planYear: '', |
| | | option: {} |
| | | }; |
| | | }, |
| | | mounted() { |
| | |
| | | if (row.finishReportUrl) { |
| | | this.currentInfo = row |
| | | this.ratifyStatus = row.ratifyStatus |
| | | const userName = this.nickName |
| | | const isPdf = /\.pdf$/i.test(row.finishReportUrl) |
| | | if (isPdf) { |
| | | this.option = { |
| | | url: this.javaApi + "/word/" + row.finishReportUrl, |
| | | isEdit: false, |
| | | fileType: 'pdf', |
| | | title: 'æ¥å', |
| | | lang: 'zh-CN', |
| | | isPrint: false, |
| | | user_id: 1, |
| | | user_name: userName, |
| | | editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + row.finishReportUrl |
| | | } |
| | | } else { |
| | | this.option = {} |
| | | } |
| | | this.lookDialogVisible = true |
| | | } else { |
| | | this.uploadDia1 = true |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="capacity-scope"> |
| | | <div style="display: flex;justify-content: space-between"> |
| | | <div style="display: flex;"> |
| | | <div style="margin-bottom: 18px;margin-right: 10px;display: flex;align-items: center;line-height: 32px;"> |
| | | <span style="width: 88px;font-size: 14px;font-weight: 700;color: #606266;">æä»¶åç§°</span> |
| | | <el-input v-model="queryParams.fileName" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | <div style="line-height: 30px;"> |
| | | <el-button type="primary" size="mini" @click="refreshTable">æ¥è¯¢</el-button> |
| | | <el-button size="mini" @click="refresh">éç½®</el-button> |
| | | </div> |
| | | </div> |
| | | <div style="line-height: 30px;"> |
| | | <el-button :loading="outLoading" size="small" type="primary" style="margin-right: 10px" @click="openForm('add')">æ°å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 270px)'" |
| | | :page="page" @pagination="pagination"></lims-table> |
| | | </div> |
| | | <el-dialog :visible.sync="addDialogVisible" title="è¯ä»·" width="900px" @close="closeDia"> |
| | | <el-form ref="form" :model="form" label-position="right" label-width="120px" :rules="formRules"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æä»¶åç§°:" prop="fileName"> |
| | | <el-input v-model="form.fileName" placeholder="请è¾å
¥" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="计åå
容:" prop="implementationContent"> |
| | | <el-input v-model="form.implementationContent" placeholder="请è¾å
¥" |
| | | size="small" |
| | | :rows="6" |
| | | type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="卿å
容:" prop="dynamicContent"> |
| | | <el-input v-model="form.dynamicContent" placeholder="请è¾å
¥" |
| | | size="small" |
| | | :rows="6" |
| | | type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="çç£äºº:" prop="supervisor"> |
| | | <el-select v-model="form.supervisor" |
| | | clearable filterable |
| | | placeholder="è¯·éæ©" size="small" style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.name" :label="item.name" :value="item.name"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="è´¨éè¯å®¡æ¥æ:" prop="superviseDate"> |
| | | <el-date-picker v-model="form.superviseDate" format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" size="small" value-format="yyyy-MM-dd" |
| | | type="date" style="width: 100%"></el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeDia">å æ¶</el-button> |
| | | <el-button :loading="addLoading" type="primary" @click="handleAdd">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import filePreview from "@/components/Preview/filePreview.vue"; |
| | | import { |
| | | exportProcessEvaluate, |
| | | doProcessEvaluate, |
| | | delProcessEvaluate, |
| | | pageProcessEvaluate, |
| | | } from '@/api/cnas/process/uncertainty.js' |
| | | import { mapGetters } from "vuex"; |
| | | import { |
| | | deleteManagementReview, |
| | | exportManagementReview, |
| | | pageManagementReview, saveOrUpdateManagementReview |
| | | } from "@/api/cnas/process/ensureResults/managementReview"; |
| | | import {selectUserCondition} from "@/api/cnas/resourceDemand/facilitiesEnvironment/facilitiesAndEnvironment"; |
| | | export default { |
| | | name: 'Uncertainty', |
| | | components: { |
| | | limsTable, |
| | | filePreview |
| | | }, |
| | | data() { |
| | | return { |
| | | addPower: false, |
| | | outPower: false, |
| | | outLoading: false, |
| | | addDialogVisible: false, |
| | | operationType: '', |
| | | addInfo: {}, |
| | | addLoading: false, |
| | | queryParams: {}, |
| | | tableData: [], |
| | | column: [ |
| | | { label: "æä»¶åç§°", prop: "fileName" }, |
| | | { label: "çç£äºº", prop: "supervisor" }, |
| | | { label: "è´¨éè¯å®¡æ¥æ", prop: "superviseDate" }, |
| | | { |
| | | dataType: "action", |
| | | label: "æä½", |
| | | operation: [ |
| | | { |
| | | name: "ç¼è¾", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.openForm('edit', row); |
| | | }, |
| | | }, |
| | | { |
| | | name: "å é¤", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleDelete(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: "导åº", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleDown0(row); |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 0, |
| | | }, |
| | | tableLoading: false, |
| | | form: { |
| | | fileName: '', |
| | | implementationContent: '', |
| | | dynamicContent: '', |
| | | supervisor: '', |
| | | superviseDate: '', |
| | | }, |
| | | formRules: { |
| | | fileName: [{required: true, message: '请填åæä»¶åç§°',trigger: 'blur'}], |
| | | implementationContent: [{required: true, message: '请填å计åå
容',trigger: 'blur'}], |
| | | dynamicContent: [{required: true, message: 'è¯·å¡«å¨æå
容',trigger: 'blur'}], |
| | | supervisor: [{required: true, message: 'è¯·éæ©çç£äºº',trigger: 'change'}], |
| | | superviseDate: [{required: true, message: 'è¯·éæ©æ¥æ',trigger: 'change'}], |
| | | }, |
| | | responsibleOptions: [], |
| | | } |
| | | }, |
| | | // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ |
| | | computed: { |
| | | ...mapGetters(["userId"]), |
| | | }, |
| | | mounted() { |
| | | this.getList() |
| | | }, |
| | | methods: { |
| | | getList() { |
| | | this.tableLoading = true; |
| | | let param = { ...this.queryParams, ...this.page }; |
| | | delete param.total; |
| | | pageManagementReview({ ...param }) |
| | | .then((res) => { |
| | | this.tableLoading = false; |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | this.tableLoading = false; |
| | | }); |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.getList(); |
| | | }, |
| | | refresh() { |
| | | this.queryParams = {}; |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | }, |
| | | refreshTable() { |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | }, |
| | | handleDown0(row) { |
| | | exportManagementReview({managementReviewId: row.managementReviewId}).then(res => { |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, row.fileName + '.docx'); |
| | | }) |
| | | }, |
| | | // æå¼æ°å¢ç¼è¾å¼¹æ¡ |
| | | openForm (type, row) { |
| | | this.addDialogVisible = true; |
| | | this.$nextTick(() => { |
| | | this.form = {} |
| | | this.$refs['form'].resetFields(); |
| | | if (type === 'edit') { |
| | | this.form = {...row} |
| | | } |
| | | this.operationType = type; |
| | | this.getUserList() |
| | | }) |
| | | }, |
| | | // æäº¤è¡¨å |
| | | handleAdd() { |
| | | this.addLoading = true; |
| | | saveOrUpdateManagementReview(this.form).then((res) => { |
| | | this.addLoading = false; |
| | | this.$message.success('è¯ä»·æå'); |
| | | this.closeDia(); |
| | | this.refreshTable() |
| | | }) |
| | | }, |
| | | closeDia() { |
| | | this.$refs['form'].resetFields(); |
| | | this.addDialogVisible = false; |
| | | }, |
| | | handleDelete(row) { |
| | | this.$confirm("æ¯å¦å é¤è¯¥æ¡æ°æ®?", "æç¤º", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning", |
| | | }).then(() => { |
| | | deleteManagementReview({ managementReviewId: row.managementReviewId }).then((res) => { |
| | | this.$message.success("å 餿å"); |
| | | this.refresh(); |
| | | }); |
| | | }).catch(() => { }); |
| | | }, |
| | | getUserList(){ |
| | | selectUserCondition({type: 2}).then(res => { |
| | | if (res.code == 200) { |
| | | this.responsibleOptions = res.data |
| | | } |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search_thing { |
| | | width: 350px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 80px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 80px); |
| | | } |
| | | </style> |