| | |
| | | <div style="width: 100%;height: 100%;"> |
| | | <div> |
| | | <el-row class="title"> |
| | | <el-col :span="12" style="padding-left: 20px;">报告编制</el-col> |
| | | <el-col :span="12" style="padding-left: 20px;text-align: left;">报告编制</el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="search"> |
| | |
| | | <el-button type="primary" @click="confirmClaim">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="报告审核" :visible.sync="issuedVisible" width="400px" :modal-append-to-body="false" |
| | | <el-dialog title="报告审核" :visible.sync="issuedVisible" width="80vw" :modal-append-to-body="false" |
| | | :fullscreen="fullscreen"> |
| | | <!-- <div class="full-screen"> |
| | | <div class="full-screen"> |
| | | <i class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;" v-if="!fullscreen"></i> |
| | | <img src="../../../static/img/no-full.svg" alt="" v-else style="cursor: pointer;" @click="fullscreen=false;" > |
| | | </div> --> |
| | | <!-- <div class="btns"> |
| | | <el-button type="primary" size="small">通过</el-button> |
| | | <el-button size="small">不通过</el-button> |
| | | </div> --> |
| | | </div> |
| | | <div style="height: 80vh;"> |
| | | <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" /> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="issuedReasonVisible=true">不通过</el-button> |
| | | <el-button type="primary" @click="subIssued" :loading="loadingIssued">通 过</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-button @click="issuedReasonVisible=true" :disabled="loadingIssued">不通过</el-button> |
| | | <el-button type="primary" @click="subIssued" :loading="loadingIssued">通 过</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="不通过原因" :visible.sync="issuedReasonVisible" width="400px" :modal-append-to-body="false"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">不通过原因:</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请输入" clearable v-model="reason"></el-input></div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="issuedReasonVisible=false">取消</el-button> |
| | | <el-button type="primary" @click="handleIssuedReason" :loading="loadingIssuedReason">确定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="报告批准" :visible.sync="approveVisible" width="400px" :modal-append-to-body="false" |
| | | :fullscreen="fullscreen"> |
| | | <!-- <div class="full-screen"> |
| | | <el-button @click="issuedReasonVisible=false" :disabled="loadingIssuedReason">取消</el-button> |
| | | <el-button type="primary" @click="handleIssuedReason" :loading="loadingIssuedReason">确定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="报告批准" :visible.sync="approveVisible" width="80vw" :modal-append-to-body="false" :fullscreen="fullscreen"> |
| | | <div class="full-screen"> |
| | | <i class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;" v-if="!fullscreen"></i> |
| | | <img src="../../../static/img/no-full.svg" alt="" v-else style="cursor: pointer;" @click="fullscreen=false;" > |
| | | </div> --> |
| | | <!-- <div class="btns"> |
| | | <el-button type="primary" size="small">批准</el-button> |
| | | <el-button size="small">不批准</el-button> |
| | | </div> --> |
| | | </div> |
| | | <div style="height: 80vh;"> |
| | | <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" /> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="approveReasonVisible=true">不批准</el-button> |
| | | <el-button type="primary" @click="subApprove" :loading="loadingApprove">批 准</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-button @click="approveReasonVisible=true" :disabled="loadingApprove">不批准</el-button> |
| | | <el-button type="primary" @click="subApprove" :loading="loadingApprove">批 准</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="不批准原因" :visible.sync="approveReasonVisible" width="400px" :modal-append-to-body="false"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">不批准原因:</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请输入" clearable v-model="reason"></el-input></div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="approveReasonVisible=false">取消</el-button> |
| | | <el-button type="primary" @click="handleApproveReason" :loading="loadingApproveReason">确定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | <el-button @click="approveReasonVisible=false" :disabled="loadingApproveReason">取消</el-button> |
| | | <el-button type="primary" @click="handleApproveReason" :loading="loadingApproveReason">确定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ValueTable from '../tool/value-table.vue' |
| | | import Word from '../tool/word.vue' |
| | | import file from '../../util/file'; |
| | | import { |
| | | convertToHtml |
| | | } from 'mammoth'; |
| | | import onlyoffice from '../tool/onlyoffice.vue' |
| | | export default { |
| | | components: { |
| | | ValueTable, |
| | | Word, |
| | | onlyoffice |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | showSelect: false, |
| | | select: false, |
| | | do: [ |
| | | // { |
| | | // id: 'handleWeave', |
| | | // font: '在线编制', |
| | | // type: 'text', |
| | | // method: 'handleWeave', |
| | | // disabFun: (row, index) => { |
| | | // return row.isExamine != null |
| | | // } |
| | | // }, |
| | | { |
| | | id: 'handleWeave', |
| | | font: '编制', |
| | | type: 'text', |
| | | method: 'handleWeave', |
| | | disabFun: (row, index) => { |
| | | return row.isExamine != null |
| | | } |
| | | }, |
| | | { |
| | | id: 'download', |
| | | font: '下载', |
| | |
| | | } |
| | | ], |
| | | linkEvent: { |
| | | // code: { |
| | | // method: 'selectAllByOne' |
| | | // } |
| | | code: { |
| | | method: 'selectAllByOne' |
| | | } |
| | | }, |
| | | tagField: { |
| | | isRatify: { |
| | |
| | | }, |
| | | selectField: {}, |
| | | requiredAdd: [], |
| | | needSort: ['createTime', 'state', 'writeTime', 'isExamine', 'examineTime', 'ratifyTime'], |
| | | requiredUp: [] |
| | | }, |
| | | entityCopy: {}, |
| | |
| | | value: ``, |
| | | reason: '', |
| | | currentInfo: null, |
| | | option:null |
| | | } |
| | | }, |
| | | mounted() { |
| | |
| | | // } |
| | | }, |
| | | methods: { |
| | | refreshTable() { |
| | | this.$refs['ValueTable'].selectList() |
| | | refreshTable(e) { |
| | | this.$refs['ValueTable'].selectList(e) |
| | | }, |
| | | refresh() { |
| | | this.componentData.entity = this.HaveJson(this.entityCopy) |
| | | this.upIndex++ |
| | | }, |
| | | async handleWeave(row) { |
| | | // this.value = await file.convertFileToHtml(row.url) |
| | | // this.claimVisible = true; |
| | | this.$axios.post(this.$api.insReport.wordToHtml, { |
| | | path: row.urlS ? row.urlS : row.url |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | // console.log(11111111,res.data) |
| | | this.value = res.data |
| | | .replace(/<a [^>]*>/g, "") |
| | | .replace(/<\/a>/g, "") |
| | | .replace(/ /g, " "); |
| | | this.claimVisible = true; |
| | | let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS |
| | | fileName = fileName.replace('/word/','') |
| | | const userName = JSON.parse(localStorage.getItem("user")).name; |
| | | //参考vabOnlyOffice组件参数配置 |
| | | const { href } = this.$router.resolve({ |
| | | path: `/wordEdit`, |
| | | query: { |
| | | url: this.javaApi + "/word/" + fileName, |
| | | isEdit: true, |
| | | fileType: "docx", |
| | | title: fileName, |
| | | lang: 'zh-CN', |
| | | isPrint: true, |
| | | user_id: 1, |
| | | user_name: userName, |
| | | editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName |
| | | } |
| | | |
| | | }).catch(error => { |
| | | console.error(error) |
| | | }) |
| | | window.open(href, '_blank'); |
| | | }, |
| | | // 权限分配 |
| | | getPower(radio) { |
| | |
| | | if (power[i].menuMethod == 'writeReport') { |
| | | sub = true |
| | | } |
| | | if (power[i].menuMethod == 'ratifyReport') { |
| | | approve = true |
| | | } |
| | | if (power[i].menuMethod == 'examineReport') { |
| | | issued = true |
| | | } |
| | | } |
| | | if (!approve) { |
| | | this.componentData.do.splice(5, 1) |
| | | this.componentData.do.splice(6, 1) |
| | | } |
| | | if (!issued) { |
| | | this.componentData.do.splice(4, 1) |
| | | this.componentData.do.splice(5, 1) |
| | | } |
| | | if (!sub) { |
| | | this.componentData.do.splice(3, 1) |
| | | this.componentData.do.splice(4, 1) |
| | | } |
| | | if (!res) { |
| | | this.componentData.do.splice(2, 1) |
| | | this.componentData.do.splice(3, 1) |
| | | } |
| | | if (!up) { |
| | | this.componentData.do.splice(1, 1) |
| | | this.componentData.do.splice(2, 1) |
| | | } |
| | | // if (!edit) { |
| | | // this.componentData.do.splice(0, 1) |
| | | // } |
| | | if (!edit) { |
| | | this.componentData.do.splice(0, 1) |
| | | } |
| | | }, |
| | | confirmClaim() { |
| | | // console.log(this.$refs.Word.getValue()) |
| | | }, |
| | | async selectAllByOne(row) { |
| | | console.log(row, await file.convertFileToHtml(row.url)); |
| | | const userName = JSON.parse(localStorage.getItem("user")).name; |
| | | //参考vabOnlyOffice组件参数配置 |
| | | const { href } = this.$router.resolve({ |
| | | path: `/wordEdit`, |
| | | query: { |
| | | url: this.javaApi + "/word/" + row.entrustCode + ".docx", |
| | | isEdit: "false", |
| | | fileType: "docx", |
| | | title: row.entrustCode + ".docx", |
| | | lang: 'zh-CN', |
| | | isPrint: true, |
| | | user_id: 1, |
| | | user_name: userName |
| | | } |
| | | }) |
| | | window.open(href, '_blank'); |
| | | console.log(`output->row`,row) |
| | | }, |
| | | download(row) { |
| | | let url = row.urlS ? row.urlS : row.url; |
| | |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | }, |
| | | // 还原操作 |
| | | handleRestore(row) { |
| | | this.$axios.post(this.$api.insReport.upReportUrl, { |
| | | id: row.id |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('操作成功') |
| | | this.refreshTable() |
| | | this.refreshTable('page') |
| | | } |
| | | }) |
| | | }, |
| | | handleIssued(row) { |
| | | this.currentInfo = row; |
| | | this.issuedVisible = true; |
| | | let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS |
| | | fileName = fileName.replace('/word/','') |
| | | const userName = JSON.parse(localStorage.getItem("user")).name; |
| | | this.option = { |
| | | url: this.javaApi + "/word/" + fileName, |
| | | isEdit: false, |
| | | fileType: "docx", |
| | | title: fileName, |
| | | lang: 'zh-CN', |
| | | isPrint: false, |
| | | user_id: 1, |
| | | user_name: userName, |
| | | editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName |
| | | } |
| | | this.issuedVisible = true; |
| | | }, |
| | | // 审核通过 |
| | | subIssued() { |
| | | this.loadingIssued = true; |
| | | this.$axios.post(this.$api.insReport.examineReport, { |
| | |
| | | return |
| | | } |
| | | this.$message.success('提交成功') |
| | | this.refreshTable() |
| | | this.refreshTable('page') |
| | | this.currentInfo = null; |
| | | this.issuedVisible = false; |
| | | }).catch(e => { |
| | |
| | | }, |
| | | handleApprove(row) { |
| | | this.currentInfo = row; |
| | | let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS |
| | | fileName = fileName.replace('/word/','') |
| | | const userName = JSON.parse(localStorage.getItem("user")).name; |
| | | this.option = { |
| | | url: this.javaApi + "/word/" + fileName, |
| | | isEdit: false, |
| | | fileType: "docx", |
| | | title: fileName, |
| | | lang: 'zh-CN', |
| | | isPrint: false, |
| | | user_id: 1, |
| | | user_name: userName, |
| | | editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName |
| | | } |
| | | this.approveVisible = true; |
| | | }, |
| | | // 批准通过 |
| | | subApprove() { |
| | | this.loadingApprove = true; |
| | | this.$axios.post(this.$api.insReport.ratifyReport, { |
| | |
| | | return |
| | | } |
| | | this.$message.success('已批准') |
| | | this.refreshTable() |
| | | this.refreshTable('page') |
| | | this.currentInfo = null; |
| | | this.approveVisible = false; |
| | | }) |
| | | }, |
| | | // 提交操作 |
| | | handleSubmit(row) { |
| | | this.$confirm('是否提交当前报告?', "提交", { |
| | | confirmButtonText: "提交", |
| | |
| | | return |
| | | } |
| | | this.$message.success('提交成功') |
| | | this.refreshTable() |
| | | this.refreshTable('page') |
| | | }).catch(e => { |
| | | this.$message.error('提交失败') |
| | | }) |
| | | }).catch(() => {}) |
| | | }, |
| | | // 审核不通过原因提交 |
| | | handleIssuedReason() { |
| | | if (!this.reason) { |
| | | return this.$message.error('请输入原因') |
| | |
| | | return |
| | | } |
| | | this.$message.success('操作成功') |
| | | this.refreshTable() |
| | | this.refreshTable('page') |
| | | this.currentInfo = null; |
| | | this.reason = ''; |
| | | this.issuedVisible = false; |
| | |
| | | this.loadingIssuedReason = false; |
| | | }) |
| | | }, |
| | | // 不批准原因提交 |
| | | handleApproveReason() { |
| | | if (!this.reason) { |
| | | return this.$message.error('请输入原因') |
| | |
| | | return |
| | | } |
| | | this.$message.success('操作成功') |
| | | this.refreshTable() |
| | | this.refreshTable('page') |
| | | this.currentInfo = null; |
| | | this.reason = ''; |
| | | this.issuedVisible = false; |