From 0762e093d412ae2f2e7f02a2b9e1774c67de8564 Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期二, 24 九月 2024 15:21:56 +0800
Subject: [PATCH] Merge branch 'master' of http://114.132.189.42:9002/r/tx-lims-before into master
---
src/components/view/b1-report-preparation.vue | 307 ++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 253 insertions(+), 54 deletions(-)
diff --git a/src/components/view/b1-report-preparation.vue b/src/components/view/b1-report-preparation.vue
index f161dfe..9ee34de 100644
--- a/src/components/view/b1-report-preparation.vue
+++ b/src/components/view/b1-report-preparation.vue
@@ -47,12 +47,38 @@
.btns {
position: absolute;
- right: 100px;
- top: 17px;
+ right: 40px;
+ top: 50%;
+ transform: translate(0, -50%);
+ display: flex;
+ align-items: center;
}
.fullscreen {
height: 82vh
+ }
+ .img-list{
+ width: 100%;
+ display: flex;
+ }
+ .list{
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ }
+ .list-item{
+ width: 120px;
+ height: 120px;
+ margin: 4px;
+ cursor: pointer;
+ box-sizing: border-box;
+ border: 1px solid #fff;
+ }
+ .list-item:hover{
+ border: 1px solid #3A7BFA;
+ }
+ .list-item.active{
+ border: 1px solid #3A7BFA;
}
</style>
@@ -61,10 +87,15 @@
<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="text-align: left;">
+ <el-radio-group v-model="radio"size="medium" fill="#3A7BFA">
+ <el-radio-button label="0">鎶ュ憡缂栧埗</el-radio-button>
+ <el-radio-button label="1">璁㈠崟</el-radio-button>
+ </el-radio-group>
+ </el-col>
</el-row>
</div>
- <div class="search">
+ <div class="search" style="position: relative;" v-if="radio==0">
<div class="search_thing">
<div class="search_label">鎶ュ憡缂栧彿锛�</div>
<div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
@@ -81,12 +112,30 @@
<el-button size="small" @click="refresh()">閲� 缃�</el-button>
<el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
</div>
+ <div class="btns">
+ <el-button size="small" type="primary" @click="handleDowns" :loading="outLoading" style="margin-right: 16px;">鎵归噺涓嬭浇</el-button>
+ <el-upload
+ class="upload-demo"
+ :action="action"
+ :headers="headers"
+ :show-file-list="false"
+ accept=".zip"
+ :limit="1"
+ :before-upload="beforeUpload"
+ :on-success="handleSuccess"
+ ref="upload"
+ :on-error="onError">
+ <el-button size="small" type="primary" :loading="inLoading">鎵归噺涓婁紶</el-button>
+ </el-upload>
+ </div>
</div>
- <!-- <input id="input" type="file" accept=".doc,.docx"></input> -->
- <div class="table">
- <ValueTable ref="ValueTable" :url="$api.insReport.pageInsReport" :componentData="componentData"
+ <div class="table" v-if="radio==0">
+ <ValueTable ref="ValueTable" :url="$api.insReport.pageInsReport"
+ :isColumnWidth="true"
+ :componentData="componentData"
:key="upIndex" />
</div>
+ <Order v-if="radio==1"/>
</div>
<el-dialog title="鍦ㄧ嚎缂栧埗" :visible.sync="claimVisible" width="22cm" :modal-append-to-body="false"
:fullscreen="fullscreen">
@@ -101,16 +150,15 @@
<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;" v-if="issuedVisible">
+ <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" />
+ </div>
<span slot="footer" class="dialog-footer">
<el-button @click="issuedReasonVisible=true" :disabled="loadingIssued">涓嶉�氳繃</el-button>
<el-button type="primary" @click="subIssued" :loading="loadingIssued">閫� 杩�</el-button>
@@ -126,18 +174,32 @@
<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-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;" v-if="approveVisible">
+ <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" />
+ </div>
<span slot="footer" class="dialog-footer">
<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="imgVisible" width="50vw" :modal-append-to-body="false"
+ :close-on-click-modal="false"
+ :close-on-press-escape="false">
+ <div class="img-list">
+ <label style="width: 120px;">鍗扮珷閫夋嫨锛�</label>
+ <div class="list" style="flex: 1;">
+ <div class="list-item" :class="{active:currentImg==m.id}" v-for="m in imgList" @click="currentImg = m.id">
+ <img :src="javaApi+'/img/'+m.address" alt="" style="width: 118px;height: 118px;">
+ </div>
+ </div>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="subApprove0" :loading="loadingApprove">纭� 璁�</el-button>
</span>
</el-dialog>
<el-dialog title="涓嶆壒鍑嗗師鍥�" :visible.sync="approveReasonVisible" width="400px" :modal-append-to-body="false">
@@ -155,19 +217,17 @@
<script>
import ValueTable from '../tool/value-table.vue'
- import Word from '../tool/word.vue'
- import file from '../../util/file';
- import {
- convertToHtml
- } from 'mammoth';
- import axios from "axios";
+ import onlyoffice from '../tool/onlyoffice.vue'
+ import Order from '../do/b1-report-preparation/order.vue'
export default {
components: {
ValueTable,
- Word,
+ onlyoffice,
+ Order
},
data() {
return {
+ radio:0,
componentData: {
entity: {
entrustCode: null,
@@ -178,8 +238,9 @@
}
},
isIndex: true,
- showSelect: false,
- select: false,
+ showSelect: true,
+ select: true,
+ selectMethod: 'handleChange',
do: [
{
id: 'handleWeave',
@@ -284,6 +345,7 @@
},
selectField: {},
requiredAdd: [],
+ needSort: ['createTime', 'state', 'writeTime', 'isExamine', 'examineTime', 'ratifyTime'],
requiredUp: []
},
entityCopy: {},
@@ -302,8 +364,25 @@
value: ``,
reason: '',
currentInfo: null,
+ option:null,
+ mutiList:[],
+ outLoading:false,
+ inLoading:false,
+ imgList:[],
+ imgVisible:false,
+ currentImg:null
}
},
+ computed: {
+ headers() {
+ return {
+ 'token': sessionStorage.getItem('token')
+ }
+ },
+ action() {
+ return this.javaApi + this.$api.insReport.upAll
+ }
+ },
mounted() {
this.entityCopy = this.HaveJson(this.componentData.entity)
this.getPower()
@@ -336,12 +415,86 @@
// }
},
methods: {
- refreshTable() {
- this.$refs['ValueTable'].selectList()
+ handleChange(arr){
+ this.mutiList = arr
+ },
+ handleDowns(){
+ if(this.mutiList.length==0){
+ this.$message.error('璇烽�夋嫨鎶ュ憡')
+ return
+ }
+ let str = this.mutiList.map(m=>m.id).join(',')
+ this.outLoading = true
+ this.$axios.get(this.$api.insReport.downAll+'?ids='+str).then(res => {
+ this.outLoading = false
+ this.$message.success('瀵煎嚭鎴愬姛')
+ // const blob = new Blob([res],{ type: 'application/octet-stream' });
+ // const url = URL.createObjectURL(blob);
+ // const link = document.createElement('a');
+ // link.href = url;
+ // link.download = '鎶ュ憡.zip';
+ // link.click();
+ const link = document.createElement('a');
+ link.href = this.javaApi + res.message;
+ link.target = '_blank';
+ document.body.appendChild(link);
+ link.click();
+ })
+ },
+ beforeUpload(file){
+ const isZip = file.type === 'application/zip' || file.name.endsWith('.zip');
+ if (!isZip) {
+ this.$message.error('涓婁紶鏂囦欢鍙兘鏄� ZIP 鏍煎紡!');
+ }
+ if(isZip){
+ this.inLoading = true;
+ }
+ return isZip;
+ },
+ handleSuccess(response,){
+ this.inLoading = false;
+ if (response.code == 200) {
+ this.$message.success('瀵煎叆鎴愬姛')
+ this.refreshTable()
+ }else{
+ this.$message.error(response.message)
+ }
+ },
+ async selectSeal(row){
+ await this.$axios.post(this.$api.sealScope.selectSeal,{
+ entity: {
+ labId:row.labId,
+ orderBy: {
+ field: 'id',
+ order: 'asc'
+ }
+ },
+ page:{
+ current:-1,
+ size:-1
+ }
+ }, {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }).then(res=>{
+ this.imgList = res.data.body.records.map((m,i)=>{
+ m.id = i + 1
+ return m
+ })
+ })
+ },
+ onError(err, file, fileList,type) {
+ this.$message.error('涓婁紶澶辫触')
+ this.$refs.upload.clearFiles()
+ },
+ refreshTable(e) {
+ this.$refs['ValueTable'].selectList(e)
},
refresh() {
this.componentData.entity = this.HaveJson(this.entityCopy)
this.upIndex++
+ this.$refs['ValueTable'].selectList(e)
},
async handleWeave(row) {
let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS
@@ -442,20 +595,36 @@
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, {
@@ -467,7 +636,7 @@
return
}
this.$message.success('鎻愪氦鎴愬姛')
- this.refreshTable()
+ this.refreshTable('page')
this.currentInfo = null;
this.issuedVisible = false;
}).catch(e => {
@@ -477,25 +646,30 @@
},
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, {
- id: this.currentInfo.id,
- isRatify: 1
- }).then(res => {
- this.loadingApprove = false;
- if (res.code == 201) {
- this.$message.error('鎵瑰噯澶辫触')
- return
- }
- this.$message.success('宸叉壒鍑�')
- this.refreshTable()
- this.currentInfo = null;
- this.approveVisible = false;
- })
+ // 鎵瑰噯閫氳繃
+ async subApprove() {
+ // this.currentInfo
+ await this.selectSeal(this.currentInfo)
+ this.approveVisible = false;
+ this.imgVisible = true;
},
+ // 鎻愪氦鎿嶄綔
handleSubmit(row) {
this.$confirm('鏄惁鎻愪氦褰撳墠鎶ュ憡?', "鎻愪氦", {
confirmButtonText: "鎻愪氦",
@@ -509,12 +683,13 @@
return
}
this.$message.success('鎻愪氦鎴愬姛')
- this.refreshTable()
+ this.refreshTable('page')
}).catch(e => {
this.$message.error('鎻愪氦澶辫触')
})
}).catch(() => {})
},
+ // 瀹℃牳涓嶉�氳繃鍘熷洜鎻愪氦
handleIssuedReason() {
if (!this.reason) {
return this.$message.error('璇疯緭鍏ュ師鍥�')
@@ -530,7 +705,7 @@
return
}
this.$message.success('鎿嶄綔鎴愬姛')
- this.refreshTable()
+ this.refreshTable('page')
this.currentInfo = null;
this.reason = '';
this.issuedVisible = false;
@@ -540,6 +715,7 @@
this.loadingIssuedReason = false;
})
},
+ // 涓嶆壒鍑嗗師鍥犳彁浜�
handleApproveReason() {
if (!this.reason) {
return this.$message.error('璇疯緭鍏ュ師鍥�')
@@ -555,7 +731,7 @@
return
}
this.$message.success('鎿嶄綔鎴愬姛')
- this.refreshTable()
+ this.refreshTable('page')
this.currentInfo = null;
this.reason = '';
this.issuedVisible = false;
@@ -564,6 +740,29 @@
this.$message.error('鎿嶄綔澶辫触')
this.loadingIssuedReason = false;
})
+ },
+ subApprove0(){
+ if(!(this.currentImg&&this.imgList.find(m=>m.id==this.currentImg))){
+ this.$message.error('璇烽�夋嫨鍗扮珷')
+ return
+ }
+ this.loadingApprove = true;
+ this.$axios.post(this.$api.insReport.ratifyReport, {
+ id: this.currentInfo.id,
+ isRatify: 1,
+ sealUrl:this.imgList.find(m=>m.id==this.currentImg).address
+ }).then(res => {
+ this.loadingApprove = false;
+ if (res.code == 201) {
+ this.$message.error('鎵瑰噯澶辫触')
+ return
+ }
+ this.$message.success('宸叉壒鍑�')
+ this.refreshTable('page')
+ this.currentInfo = null;
+ this.currentImg = null;
+ this.imgVisible = false;
+ })
}
}
}
--
Gitblit v1.9.3