From 32a95699e59c5c65e18c08643266c9cbfa380ee4 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期五, 07 六月 2024 09:56:05 +0800 Subject: [PATCH] 优化设备明细、检验任务附件权限 --- src/components/do/b1-inspect-order-plan/Inspection.vue | 322 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 309 insertions(+), 13 deletions(-) diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue index 13d3872..e0ddd8e 100644 --- a/src/components/do/b1-inspect-order-plan/Inspection.vue +++ b/src/components/do/b1-inspect-order-plan/Inspection.vue @@ -191,7 +191,11 @@ <template> <div v-loading="loading" class="inspection"> <el-row class="title"> - <el-col :span="12" style="padding-left: 20px;">妫�楠屽崟璇︽儏</el-col> + <el-col :span="12" style="padding-left: 20px;">妫�楠屽崟璇︽儏 + <span style="color: #3A7BFA;"> 鏍峰搧</span> + <span v-if="currentFiberOpticTape" style="color: #3A7BFA;"> - 鍏夌氦甯�</span> + <span v-if="currentFiberOptic" style="color: #3A7BFA;"> - 鍏夌氦</span> + </el-col> <el-col :span="12" style="text-align: right;"> <el-button size="small" type="primary" @click="fiberOpticVisible=true" v-if="fiberOptic.length>0">鍏夌氦鍒囨崲</el-button> <el-button size="small" type="primary" @click="fiberOpticTapeVisible=true" v-if="fiberOpticTape.length>0">鍏夌氦甯﹀垏鎹�</el-button> @@ -251,7 +255,7 @@ :rowspan="n.v.mc&&n.v.mc.rs?n.v.mc.rs:1" :style="`background:${n.v.bg};color:${n.v.fc};font-size:${n.v.fs}px;width:${handleWidth(n)}px !important;height:${item.style.rowlen[n.r]}px;font-wight:${n.v.bl?'bold':''};`"> <div class="content" :class="`content-h-${n.v.ht} content-v-${n.v.vt}`" - :style="`width:${handleWidth(n)}px !important;min-height:${item.style.rowlen[n.r]}px;`"> + :style="`width:${handleWidth(n)}px !important;min-height:${item.style.rowlen[n.r]}px;background:${n.v.bg};`"> <template v-if="n.v.ps!=undefined && n.v.ps.value==='妫�楠屽��' && state==1"> <el-input v-if="getInspectionValueType(n.i) == 1" class="table_input" v-model="n.v.v" :disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')" @@ -305,13 +309,41 @@ </template> <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鏍峰搧缂栧彿'"> <div style="display: flex;flex-wrap: nowrap;align-items: center;"> - <i class="el-icon-caret-left table_caret" @click="caretSample(-1)"></i> + <i class="el-icon-caret-left table_caret" @click="caretSample(-1)" v-if="!currentFiberOpticTape&&!currentFiberOptic"></i> <div :style="`font-family:${n.v.ff} !important;`">{{currentSample.sampleCode}}</div> - <i class="el-icon-caret-right table_caret" @click="caretSample(1)"></i> + <i class="el-icon-caret-right table_caret" + v-if="!currentFiberOpticTape&&!currentFiberOptic"@click="caretSample(1)"></i> </div> </template> <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鏍峰搧鍨嬪彿'"> <div :style="`font-family:${n.v.ff} !important;`" v-if="currentSample.model!==undefined&¤tSample.model!==null">{{currentSample.model}}</div> + </template> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='濂楃'"> + <div style="display: flex;flex-wrap: nowrap;align-items: center;"> + <!-- <i class="el-icon-caret-left table_caret" @click="caretBushing(-1)"></i> --> + <div :style="`font-family:${n.v.ff} !important;`">{{currentBushing?currentBushing.color:''}}</div> + <!-- <i class="el-icon-caret-right table_caret" @click="caretBushing(1)"></i> --> + </div> + </template> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鍏夌氦甯�'"> + <div style="display: flex;flex-wrap: nowrap;align-items: center;"> + <i class="el-icon-caret-left table_caret" @click="caretTape(-1) + " v-if="currentFiberOpticTape"></i> + <div :style="`font-family:${n.v.ff} !important;`">{{currentFiberOpticTape?currentFiberOpticTape.code:''}}</div> + <i class="el-icon-caret-right table_caret" + v-if="currentFiberOpticTape" + @click="caretTape(1)"></i> + </div> + </template> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鍏夌氦'"> + <div style="display: flex;flex-wrap: nowrap;align-items: center;"> + <i class="el-icon-caret-left table_caret" @click="caretOptic(-1)" + v-if="currentFiberOptic"></i> + <div :style="`font-family:${n.v.ff} !important;`">{{currentFiberOptic?currentFiberOptic.color:''}} + </div> + <i + v-if="currentFiberOptic" class="el-icon-caret-right table_caret" @click="caretOptic(1)"></i> + </div> </template> <span v-else :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span> </div> @@ -320,11 +352,24 @@ </tbody> </table> </div> + <el-upload :action="action" + :data="{ + orderId:id + }" + v-show="state==1&&fileAdd" + :on-success="handleSuccessUp" :show-file-list="false" + accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' :headers="headers" :on-change="beforeUpload" + :on-error="onError" ref='upload'> + <el-button size="small" type="primary">闄勪欢涓婁紶</el-button></el-upload> + <ValueTable class="value-table" ref="fileList" :url="$api.insOrderPlan.getFileList" + :componentData="componentData0" + :delUrl="$api.insOrderPlan.delfile" + :key="upIndex" style="height: 100%;margin-top: 16px;"/> </div> <el-drawer title="鍏夌氦鍒囨崲" :visible.sync="fiberOpticVisible" :size="500"> <el-table class="el-table" ref="fiberOpticTable" :data="fiberOptic" height="100%" tooltip-effect="dark" border highlight-current-row @row-click="handleChangeOptic" :row-class-name="tableRowClassName" - :current-row-key="currentKey" :row-key="record=>record.index" v-if="fiberOpticVisible"> + :current-row-key="currentKey2" :row-key="record=>record.index" v-if="fiberOpticVisible"> <el-table-column type="index" align="center" label="搴忓彿" width="70px" :key="Math.random()"> </el-table-column> <el-table-column prop="bushColor" label="绠″鑹叉爣" min-width="100px" show-overflow-tooltip></el-table-column> @@ -337,7 +382,7 @@ <el-drawer title="鍏夌氦甯﹀垏鎹�" :visible.sync="fiberOpticTapeVisible" :size="500"> <el-table class="el-table" ref="fiberOpticTapeTable" :data="fiberOpticTape" height="100%" tooltip-effect="dark" border highlight-current-row @row-click="handleChangeTape" :row-class-name="tableRowClassName" - :current-row-key="currentKey" :row-key="record=>record.index" v-if="fiberOpticTapeVisible"> + :current-row-key="currentKey1" :row-key="record=>record.index" v-if="fiberOpticTapeVisible"> <el-table-column type="index" align="center" label="搴忓彿" width="70px" :key="Math.random()"> </el-table-column> <el-table-column prop="code" label="鍏夌氦甯︾紪鍙�" min-width="110px" show-overflow-tooltip></el-table-column> @@ -350,7 +395,7 @@ <el-drawer title="濂楃鍒囨崲" :visible.sync="bushingVisible" :size="500"> <el-table class="el-table" ref="bushingTable" :data="bushing" height="100%" tooltip-effect="dark" border highlight-current-row @row-click="handleChangeBushing" :row-class-name="tableRowClassName" - :current-row-key="currentKey" :row-key="record=>record.index" v-if="bushingVisible"> + :current-row-key="currentKey0" :row-key="record=>record.index" v-if="bushingVisible"> <el-table-column type="index" align="center" label="搴忓彿" width="70px" :key="Math.random()"> </el-table-column> <el-table-column prop="color" label="绠¤壊鏍�" min-width="100px" show-overflow-tooltip></el-table-column> @@ -422,6 +467,7 @@ <script> import ValueTable from '../../tool/value-table.vue' + import file from '../../../util/file' export default { props: ['sonLaboratory', 'orderId', 'state'], components: { @@ -429,6 +475,7 @@ }, data() { return { + fileAdd:false, sampleVisible: false, taskVisible: false, submitLoading: false, @@ -463,6 +510,52 @@ requiredAdd: [], requiredUp: [] }, + componentData0: { + entity: { + insOrderId:'' + }, + isIndex: true, + showSelect: false, + select: false, + sort: false, + init:false, + do: [ + { + id: 'handleDown', + font: '涓嬭浇', + type: 'text', + method: 'handleDown' + },{ + id: 'delete', + font: '鍒犻櫎', + type: 'text', + method: 'doDiy', + disabFun: (row, index) => { + return this.state!=1 + } + } + ], + isPage: false, + linkEvent: {}, + tagField: { + type:{ + select:[ + { + value: 1, + label: '鍥剧墖' + }, + { + value: 2, + label: '鏂囦欢' + } + ] + } + }, + currentId: '', + selectField: {}, + requiredAdd: [], + requiredUp: [] + }, upIndex: 0, insOrder: {}, sampleProduct: [], @@ -474,6 +567,9 @@ ps: {}, param: {}, currentKey: 1, + currentKey0: 1, + currentKey1: 1, + currentKey2: 1, comparisonList: [], excelMethodList: [], equipOptions: [], @@ -499,8 +595,19 @@ currentFiberOptic:null,//褰撳墠鍏夌氦 currentBushing:null,//褰撳墠濂楃 tableLoading:false, + upLoading:false } }, + computed: { + headers() { + return { + 'token': sessionStorage.getItem('token') + } + }, + action() { + return this.javaApi + this.$api.insOrderPlan.uploadFile + } + }, created() { this.componentData.entity.sonLaboratory = this.sonLaboratory; this.id = this.orderId; @@ -512,6 +619,7 @@ this.getComparisonList() this.getAuthorizedPerson() this.scrollInit() + this.getPower() }, watch: { id(val) { @@ -521,6 +629,8 @@ laboratory: this.sonLaboratory }).then(async res => { this.insOrder = res.data.insOrder; + this.componentData0.entity.insOrderId = val; + this.$refs.fileList.selectList() this.urgentList.forEach(m => { if (m.value == this.insOrder.type) { this.insOrder.typeName = m.label @@ -573,6 +683,23 @@ } }, methods: { + getPower(){ + let power = JSON.parse(sessionStorage.getItem('power')) + let fileDel = false + let fileAdd = false + for (var i = 0; i < power.length; i++) { + if (power[i].menuMethod == 'uploadFile') { + fileAdd = true + } + if (power[i].menuMethod == 'delfile') { + fileDel = true + } + } + if (!fileDel) { + this.componentData0.do.splice(1, 1) + } + this.fileAdd = fileAdd + }, async getCurrentProduct(id,type){ this.tableLoading = true; let res = await this.$axios.post(this.$api.insOrderPlan.getInsProduct+'?id='+id+'&type='+type+'&laboratory='+this.sonLaboratory) @@ -593,6 +720,7 @@ this.fiberOpticTape = row.fibers; } this.bushingVisible = false; + this.currentKey0 = row.index }, async handleChangeOptic(row, column, event){ this.currentFiberOptic = row; @@ -609,7 +737,7 @@ this.fiberOpticVisible = false; let list = await this.getCurrentProduct(row.id,2) this.getTableLists0(list) - this.currentKey = row.index + this.currentKey2 = row.index }, async handleChangeTape(row, column, event){ this.currentFiberOpticTape = row; @@ -633,7 +761,7 @@ // 閰嶇疆鍏夌氦 this.fiberOptic = row.fiber; } - this.currentKey = row.index + this.currentKey1 = row.index }, async handleChangeSample(row, column, event) { this.param = {} @@ -1414,20 +1542,67 @@ } this.addVerifyDia = false this.submitLoading = true; - this.$axios.post(this.$api.insOrderPlan.submitPlan, { + this.$axios.post(this.$api.insOrderPlan.checkSubmitPlan, { orderId: this.orderId, laboratory: this.sonLaboratory, - verifyUser: this.verifyUser }).then(res => { if (res.code === 200) { - this.$message.success("鎿嶄綔鎴愬姛") - this.$emit('goback') + console.log(res.data) + if(!res.data||res.data.length==0){ + this.$axios.post(this.$api.insOrderPlan.submitPlan, { + orderId: this.orderId, + laboratory: this.sonLaboratory, + verifyUser: this.verifyUser + }).then(res => { + if (res.code === 200) { + this.$message.success("鎿嶄綔鎴愬姛") + this.$emit('goback') + } + this.submitLoading = false; + }).catch(error => { + console.error(error) + this.submitLoading = false; + }) + }else{ + let newData = [] + const h = this.$createElement + for (let i in res.data) { + const lastChar = res.data[i].slice(-1); + if(lastChar=='-'){ + res.data[i] = res.data[i].slice(0, -1); + } + newData.push(h('p', {style: 'font-size: 12px;'}, (Number(i)+1)+'銆�'+res.data[i])) + } + newData.push(h('p', { style: 'font-size: 16px;color:#000;margin-top:12px' },'浠ヤ笂椤圭洰涓嶅悎鏍硷紝纭畾鎻愪氦锛�')) + this.$confirm('鎻愮ず',{ + title:'鎻愮ず', + message: h('div', null, newData), + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "" + }).then(() => { + this.$axios.post(this.$api.insOrderPlan.submitPlan, { + orderId: this.orderId, + laboratory: this.sonLaboratory, + verifyUser: this.verifyUser + }).then(res => { + if (res.code === 200) { + this.$message.success("鎿嶄綔鎴愬姛") + this.$emit('goback') + } + }).catch(error => { + console.error(error) + }) + }).catch(() => {}) + } + } this.submitLoading = false; }).catch(error => { console.error(error) this.submitLoading = false; }) + return }, saveInsContext() { this.$axios.post(this.$api.insOrderPlan.saveInsContext, { @@ -1515,6 +1690,127 @@ } }) this.getTableLists() + }, + caretBushing(num){ + let index = this.currentKey0 + num + if(index < 1){ + this.$message.error('褰撳墠鏄涓�涓绠�') + return + } else if(index > this.bushing.length){ + this.$message.error('褰撳墠鏄渶鍚庝竴涓绠�') + return + } + this.currentKey0 = index + this.currentBushing = this.HaveJson(this.bushing[index - 1]) + this.fiberOpticTape = [] + this.currentFiberOpticTape = null; + this.fiberOptic = [] + this.currentFiberOptic = null; + if( this.currentBushing.fiber&& this.currentBushing.fiber.length>0){ + // 鐩存帴閰嶇疆鍏夌氦 + this.fiberOptic = this.currentBushing.fiber; + }else if( this.currentBushing.fibers&& this.currentBushing.fibers.length>0){ + // 閰嶇疆鍏夌氦甯﹀悗锛屽啀閰嶇疆鍏夌氦 + this.fiberOpticTape = this.currentBushing.fibers; + } + }, + async caretTape(num){ + let index = this.currentKey1 + num + if(index < 1){ + this.$message.error('褰撳墠鏄涓�涓厜绾ゅ甫') + return + } else if(index > this.fiberOpticTape.length){ + this.$message.error('褰撳墠鏄渶鍚庝竴涓厜绾ゅ甫') + return + } + this.currentKey1 = index + this.currentFiberOpticTape = this.HaveJson(this.fiberOpticTape[index - 1]) + this.param = {} + this.fiberOptic = [] + this.currentFiberOptic = null; + this.currentFiberOpticTape.productList.forEach(a => { + this.param[a.id] = { + insValue: [], + comValue: [], + resValue: null, + equipValue: [], + equipName: [], + insResult: null + } + }) + this.fiberOpticTapeVisible = false; + let list = await this.getCurrentProduct(this.currentFiberOpticTape.id,1) + this.getTableLists0(list) + if(this.currentFiberOpticTape.fiber&&this.currentFiberOpticTape.fiber.length>0){ + // 閰嶇疆鍏夌氦 + this.fiberOptic = this.currentFiberOpticTape.fiber; + } + }, + async caretOptic(num){ + let index = this.currentKey2 + num + if(index < 1){ + this.$message.error('褰撳墠鏄涓�涓厜绾�') + return + } else if(index > this.fiberOptic.length){ + this.$message.error('褰撳墠鏄渶鍚庝竴涓厜绾�') + return + } + this.currentKey2 = index + this.currentFiberOptic = this.HaveJson(this.fiberOptic[index - 1]) + this.currentFiberOptic.productList.forEach(a => { + this.param[a.id] = { + insValue: [], + comValue: [], + resValue: null, + equipValue: [], + equipName: [], + insResult: null + } + }) + let list = await this.getCurrentProduct(this.currentFiberOptic.id,2) + this.getTableLists0(list) + }, + handleSuccessUp(response, ) { + this.upLoading = false; + if (response.code == 200) { + this.$message.success('涓婁紶鎴愬姛'); + this.$refs.fileList.selectList() + } + }, + beforeUpload(file) { + if (file.size > 1024 * 1024 * 10) { + this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M'); + this.$refs.upload.clearFiles() + return false; + } else { + this.upLoading = true; + return true; + } + }, + onError(err, file, fileList) { + this.$message.error('涓婁紶澶辫触') + this.$refs.upload.clearFiles() + }, + handleDown(row){ + this.$axios.post(this.$api.insOrderPlan.downFile, { + id: row.id, + }).then(res => { + if (res.code === 200) { + let url = ''; + if(res.data.type==1){ + url = this.javaApi+'/img/'+res.data.fileUrl + file.downloadIamge(url,row.fileName) + }else{ + url = this.javaApi+'/word/'+res.data.fileUrl + const link = document.createElement('a'); + link.href = url; + link.download = row.fileName; + link.click(); + } + } + }).catch(error => { + + }) } } } -- Gitblit v1.9.3