From 2e9370979f871bf47f6dc145c49d7bf32ffa4b51 Mon Sep 17 00:00:00 2001 From: value <z1292839451@163.com> Date: 星期一, 03 六月 2024 09:08:02 +0800 Subject: [PATCH] 完成光纤配置进行检验 --- src/components/view/b1-inspect-order-plan.vue | 367 ++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 271 insertions(+), 96 deletions(-) diff --git a/src/components/view/b1-inspect-order-plan.vue b/src/components/view/b1-inspect-order-plan.vue index def16ef..14cd472 100644 --- a/src/components/view/b1-inspect-order-plan.vue +++ b/src/components/view/b1-inspect-order-plan.vue @@ -1,7 +1,30 @@ <style scoped> - ins-order-plan-main .title { + .ins-order-plan-main .title { font-size: 20px; color: #3A7BFA + } + + .search { + background-color: #fff; + height: 80px; + display: flex; + align-items: center; + } + + .search_thing { + display: flex; + align-items: center; + height: 50px; + } + + .search_label { + width: 120px; + font-size: 14px; + text-align: right; + } + + .search_input { + width: calc(100% - 120px); } .ins-order-plan-main .search { @@ -49,7 +72,7 @@ border-radius: 8px 0 0 8px; } - .tab li:nth-child(3) { + .tab li:nth-last-child(1) { border-radius: 0 8px 8px 0; } @@ -60,9 +83,9 @@ .center .center-options .center-title { width: 100%; - text-align: right; display: flex; align-items: center; + justify-content: right; } .center .center-options .center-title span:last-child { @@ -79,138 +102,193 @@ .ins-order-plan-main .el-form-item__label{ color: #000; } + + .ins-order-plan-main .el-table th.el-table__cell>.cell{ + height: 46px; + line-height: 30px; + } </style> <template> <div class="ins-order-plan-main"> - <p style="font-size: 16px;padding:19.5px 0px">妫�楠屼换鍔�</p> - <div class="search"> - <el-form :inline="true" :model="searchForm" class="form-inline"> - <el-form-item label="鏍峰搧鍚嶇О:"> - <el-input clearable v-model="searchForm.sampleName" size="small" placeholder="璇疯緭鍏�"></el-input> - </el-form-item> - <el-form-item label="鐘舵��:"> - <el-select clearable size="small" v-model="searchForm.state" placeholder="璇烽�夋嫨"> - <el-option v-for="(item,index) in insStateList" :key="index" :label="item.label" - :value="item.value"></el-option> - </el-select> - </el-form-item> - <el-form-item> - <el-button size="small" @click="onReset">閲嶇疆</el-button> - <el-button size="small" type="primary" @click="onSubmit">鏌ヨ</el-button> - </el-form-item> - </el-form> - </div> - <div class="center"> - <div class="center-options"> - <el-row> - <el-col :span="21"> - <div style="display: flex;align-items: center;margin-bottom: 10px;"> - <ul class="tab"> - <li v-for="(m,i) in tabList" :key="i" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}} - </li> - </ul> - <div> - <el-checkbox @change="changeCheckBox" class="view-self-checkbox" - v-model="viewSelf"><span>鎴戠殑浠诲姟</span></el-checkbox> - </div> - </div> - </el-col> - <el-col :span="3"> - <div class="center-title"> - <span>鎬昏浠诲姟鏁伴噺:</span> - <span v-if="$refs.insOrderPlan != undefined">{{$refs.insOrderPlan.total}}</span> - </div> - </el-col> - </el-row> + <div v-show="activeFace == 0&&state==0" style="height: 100%;"> + <p style="font-size: 16px;padding:19.5px 0px">妫�楠屼换鍔�</p> + <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-select size="small" v-model="componentData.entity.insState" style="width: 100%;" @change="refreshTable()"> + <el-option v-for="(a, i) in insStateList" :key="i" :label="a.label" :value="a.value"></el-option> + </el-select> + </div> + </div> + <div class="search_thing" style="padding-left: 30px;"> + <el-button size="small" @click="refresh()">閲� 缃�</el-button> + <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> + </div> </div> - <ValueTable :tableRowClassName="changeRowClass" class="value-table" ref="insOrderPlan" - :url="$api.insOrderPlan.selectInsOrderPlanList" :upUrl="$api.user.updateUser" :componentData="componentData" - :key="upIndex" @upUser="upUser" /> + <div class="center"> + <div class="center-options"> + <el-row> + <el-col :span="21"> + <div style="display: flex;align-items: center;margin-bottom: 10px;"> + <ul class="tab"> + <li v-for="(m,i) in tabList" :key="i" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label.replace('璇曢獙瀹�','')}} + </li> + </ul> + <div> + <el-checkbox @change="changeCheckBox" class="view-self-checkbox" + v-model="alone"><span>鎴戠殑浠诲姟</span></el-checkbox> + </div> + </div> + </el-col> + <el-col :span="3"> + <div class="center-title"> + <span>鎬昏浠诲姟鏁伴噺:</span> + <span v-if="$refs.insOrderPlan != undefined">{{$refs.insOrderPlan.total}}</span> + </div> + </el-col> + </el-row> + </div> + <ValueTable :tableRowClassName="changeRowClass" class="value-table" ref="insOrderPlan" + :url="$api.insOrderPlan.selectInsOrderPlanList" :upUrl="$api.user.updateUser" :componentData="componentData" @handleInspection="handleInspection" + :key="upIndex"/> + </div> </div> <el-dialog title="鎻愮ず" :visible.sync="claimVisible" width="400px"> 鏄惁璁ら濮旀墭缂栧彿<span style="color:#33C130">{{sampleUserForm.entrustCode}}</span>鐨勪换鍔� <span slot="footer" class="dialog-footer"> <el-button @click="claimVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="confirmClaim">纭� 瀹�</el-button> + <el-button type="primary" @click="confirmClaim" :loading="loading">纭� 瀹�</el-button> </span> </el-dialog> + <el-dialog title="妫�楠屼氦鎺�" :visible.sync="connectVisible" width="400px"> + <div class="search_thing"> + <div class="search_label" style="width:90px">浜ゆ帴浜哄憳锛�</div> + <div class="search_input"> + <el-select v-model="connectPerson" placeholder="璇烽�夋嫨" style="width: 100%;" filterable> + <el-option + v-for="item in personList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="connectVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="confirmConnect" :loading="loading">纭� 瀹�</el-button> + </span> + </el-dialog> + <div style="width: 100%;height: 100%;" v-if="activeFace >0"> + <Add :active="activeFace" :currentId="currentId"/> + </div> + <Inspection v-if="state>0" @goback="goback" :orderId="orderId" :sonLaboratory="componentData.entity.sonLaboratory" :state="state"/> </div> </template> <script> import ValueTable from '../tool/value-table.vue' + import Inspection from '../do/b1-inspect-order-plan/Inspection.vue' import { getYearAndMonthAndDays } from '../../util/date' + import Add from '../do/b1-ins-order/add.vue' export default { components: { - ValueTable + ValueTable, + Inspection, + Add }, data() { return { - viewSelf: false, + alone: false, sampleUserForm: { entrustCode: null, insSampleId: null, userId: null }, claimVisible: false, - searchForm: { - sampleName: null, - state: null - }, tabList: [], active: 1, tabIndex: 0, componentData: { entity: { - viewSelf: false, - state: 1, - childrenLaboratory: null, + sonLaboratory: null, insState: null, - sampleName: null, - orderBy: { - field: 'type', - order: 'desc' - } + userId: null }, isIndex: true, showSelect: false, select: false, sort: false, + init: false, do: [{ id: '', font: '妫�楠�', type: 'text', - method: '', - field: [] + method: 'handleInspection', + disabFun: (row, index) => { + return row.userId == null || row.insState == 3 || row.insState == 5 + } }, { id: '', font: '浜ゆ帴', type: 'text', - method: '' + method: 'handleConnect', + disabFun: (row, index) => { + return row.userId == null || row.orderUserId == null || row.insState == 5 || row.insState == 3 + } }, { id: '', font: '澶嶆牳', type: 'text', - method: '' + method: 'handleReview', + disabFun: (row, index) => { + return row.userId == null || row.insState != 3 || row.verifyUser != 1 + } }, { id: '', font: '璁ら', type: 'text', method: 'claimFun', disabFun: (row, index) => { - return row.sampleUserId != null + return row.userId != null } } ], + linkEvent: { + entrustCode: { + method: 'selectAllByOne' + } + }, tagField: { type: { select: [] }, insState: { select: [] + }, + insResult: { + select: [{ + value: 0, + label: '涓嶅悎鏍�', + type: 'danger' + },{ + value: 1, + label: '鍚堟牸', + type: 'success' + },{ + value: '', + label: '鏈嚭缁撴灉', + type: 'info' + }] } }, selectField: {}, @@ -219,39 +297,78 @@ }, upIndex: 0, planTotal: 0, - insStateList: [] + insStateList: [], + state:0,//0:鍙拌处椤碉紝1锛氭楠岄〉闈�,2妫�楠岄〉闈�(澶嶆牳)锛岄粯璁や负0 + activeFace: 0, //1锛氫笅鍗曪紝2锛氭煡鐪嬶紝3锛氬鏍革紝榛樿涓�0 + currentId: null, + entityCopy: {}, + orderId: 0, + personList:[], + connectVisible:false, + connectPerson:'', + loading:false, + currentTime: null } }, created() { + this.getLaboratoryDicts() this.getTypeDicts() this.getInsStateDicts() - this.getLaboratoryDicts() - this.$nextTick(() => { - this.refreshTable() - }) + this.getAuthorizedPerson() + this.currentTime = getYearAndMonthAndDays() }, - watch: { - tabList(newVal) { - if (newVal && newVal.length > 0) { - this.componentData.entity.childrenLaboratory = newVal[0].value - this.$nextTick(() => { - this.refreshTable() - }) - } - } + mounted() { + this.entityCopy = this.HaveJson(this.componentData.entity) + this.getPower() }, methods: { - upUser() { - + // 鏉冮檺鍒嗛厤 + getPower(radio) { + let power = JSON.parse(sessionStorage.getItem('power')) + let inspection = false + let connect = false + let review = false + let claim = false + for (var i = 0; i < power.length; i++) { + if (power[i].menuMethod == 'doInsOrder') { + inspection = true + } + if (power[i].menuMethod == 'upPlanUser') { + connect = true + } + if (power[i].menuMethod == 'verifyPlan') { + review = true + } + if (power[i].menuMethod == 'claimInsOrderPlan') { + claim = true + } + } + if (!claim) { + this.componentData.do.splice(3, 1) + } + if (!review) { + this.componentData.do.splice(2, 1) + } + if (!connect) { + this.componentData.do.splice(1, 1) + } + if (!inspection) { + this.componentData.do.splice(0, 1) + } }, changeCheckBox(val) { - this.componentData.entity.viewSelf = val - this.$nextTick(() => { - this.refreshTable() - }) + this.componentData.entity.userId = val?0:null + this.refreshTable() + }, + refresh() { + this.componentData.entity = this.HaveJson(this.entityCopy) + if(this.tabList.length>0){ + this.tabIndex = 0 + this.componentData.entity.sonLaboratory = this.tabList[0].value + } + this.refreshTable() }, claimFun(row) { - console.log(row) if (row) { this.sampleUserForm = { entrustCode: row.entrustCode, @@ -259,21 +376,23 @@ } this.claimVisible = true } - }, confirmClaim() { + this.loading = true; this.$axios.post(this.$api.insOrderPlan.claimInsOrderPlan, this.sampleUserForm, { headers: { 'Content-Type': 'application/json' } }).then(res => { if (res.code === 200 && res.data) { + this.loading = false; this.$message.success("璁ら鎴愬姛") this.claimVisible = false this.refreshTable() } }).catch(error => { console.error(error) + this.loading = false; }) }, refreshTable() { @@ -283,10 +402,9 @@ row, rowIndex }) { - let currentTime = getYearAndMonthAndDays() - if (row.sendTime && currentTime === row.sendTime) { + if (this.currentTime == row.appointed) { return 'highlight-warning-row-border' - } else if (row.sendTime && currentTime > row.sendTime) { + } else if (this.currentTime > row.appointed) { return 'highlight-danger-row-border' } return '' @@ -309,7 +427,7 @@ }, handleTab(m, i) { this.tabIndex = i; - this.componentData.entity.childrenLaboratory = m.value + this.componentData.entity.sonLaboratory = m.value this.refreshTable() }, getTypeDicts() { @@ -358,11 +476,68 @@ value: ele.value } }) - this.$nextTick(() => { - this.componentData.entity.childrenLaboratory = this.tabList[0].value - }) + if(this.tabList.length>0){ + this.componentData.entity.sonLaboratory = this.tabList[0].value + } + this.refreshTable() }) - } + }, + selectAllByOne(row) { + this.activeFace = 2; + this.currentId = parseInt(row.id) + }, + playOrder(num) { + this.activeFace = num + }, + goback() { + this.state = 0 + this.refreshTable() + }, + handleInspection(row){ + this.state = 1; + this.orderId = row.id + }, + handleConnect(row){ + this.orderId = row.id + this.connectVisible=true; + }, + confirmConnect(){ + if(this.connectPerson){ + this.loading = true; + this.$axios.post(this.$api.insOrderPlan.upPlanUser, { + orderId:this.orderId, + userId:this.connectPerson + }).then(res => { + if (res.code === 200) { + this.loading = false; + this.$message.success("鎿嶄綔鎴愬姛") + this.refreshTable() + } + this.connectVisible = false + }).catch(error => { + console.error(error) + this.loading = false; + }) + }else{ + this.$message.error('鏈�夋嫨浜ゆ帴浜哄憳') + } + }, + handleReview(row){ + this.state = 2; + this.orderId = row.id + }, + getAuthorizedPerson() { + this.$axios.get(this.$api.user.getUserMenu).then(res => { + let data = [] + res.data.forEach(a => { + data.push({ + label: a.name, + value: a.id + }) + }) + this.personList = data + }) + }, } } </script> -- Gitblit v1.9.3