From f798ddf028ff583492cfec9d04d2530de54f46eb Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期四, 11 四月 2024 14:28:10 +0800
Subject: [PATCH] 完成检验项目统计前端页面
---
src/components/view/b1-report-preparation.vue | 522 ++++++++++++++++++++++++++++++++++++---------------------
1 files changed, 328 insertions(+), 194 deletions(-)
diff --git a/src/components/view/b1-report-preparation.vue b/src/components/view/b1-report-preparation.vue
index 10fa4a4..eca96af 100644
--- a/src/components/view/b1-report-preparation.vue
+++ b/src/components/view/b1-report-preparation.vue
@@ -1,70 +1,80 @@
<style scoped>
- .title {
- height: 60px;
- line-height: 60px;
- }
+ .title {
+ height: 60px;
+ line-height: 60px;
+ }
- .search {
- background-color: #fff;
- height: 80px;
- display: flex;
- align-items: center;
- }
+ .search {
+ background-color: #fff;
+ height: 80px;
+ display: flex;
+ align-items: center;
+ }
- .search_thing {
- display: flex;
- align-items: center;
- height: 50px;
- }
+ .search_thing {
+ display: flex;
+ align-items: center;
+ height: 50px;
+ }
- .search_label {
- width: 120px;
- font-size: 14px;
- text-align: right;
- }
+ .search_label {
+ width: 120px;
+ font-size: 14px;
+ text-align: right;
+ }
- .search_input {
- width: calc(100% - 120px);
- }
+ .search_input {
+ width: calc(100% - 120px);
+ }
- .table {
- margin-top: 10px;
- background-color: #fff;
- width: calc(100% - 40px);
- height: calc(100% - 60px - 80px - 10px - 40px);
- padding: 20px;
- }
+ .table {
+ margin-top: 10px;
+ background-color: #fff;
+ width: calc(100% - 40px);
+ height: calc(100% - 60px - 80px - 10px - 40px);
+ padding: 20px;
+ }
.el-form-item {
margin-bottom: 16px;
}
+
+ .full-screen{
+ position: absolute;
+ right: 52px;
+ top: 22px;
+ }
+
+ .btns{
+ position: absolute;
+ right: 100px;
+ top: 17px;
+ }
+
+ .fullscreen{
+ height:82vh
+ }
</style>
<template>
- <div class="inspection_order">
- <div style="width: 100%;height: 100%;">
- <div>
- <el-row class="title">
- <el-col :span="12" style="padding-left: 20px;">鎶ュ憡缂栧埗</el-col>
- </el-row>
- </div>
- <div class="search">
- <div class="search_thing">
- <div class="search_label">鏍峰搧鍚嶇О锛�</div>
- <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
- v-model="componentData.entity.sample" @keyup.enter.native="refreshTable()"></el-input></div>
- </div>
- <div class="search_thing">
- <div class="search_label">鐘舵�侊細</div>
- <div class="search_input">
- <el-select v-model="componentData.entity.status" placeholder="鍏ㄩ儴">
- <el-option
- v-for="item in statusList"
- :key="item.value"
- :label="item.label"
- :value="item.value">
- </el-option>
- </el-select>
+ <div class="inspection_order">
+ <div style="width: 100%;height: 100%;">
+ <div>
+ <el-row class="title">
+ <el-col :span="12" style="padding-left: 20px;">鎶ュ憡缂栧埗</el-col>
+ </el-row>
+ </div>
+ <div class="search">
+ <div class="search_thing">
+ <div class="search_label">鎶ュ憡缂栧彿锛�</div>
+ <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
+ v-model="componentData.entity.code" @keyup.enter.native="refreshTable()"></el-input></div>
+ </div>
+ <div class="search_thing">
+ <div class="search_label">濮旀墭缂栧彿锛�</div>
+ <div class="search_input">
+ <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="componentData.entity.entrustCode"
+ @keyup.enter.native="refreshTable()"></el-input>
</div>
</div>
<div class="search_thing" style="padding-left: 30px;">
@@ -72,164 +82,288 @@
<el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
</div>
</div>
+ <!-- <input id="input" type="file" accept=".doc,.docx"></input> -->
<div class="table">
- <ValueTable ref="ValueTable" :url="$api.insOrder.selectInsOrderParameter" :componentData="componentData"
- :key="upIndex" @handleWeave="handleWeave"/>
+ <ValueTable ref="ValueTable" :url="$api.insReport.pageInsReport" :componentData="componentData"
+ :key="upIndex"/>
</div>
</div>
- <el-dialog title="鍦ㄧ嚎缂栧埗" :visible.sync="claimVisible" width="70%" :modal-append-to-body="false">
- <Word style="height:70vh" v-if="claimVisible" ref="Word"/>
+ <el-dialog title="鍦ㄧ嚎缂栧埗" :visible.sync="claimVisible" width="22cm" :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>
+ <Word style="height:70vh" :class="{fullscreen:fullscreen}" v-if="claimVisible" ref="Word" :value="value"/>
<span slot="footer" class="dialog-footer">
<el-button @click="claimVisible = false">鍙� 娑�</el-button>
<el-button type="primary" @click="confirmClaim">纭� 瀹�</el-button>
</span>
</el-dialog>
+ <el-dialog title="鎶ュ憡瀹℃牳" :visible.sync="issuedVisible" width="22cm" :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>
+ </el-dialog>
+ <el-dialog title="鎶ュ憡鎵瑰噯" :visible.sync="approveVisible" width="22cm" :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>
+ </el-dialog>
</div>
</template>
<script>
- import ValueTable from '../tool/value-table.vue'
+ import ValueTable from '../tool/value-table.vue'
import Word from '../tool/word.vue'
+ import file from '../../util/file';
+ import { convertToHtml } from 'mammoth';
export default {
components: {
ValueTable,
Word,
- },
- data() {
- return {
- componentData: {
- entity: {
- entrustCode: null,
- sample: null,
- state: 1,
- orderBy: {
- field: 'id',
- order: 'asc'
- }
- },
- isIndex: true,
- showSelect: false,
- select: false,
- do: [{
- id: 'handleWeave',
- font: '鍦ㄧ嚎缂栧埗',
- type: 'text',
- method: 'handleWeave',
- disabFun: (row, index) => {
- return row.state != 1
- }
- }, {
- id: 'download',
- font: '涓嬭浇',
- type: 'text',
- method: 'download',
- disabFun: (row, index) => {
- return row.state != 1
- }
- }, {
- id: 'handleUpload',
- font: '涓婁紶',
- type: 'text',
- method: 'handleUpload',
- disabFun: (row, index) => {
- return row.state != 0
- }
- }, {
- id: 'handlRestore',
- font: '杩樺師',
- type: 'text',
- method: 'handleRestore'
- }, {
+ },
+ data() {
+ return {
+ componentData: {
+ entity: {
+ entrustCode: null,
+ code: null,
+ orderBy: {
+ field: 'id',
+ order: 'desc'
+ }
+ },
+ isIndex: true,
+ showSelect: false,
+ select: false,
+ do: [{
+ id: 'handleWeave',
+ font: '鍦ㄧ嚎缂栧埗',
+ type: 'text',
+ method: 'handleWeave',
+ disabFun: (row, index) => {
+ return row.isExamine != null
+ }
+ }, {
+ id: 'download',
+ font: '涓嬭浇',
+ type: 'text',
+ method: 'download'
+ }, {
+ id: 'handleUpload',
+ font: '涓婁紶',
+ type: 'upload',
+ uploadConfig:{
+ url:this.$api.insReport.inReport,
+ accept:'.docx'
+ },
+ method: 'handleUpload',
+ disabFun: (row, index) => {
+ return row.isExamine != null
+ }
+ }, {
+ id: 'handleRestore',
+ font: '杩樺師',
+ type: 'text',
+ method: 'handleRestore',
+ disabFun: (row, index) => {
+ return row.isExamine != null
+ }
+ }, {
id: 'handleIssued',
- font: '瀹℃牳',
- type: 'text',
- method: 'handleIssued',
- disabFun: (row, index) => {
- return row.state != 1 || row.sendTime != null
- }
- }, {
+ font: '瀹℃牳',
+ type: 'text',
+ method: 'handleIssued',
+ disabFun: (row, index) => {
+ return row.isExamine != null
+ }
+ }, {
id: 'handleApprove',
- font: '鎵瑰噯',
- type: 'text',
- method: 'handleApprove',
- disabFun: (row, index) => {
- return row.state != 1 || row.sendTime != null
- }
- }],
- linkEvent:{
- entrustCode:{
- method:'selectAllByOne'
- }
- },
- tagField: {
- type: {
- select: [{
- value: 0,
- type: 'success',
- label: '鏅��'
- }, {
- value: 1,
- type: 'warning',
- label: '浼樺厛'
- }, {
- value: 2,
- type: 'danger',
- label: '绱ф��'
- }]
- },
- createUser: {
- select: []
- }
- },
- selectField: {},
- requiredAdd: [],
- requiredUp: []
- },
- entityCopy: {},
- upIndex: 0,
- statusList:[],
- claimVisible:true
- }
- },
- mounted() {
- this.entityCopy = this.HaveJson(this.componentData.entity)
- this.getPower()
- },
- methods: {
- refreshTable() {
- this.$refs['ValueTable'].selectList()
- },
- refresh() {
- this.componentData.entity = this.HaveJson(this.entityCopy)
- this.upIndex++
- },
- handleWeave(){
- this.claimVisible = true;
- },
- // 鏉冮檺鍒嗛厤
- getPower(radio) {
- let power = JSON.parse(sessionStorage.getItem('power'))
- let up = false
- let del = false
- let add = false
- for (var i = 0; i < power.length; i++) {
- if (power[i].menuMethod == 'upInsOrder') {
- up = true
- }
- if (power[i].menuMethod == 'addInsOrder') {
- add = true
- }
- }
- if (!up) {
- this.componentData.do.splice(4, 1)
- }
- },
- handleClose() {
- this.upLoad = false;
- },
- confirmClaim(){
- console.log(11111111111,this.$refs.Word.getValue())
+ font: '鎵瑰噯',
+ type: 'text',
+ method: 'handleApprove',
+ disabFun: (row, index) => {
+ return row.isRatify != null
+ }
+ }],
+ linkEvent: {
+ code: {
+ method: 'selectAllByOne'
+ }
+ },
+ tagField: {
+ isRatify: {
+ select: [{
+ value: 0,
+ type: 'danger',
+ label: '涓嶆壒鍑�'
+ }, {
+ value: 1,
+ type: 'success',
+ label: '鎵瑰噯'
+ }]
+ },
+ isExamine: {
+ select: [{
+ value: 0,
+ type: 'danger',
+ label: '涓嶉�氳繃'
+ }, {
+ value: 1,
+ type: 'success',
+ label: '閫氳繃'
+ }]
+ }
+ },
+ selectField: {},
+ requiredAdd: [],
+ requiredUp: []
+ },
+ entityCopy: {},
+ upIndex: 0,
+ statusList: [],
+ claimVisible: false,
+ issuedVisible: false,
+ approveVisible: false,
+ fullscreen:false,
+ value:``
}
- }
- }
+ },
+ mounted() {
+ this.entityCopy = this.HaveJson(this.componentData.entity)
+ this.getPower()
+
+ // let that = this;
+ // let input = document.getElementById('input');
+ // input.onchange = function(){
+ // let file = this.files[0];
+ // let reader = new FileReader();
+ // reader.readAsArrayBuffer(file);
+ // reader.onload = function(loadEvent){
+ // convertToHtml({
+ // arrayBuffer: loadEvent.target.result })
+ // .then(res=>{
+ // that.value = res.value
+ // .replace('<h1>', '<h1 style="text-align: center;">')
+ // .replace('<h2>', '<h2 style="text-align: center;">')
+ // .replace('<img ','<img style="height:3.6cm;width:3.6cm"')
+ // .replace(/<table>/g, '<table style="border-collapse: collapse;border: 1px solid #000;">')
+ // .replace(/<tr>/g, '<tr style="height: 30px;">')
+ // .replace(/<td>/g, '<td style="border: 1px solid #000;">')
+ // .replace(/<p>/g, '<p style="text-indent: 2em;">')
+ // .replace(/<a [^>]*>/g, "")
+ // .replace(/<\/a>/g, "")
+ // console.log(11111111111,that.value)
+ // that.claimVisible = true;
+ // })
+ // .done();
+ // }
+ // }
+ },
+ methods: {
+ refreshTable() {
+ this.$refs['ValueTable'].selectList()
+ },
+ 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;
+ }
+
+ }).catch(error => {
+ console.error(error)
+ })
+ },
+ // 鏉冮檺鍒嗛厤
+ getPower(radio) {
+ let power = JSON.parse(sessionStorage.getItem('power'))
+ let edit = false
+ let up = false
+ let res = false
+ let issued = false
+ let approve = false
+ for (var i = 0; i < power.length; i++) {
+ if (power[i].menuMethod == 'upReportFile') {
+ edit = true
+ }
+ if (power[i].menuMethod == 'inReport') {
+ up = true
+ }
+ if (power[i].menuMethod == 'upReportUrl') {
+ res = true
+ }
+ }
+ if (!approve) {
+ this.componentData.do.splice(5, 1)
+ }
+ if (!issued) {
+ this.componentData.do.splice(4, 1)
+ }
+ if (!res) {
+ this.componentData.do.splice(3, 1)
+ }
+ if (!up) {
+ this.componentData.do.splice(2, 1)
+ }
+ if (!edit) {
+ this.componentData.do.splice(0, 1)
+ }
+ },
+ handleClose() {
+ this.upLoad = false;
+ },
+ confirmClaim() {
+ // console.log(this.$refs.Word.getValue())
+ },
+ async selectAllByOne(row){
+ console.log(row,await file.convertFileToHtml(row.url));
+ },
+ download(row){
+ let url = row.urlS?row.urlS:row.url;
+ const link = document.createElement('a');
+ link.href = this.javaApi + 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()
+ }
+ })
+ },
+ handleIssued(row){
+ this.issuedVisible = true;
+ },
+ handleApprove(row){
+ this.approveVisible = true;
+ },
+ }
+ }
</script>
--
Gitblit v1.9.3