From 6bf3dda64be0aeef5c999818075facb41988f7bd Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期一, 09 九月 2024 16:05:52 +0800 Subject: [PATCH] 新增订单-生成报告功能 --- src/components/view/b1-report-preparation.vue | 19 ++- src/components/do/b1-report-preparation/order.vue | 230 ++++++++++++++++++++++++++++++++++++++++++++++ src/assets/api/controller.js | 1 3 files changed, 245 insertions(+), 5 deletions(-) diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js index 0c07042..752ca22 100644 --- a/src/assets/api/controller.js +++ b/src/assets/api/controller.js @@ -271,6 +271,7 @@ ratifyReport: "/insReport/ratifyReport", //鎶ュ憡鎵瑰噯 downAll: "/insReport/downAll", //鎶ュ憡鎵归噺涓嬭浇 upAll: "/insReport/upAll", //鎶ュ憡鎵归噺涓婁紶 + isReport: "/insReport/isReport", //鏄惁鐢熸垚鎬绘姤鍛� } const warehouse = { diff --git a/src/components/do/b1-report-preparation/order.vue b/src/components/do/b1-report-preparation/order.vue new file mode 100644 index 0000000..5d001d0 --- /dev/null +++ b/src/components/do/b1-report-preparation/order.vue @@ -0,0 +1,230 @@ +<template> + <div style="height: calc(100vh - 280px);"> + <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.entrustCode" @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.sampleName" @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.sampleModel" @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.sampleCode" @keyup.enter.native="refreshTable()"></el-input></div> + </div> + <div class="search_thing" style="margin-left: 20px;"> + <el-button size="small" @click="refresh()">閲� 缃�</el-button> + <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> + </div> + </div> + <div class="table"> + <ValueTable ref="ValueTable" + :url="$api.insOrder.selectInsOrderParameter" :componentData="componentData" + :upIndex="upIndex" /> + </div> + </div> +</template> + +<script> +import ValueTable from '../../tool/value-table.vue' +export default { + components: { + ValueTable, + }, + data() { + return { + componentData: { + entity: { + entrustCode: null, + sample: null, + sampleName: null, + sampleModel: null, + sampleCode: null, + outEntrustCode: null, + state: 1, + name:null, + engineering:null, + production:null, + }, + isIndex: true, + showSelect: false, + select: false, + // selectMethod:'selectMethod', + do: [{ + id: 'handleCreateReport', + font: '鐢熸垚鎶ュ憡', + type: 'text', + method: 'handleCreateReport', + disabFun: (row, index) => { + return row.insState == 5 + } + }], + tagField: { + type: { + select: [{ + value: 0, + type: 'success', + label: '鏅��' + }, { + value: 1, + type: 'warning', + label: '浼樺厛' + }, { + value: 2, + type: 'danger', + label: '绱ф��' + }] + }, + createUser: { + select: [] + }, + orderType: { + select: [] + }, + processing: { + select: [{ + value: 1, + label: '瀹為獙瀹ゅ鐞�' + },{ + value: 0, + label: '濮旀墭鍗曚綅鍙栧洖' + }] + }, + isLeave: { + select: [{ + value: 1, + label: '鐣欐牱' + },{ + value: 0, + label: '涓嶇暀鏍�' + }] + }, + send: { + select: [{ + value: 1, + label: '鑷彇' + },{ + value: 0, + label: '鍏朵粬' + }] + } + }, + selectField: {}, + requiredAdd: [], + requiredUp: [], + needSort: ['createTime', 'sendTime', 'type', 'appointed'] + }, + upIndex: 0, + entityCopy: {} + } + }, + mounted() { + this.entityCopy = this.HaveJson(this.componentData.entity) + this.getPower() + }, + methods:{ + // 鏉冮檺鍒嗛厤 + getPower(radio) { + let power = JSON.parse(sessionStorage.getItem('power')) + let isReport = false + for (var i = 0; i < power.length; i++) { + if (power[i].menuMethod == 'isReport') { + isReport = true + } + } + if (!isReport) { + this.componentData.do.splice(0, 1) + } + }, + refreshTable(e) { + this.$refs['ValueTable'].selectList(e) + }, + refresh() { + this.componentData.entity = this.HaveJson(this.entityCopy) + this.upIndex++ + this.refreshTable() + }, + handleCreateReport(row){ + this.$confirm(`鏄惁鐢熸垚姝ゅ鎵樺崟 ${row.entrustCode} 鐨勬�绘姤鍛�?`, "鎻愮ず", { + confirmButtonText: "鐢熸垚", + cancelButtonText: "涓嶇敓鎴�", + type: "success", + distinguishCancelAndClose: true, + }).then(() => { + this.$axios.post(this.$api.insReport.isReport, { + id:row.id, + state:1 + }).then(res => { + if (res.code === 201) { + return + } + this.$message.success("宸茬敓鎴�") + this.refreshTable() + }).catch(err => { + + console.log(err) + }) + }).catch((e) => { + console.log(e) + if(e=='cancel'){ + this.$axios.post(this.$api.insReport.isReport, { + id:row.id, + state:0 + }).then(res => { + if (res.code === 201) { + return + } + this.refreshTable() + this.$message.success("宸插彇娑堢敓鎴�") + }).catch(err => { + console.log(err) + }) + } + }) + } + } +} +</script> + +<style scoped> +.search { + background-color: #fff; + height: 80px; + display: flex; + align-items: center; + overflow: hidden; + } + + .search_thing { + display: flex; + align-items: center; + height: 50px; + width: 230px; + } + + .search_label { + width: 90px; + font-size: 14px; + text-align: right; + } + + .search_input { + width: calc(100% - 90px); + } + + .table { + margin-top: 10px; + background-color: #fff; + height: 100%; + padding: 20px; + } +</style> diff --git a/src/components/view/b1-report-preparation.vue b/src/components/view/b1-report-preparation.vue index a99b5f8..9b5d017 100644 --- a/src/components/view/b1-report-preparation.vue +++ b/src/components/view/b1-report-preparation.vue @@ -87,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 @@ -124,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"> @@ -213,13 +218,16 @@ <script> import ValueTable from '../tool/value-table.vue' import onlyoffice from '../tool/onlyoffice.vue' + import Order from '../do/b1-report-preparation/order.vue' export default { components: { ValueTable, - onlyoffice + onlyoffice, + Order }, data() { return { + radio:0, componentData: { entity: { entrustCode: null, @@ -486,6 +494,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 -- Gitblit v1.9.3