From 551e8f6756abbb1277566dd1225a14422c774d6f Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期四, 26 十二月 2024 14:33:08 +0800
Subject: [PATCH] 完成标准物质领用迁移
---
src/components/view/b1-report-preparation.vue | 313 +++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 235 insertions(+), 78 deletions(-)
diff --git a/src/components/view/b1-report-preparation.vue b/src/components/view/b1-report-preparation.vue
index 64633d0..ab759b0 100644
--- a/src/components/view/b1-report-preparation.vue
+++ b/src/components/view/b1-report-preparation.vue
@@ -57,6 +57,29 @@
.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>
<template>
@@ -64,10 +87,15 @@
<div style="width: 100%;height: 100%;">
<div>
<el-row class="title">
- <el-col :span="12" style="padding-left: 20px;text-align: left;">鎶ュ憡缂栧埗</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" style="position: relative;">
+ <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
@@ -101,13 +129,13 @@
</el-upload>
</div>
</div>
- <!-- <input id="input" type="file" accept=".doc,.docx"></input> -->
- <div class="table">
+ <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">
@@ -128,8 +156,10 @@
<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 style="height: 80vh;">
+ <div style="height: 78vh;" v-if="issuedVisible">
<onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" />
+ <!-- <filePreview v-if="issuedVisible" :fileUrl="currentFile.url"
+ :currentFile="currentFile" style="max-height: 100%;overflow-y: auto;"/> -->
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="issuedReasonVisible=true" :disabled="loadingIssued">涓嶉�氳繃</el-button>
@@ -151,12 +181,29 @@
<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 style="height: 80vh;">
+ <div style="height: 78vh;" v-if="approveVisible">
<onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" />
+ <!-- <filePreview v-if="approveVisible" :fileUrl="currentFile.url"
+ :currentFile="currentFile" style="max-height: 100%;overflow-y: auto;"/> -->
</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">
@@ -169,19 +216,46 @@
<el-button type="primary" @click="handleApproveReason" :loading="loadingApproveReason">纭畾</el-button>
</span>
</el-dialog>
+ <el-dialog
+ title="鏂囦欢棰勮"
+ :visible.sync="lookFileVisible"
+ fullscreen :modal="false">
+ <filePreview v-if="lookFileVisible" :fileUrl="currentFile.url"
+ :currentFile="currentFile" style="max-height: 87vh;overflow-y: auto;"/>
+ </el-dialog>
+ <!--鎶ュ憡鏌ョ湅-->
+ <el-dialog :fullscreen="fullscreen" top="5vh" :modal-append-to-body="false" :visible.sync="viewIssuedVisible" title="鎶ュ憡鏌ョ湅"
+ width="80vw">
+ <div class="full-screen">
+ <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i>
+ <img v-else alt="" src="../../../static/img/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;" >
+ </div>
+ <div v-if="viewIssuedVisible" style="height: 80vh;">
+ <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" />
+ </div>
+ </el-dialog>
</div>
</template>
<script>
import ValueTable from '../tool/value-table.vue'
import onlyoffice from '../tool/onlyoffice.vue'
+ import Order from '../do/b1-report-preparation/order.vue'
+ import filePreview from '../tool/file-preview.vue'
export default {
components: {
ValueTable,
- onlyoffice
+ onlyoffice,
+ Order,
+ filePreview
},
data() {
return {
+ lookFileVisible:false,
+ currentFile:{
+ url:''
+ },
+ radio:0,
componentData: {
entity: {
entrustCode: null,
@@ -196,15 +270,15 @@
select: true,
selectMethod: 'handleChange',
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: '涓嬭浇',
@@ -321,7 +395,11 @@
option:null,
mutiList:[],
outLoading:false,
- inLoading:false
+ inLoading:false,
+ imgList:[],
+ imgVisible:false,
+ currentImg:null,
+ viewIssuedVisible:false
}
},
computed: {
@@ -406,9 +484,34 @@
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('涓婁紶澶辫触')
@@ -420,6 +523,7 @@
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
@@ -472,52 +576,89 @@
}
}
if (!approve) {
- this.componentData.do.splice(6, 1)
- }
- if (!issued) {
this.componentData.do.splice(5, 1)
}
- if (!sub) {
+ if (!issued) {
this.componentData.do.splice(4, 1)
}
- if (!res) {
+ if (!sub) {
this.componentData.do.splice(3, 1)
}
- if (!up) {
+ if (!res) {
this.componentData.do.splice(2, 1)
}
- if (!edit) {
- this.componentData.do.splice(0, 1)
+ if (!up) {
+ this.componentData.do.splice(1, 1)
}
+ // if (!edit) {
+ // this.componentData.do.splice(0, 1)
+ // }
},
confirmClaim() {
// console.log(this.$refs.Word.getValue())
},
async selectAllByOne(row) {
+ // let url = row.urlS ? row.urlS : row.url;
+ // this.currentFile.url = this.javaApi + url;
+ // let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS
+ // fileName = fileName.replace('/word/','')
+ // const userName = JSON.parse(localStorage.getItem("user")).name;
+ // //鍙傝�僾abOnlyOffice缁勪欢鍙傛暟閰嶇疆
+ // const { href } = this.$router.resolve({
+ // path: `/wordEdit`,
+ // query: {
+ // url: this.javaApi + "/word/" + fileName,
+ // isEdit: false,
+ // fileType: "docx",
+ // title: fileName,
+ // lang: 'zh-CN',
+ // isPrint: true,
+ // user_id: 1,
+ // user_name: userName,
+ // }
+ // })
+ // window.open(href, '_blank');
+ // this.lookFileVisible = true
+ this.currentInfo = row;
+ console.log(`output->row`,row);
+ let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS
+ let fileType = "docx"
+ if (row.tempUrlPdf != null || row.tempUrlPdf === '') {
+ fileName = row.tempUrlPdf
+ fileType = "pdf"
+ }
+ fileName = fileName.replace('/word/','')
const userName = JSON.parse(localStorage.getItem("user")).name;
- //鍙傝�僾abOnlyOffice缁勪欢鍙傛暟閰嶇疆
- 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)
+ this.option = {
+ url: this.javaApi + "/word/" + fileName,
+ isEdit: false,
+ fileType: fileType,
+ title: fileName,
+ lang: 'zh-CN',
+ isPrint: false,
+ user_id: 1,
+ user_name: userName,
+ editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName
+ }
+ // console.log(this.javaApi + "/word/" + fileName);
+ this.viewIssuedVisible = true;
},
download(row) {
+ // 鍒ゆ柇row瀵硅薄涓槸鍚﹀瓨鍦╱rlS灞炴�э紝鑻ュ瓨鍦ㄥ垯浣跨敤urlS锛屽惁鍒欎娇鐢╱rl
let url = row.urlS ? row.urlS : row.url;
+
+ // 鍒涘缓涓�涓�<a>鏍囩鍏冪礌
const link = document.createElement('a');
+
+ // 璁剧疆<a>鏍囩鐨刪ref灞炴�э紝涓簀avaApi鍜寀rl鐨勭粍鍚�
link.href = this.javaApi + url;
+
+ // 璁剧疆<a>鏍囩鐨則arget灞炴�т负'_blank'锛岃〃绀哄湪鏂扮獥鍙d腑鎵撳紑閾炬帴
link.target = '_blank';
+
+ // 灏�<a>鏍囩娣诲姞鍒版枃妗g殑涓讳綋涓�
document.body.appendChild(link);
+
link.click();
},
// 杩樺師鎿嶄綔
@@ -533,21 +674,23 @@
},
handleIssued(row) {
this.currentInfo = row;
+ // let url = row.urlS ? row.urlS : row.url;
+ // this.currentFile.url = this.javaApi + url;
let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS
fileName = fileName.replace('/word/','')
const userName = JSON.parse(localStorage.getItem("user")).name;
+ //鍙傝�僾abOnlyOffice缁勪欢鍙傛暟閰嶇疆
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;
+ url: this.javaApi + "/word/" + fileName,
+ isEdit: false,
+ fileType: "docx",
+ title: fileName,
+ lang: 'zh-CN',
+ isPrint: true,
+ user_id: 1,
+ user_name: userName,
+ }
+ this.issuedVisible = true;
},
// 瀹℃牳閫氳繃
subIssued() {
@@ -571,39 +714,30 @@
},
handleApprove(row) {
this.currentInfo = row;
+ // let url = row.urlS ? row.urlS : row.url;
+ // this.currentFile.url = this.javaApi + url;
let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS
fileName = fileName.replace('/word/','')
const userName = JSON.parse(localStorage.getItem("user")).name;
+ //鍙傝�僾abOnlyOffice缁勪欢鍙傛暟閰嶇疆
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
- }
+ url: this.javaApi + "/word/" + fileName,
+ isEdit: false,
+ fileType: "docx",
+ title: fileName,
+ lang: 'zh-CN',
+ isPrint: true,
+ user_id: 1,
+ user_name: userName,
+ }
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('page')
- this.currentInfo = null;
- this.approveVisible = false;
- })
+ async subApprove() {
+ // this.currentInfo
+ await this.selectSeal(this.currentInfo)
+ this.approveVisible = false;
+ this.imgVisible = true;
},
// 鎻愪氦鎿嶄綔
handleSubmit(row) {
@@ -676,6 +810,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