From ef9eb48046f8dfbb3c18b0f45befcbeddbdf6899 Mon Sep 17 00:00:00 2001
From: value <z1292839451@163.com>
Date: 星期三, 29 五月 2024 03:56:23 +0800
Subject: [PATCH] 光纤配置数据回显和保存
---
src/components/view/b1-inspect-order-plan.vue | 771 ++++++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 520 insertions(+), 251 deletions(-)
diff --git a/src/components/view/b1-inspect-order-plan.vue b/src/components/view/b1-inspect-order-plan.vue
index 2216473..14cd472 100644
--- a/src/components/view/b1-inspect-order-plan.vue
+++ b/src/components/view/b1-inspect-order-plan.vue
@@ -1,274 +1,543 @@
<style scoped>
-.ins-order-plan-main{
- padding-top: 60px;
-}
-.ins-order-plan-main .search{
- width: 100%;
- margin-bottom: 10px;
- height: 10vh;
- background-color: #fff;
- border-radius: 3px;
-}
-.search .form-inline{
- height: 5vh;
- padding-top:2.5vh;
- padding-left: 1%;
-}
-.ins-order-plan-main .center{
- width: 100%;
- height: 70vh;
- background-color: #fff;
- border-radius: 3px;
-}
-.ins-order-plan-main .center .value-table{
- width:98%;
- height: 80%;
- margin-left:1%;
-}
-.tab {
- list-style-type: none;
- display: flex;
- padding: 10px 0px;
-}
-.tab li {
- line-height: 24px;
- padding: 6px 14px;
- font-size: 14px;
- color: #333333;
- border: 1px solid #EEEEEE;
- cursor: pointer;
-}
+ .ins-order-plan-main .title {
+ font-size: 20px;
+ color: #3A7BFA
+ }
-.tab li:nth-child(1) {
- border-radius: 8px 0 0 8px;
-}
+ .search {
+ background-color: #fff;
+ height: 80px;
+ display: flex;
+ align-items: center;
+ }
-.tab li:nth-child(3) {
- border-radius: 0 8px 8px 0;
-}
+ .search_thing {
+ display: flex;
+ align-items: center;
+ height: 50px;
+ }
-.tab li.active {
- border-color: #3A7BFA;
- color: #3A7BFA;
-}
-.center .center-options:nth-child(1){
- padding-left: 1%;
-}
-.center .center-options .center-title {
- width:85%;
- padding-top: 20px;
- text-align: right;
-}
-.center .center-options .center-title span:last-child{
- color: #3A7BFA;
- font-size: 23px;
- font-weight: 400;
-}
+ .search_label {
+ width: 120px;
+ font-size: 14px;
+ text-align: right;
+ }
+ .search_input {
+ width: calc(100% - 120px);
+ }
+
+ .ins-order-plan-main .search {
+ width: 100%;
+ margin-bottom: 10px;
+ height: 80px;
+ background-color: #fff;
+ border-radius: 3px;
+ }
+
+ .search .form-inline {
+ height: 50px;
+ padding-top: 20px;
+ padding-left: 50px;
+ }
+
+ .ins-order-plan-main .center {
+ width: calc(100% - 40px);
+ height: calc(100% - 60px - 80px - 40px);
+ background-color: #fff;
+ border-radius: 3px;
+ padding: 20px;
+ }
+
+ .ins-order-plan-main .center .value-table {
+ width: 100%;
+ height: calc(100% - 68px);
+ }
+
+ .tab {
+ list-style-type: none;
+ display: flex;
+ }
+
+ .tab li {
+ line-height: 24px;
+ padding: 6px 14px;
+ font-size: 14px;
+ color: #333333;
+ border: 1px solid #EEEEEE;
+ cursor: pointer;
+ }
+
+ .tab li:nth-child(1) {
+ border-radius: 8px 0 0 8px;
+ }
+
+ .tab li:nth-last-child(1) {
+ border-radius: 0 8px 8px 0;
+ }
+
+ .tab li.active {
+ border-color: #3A7BFA;
+ color: #3A7BFA;
+ }
+
+ .center .center-options .center-title {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: right;
+ }
+
+ .center .center-options .center-title span:last-child {
+ color: #3A7BFA;
+ font-size: 23px;
+ font-weight: 400;
+ }
+
+ .view-self-checkbox {
+ margin-left: 50px;
+ }
+</style>
+<style>
+ .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">
- <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>
+ <div class="ins-order-plan-main">
+ <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>
+ <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" :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>
- </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="20">
- <ul class="tab">
- <li v-for="(m,i) in tabList" :key="i" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}}</li>
- </ul>
- </el-col>
- <el-col :span="4">
- <div class="center-title">
- <span>鎬昏浠诲姟鏁伴噺:</span>
- <span v-if="$refs.insOrderPlan != undefined">{{$refs.insOrderPlan.total}}</span>
- </div>
- </el-col>
- </el-row>
+ </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>
- </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 { getYearAndMonthAndDays } from '../../util/date'
-export default {
- components:{
- ValueTable
- },
- data(){
- return {
- searchForm:{
- sampleName: null,
- state: null
- },
- tabList: [
- {
- label: '瀹為獙瀹�1',
- value: 1
- },
- {
- label: '瀹為獙瀹�2',
- value: 2
- },
- {
- label: '瀹為獙瀹�3',
- value: 3
- }
- ],
- active: 1,
- tabIndex: 0,
- componentData: {
+ 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,
+ Inspection,
+ Add
+ },
+ data() {
+ return {
+ alone: false,
+ sampleUserForm: {
+ entrustCode: null,
+ insSampleId: null,
+ userId: null
+ },
+ claimVisible: false,
+ tabList: [],
+ active: 1,
+ tabIndex: 0,
+ componentData: {
entity: {
- state: 1,
- insState: null,
- sample: null,
- orderBy: {
- field: 'type',
- order: 'desc'
- }
+ sonLaboratory: null,
+ insState: null,
+ userId: null
},
isIndex: true,
showSelect: false,
select: false,
+ sort: false,
+ init: false,
do: [{
- id: '',
- font: '妫�楠�',
- type: 'text',
- method: '',
- field:[]
- },{
- id: '',
- font: '浜ゆ帴',
- type: 'text',
- method: ''
+ id: '',
+ font: '妫�楠�',
+ type: 'text',
+ method: 'handleInspection',
+ disabFun: (row, index) => {
+ return row.userId == null || row.insState == 3 || row.insState == 5
+ }
+ }, {
+ id: '',
+ font: '浜ゆ帴',
+ type: 'text',
+ method: 'handleConnect',
+ disabFun: (row, index) => {
+ return row.userId == null || row.orderUserId == null || row.insState == 5 || row.insState == 3
+ }
+ },
+ {
+ id: '',
+ font: '澶嶆牳',
+ type: 'text',
+ 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.userId != null
+ }
+ }
+ ],
+ linkEvent: {
+ entrustCode: {
+ method: 'selectAllByOne'
+ }
},
- {
- id: '',
- font: '澶嶆牳',
- type: 'text',
- method: ''
- },{
- id: '',
- font: '璁ら',
- type: 'text',
- method: ''
- }],
tagField: {
- type:{
- select:[]
- },
- insState:{
- select:[]
- }
- },
+ type: {
+ select: []
+ },
+ insState: {
+ select: []
+ },
+ insResult: {
+ select: [{
+ value: 0,
+ label: '涓嶅悎鏍�',
+ type: 'danger'
+ },{
+ value: 1,
+ label: '鍚堟牸',
+ type: 'success'
+ },{
+ value: '',
+ label: '鏈嚭缁撴灉',
+ type: 'info'
+ }]
+ }
+ },
selectField: {},
- requiredAdd:[],
- requiredUp:[]
+ requiredAdd: [],
+ requiredUp: []
},
- upIndex: 0,
- planTotal: 0,
- insStateList: []
- }
- },
- created(){
- this.getTypeDicts()
- this.getInsStateDicts()
- this.refreshTable()
- },
- methods:{
- upUser(){
-
- },
- refreshTable() {
- this.$refs.insOrderPlan.selectList()
- this.$nextTick(()=>{
- this.planTotal = this.$refs.insOrderPlan.total
- })
- },
- changeRowClass(obj,rowIndex){
- let currentTime = getYearAndMonthAndDays()
- if(obj.row.sendTime && currentTime===obj.row.sendTime){
- return 'highlight-warning-row-border'
- }else if(obj.row.sendTime && currentTime>obj.row.sendTime){
- return 'highlight-danger-row-border'
- }
- return ''
- },
- onReset(){
- this.searchForm = {
- sampleName: null,
- state: null,
- }
- this.componentData.entity.insState = null
- this.componentData.entity.sample = null
- this.refreshTable()
- },
- onSubmit(){
- this.componentData.entity.insState = this.searchForm.state
- this.componentData.entity.sample = this.searchForm.sampleName
- this.$nextTick(()=>{
- this.refreshTable()
- })
- },
- handleTab(m, i) {
- this.tabIndex = i;
- //this.componentData.entity.state = m.value
- //this.refreshTable()
- },
- getTypeDicts() {
- this.$axios.post(this.$api.enums.selectEnumByCategory, {
- category: "绱ф�ョ▼搴�"
- }).then(res => {
- let data = res.data
- data.forEach(ele=>{
- if(ele.value==='0'){
- ele.type='success'
- }else if(ele.value==='1'){
- ele.type='warning'
- }else if(ele.value==='2'){
- ele.type='danger'
- }
- })
- this.componentData.tagField.type.select = data
- })
- },
- getInsStateDicts() {
- this.$axios.post(this.$api.enums.selectEnumByCategory, {
- category: "妫�楠屼换鍔$姸鎬�"
- }).then(res => {
- let data = res.data
- this.insStateList = data
- data.forEach(ele=>{
- //0:寰呮楠� 1:妫�楠屼腑 2:宸叉楠� 3:寰呭鏍� 4:澶嶆牳鏈�氳繃 5:澶嶆牳閫氳繃
- if(['2','5'].includes(ele.value)){
- ele.type='success'
- }else if(['1','3'].includes(ele.value)){
- ele.type='warning'
- }else if(['0','4'].includes(ele.value)){
- ele.type='danger'
- }
- })
- this.componentData.tagField.insState.select = data
- })
- },
- }
-}
+ upIndex: 0,
+ planTotal: 0,
+ 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.getAuthorizedPerson()
+ this.currentTime = getYearAndMonthAndDays()
+ },
+ mounted() {
+ this.entityCopy = this.HaveJson(this.componentData.entity)
+ this.getPower()
+ },
+ methods: {
+ // 鏉冮檺鍒嗛厤
+ 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.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) {
+ if (row) {
+ this.sampleUserForm = {
+ entrustCode: row.entrustCode,
+ insSampleId: row.id
+ }
+ 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() {
+ this.$refs.insOrderPlan.selectList()
+ },
+ changeRowClass({
+ row,
+ rowIndex
+ }) {
+ if (this.currentTime == row.appointed) {
+ return 'highlight-warning-row-border'
+ } else if (this.currentTime > row.appointed) {
+ return 'highlight-danger-row-border'
+ }
+ return ''
+ },
+ onReset() {
+ this.searchForm = {
+ sampleName: null,
+ state: null,
+ }
+ this.componentData.entity.insState = null
+ this.componentData.entity.sampleName = null
+ this.refreshTable()
+ },
+ onSubmit() {
+ this.componentData.entity.insState = this.searchForm.state
+ this.componentData.entity.sampleName = this.searchForm.sampleName
+ this.$nextTick(() => {
+ this.refreshTable()
+ })
+ },
+ handleTab(m, i) {
+ this.tabIndex = i;
+ this.componentData.entity.sonLaboratory = m.value
+ this.refreshTable()
+ },
+ getTypeDicts() {
+ this.$axios.post(this.$api.enums.selectEnumByCategory, {
+ category: "绱ф�ョ▼搴�"
+ }).then(res => {
+ let data = res.data
+ data.forEach(ele => {
+ if (ele.value === '0') {
+ ele.type = 'success'
+ } else if (ele.value === '1') {
+ ele.type = 'warning'
+ } else if (ele.value === '2') {
+ ele.type = 'danger'
+ }
+ })
+ this.componentData.tagField.type.select = data
+ })
+ },
+ getInsStateDicts() {
+ this.$axios.post(this.$api.enums.selectEnumByCategory, {
+ category: "妫�楠屼换鍔$姸鎬�"
+ }).then(res => {
+ let data = res.data
+ this.insStateList = data
+ data.forEach(ele => {
+ //0:寰呮楠� 1:妫�楠屼腑 2:宸叉楠� 3:寰呭鏍� 4:澶嶆牳鏈�氳繃 5:澶嶆牳閫氳繃
+ if (['2', '5'].includes(ele.value)) {
+ ele.type = 'success'
+ } else if (['1', '3'].includes(ele.value)) {
+ ele.type = 'warning'
+ } else if (['0', '4'].includes(ele.value)) {
+ ele.type = 'danger'
+ }
+ })
+ this.componentData.tagField.insState.select = data
+ })
+ },
+ getLaboratoryDicts() {
+ this.$axios.post(this.$api.enums.selectEnumByCategory, {
+ category: "瀛愬疄楠屽"
+ }).then(res => {
+ this.tabList = res.data.map(ele => {
+ return {
+ label: ele.label,
+ value: ele.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