From 3ef19c59f59bb1b5a43434b8d14ec12e06d505b0 Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期二, 19 三月 2024 13:07:19 +0800
Subject: [PATCH] 检验下单-下发功能更新
---
src/components/view/b1-inspect-order-plan.vue | 590 ++++++++++++++++++++++++++++++++++------------------------
1 files changed, 342 insertions(+), 248 deletions(-)
diff --git a/src/components/view/b1-inspect-order-plan.vue b/src/components/view/b1-inspect-order-plan.vue
index d3faffd..bb8dcaf 100644
--- a/src/components/view/b1-inspect-order-plan.vue
+++ b/src/components/view/b1-inspect-order-plan.vue
@@ -1,145 +1,174 @@
<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;
-}
+ .ins-order-plan-main .search {
+ width: 100%;
+ margin-bottom: 10px;
+ height: 80px;
+ background-color: #fff;
+ border-radius: 3px;
+ }
-.tab li:nth-child(3) {
- border-radius: 0 8px 8px 0;
-}
+ .search .form-inline {
+ height: 50px;
+ padding-top: 20px;
+ padding-left: 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;
-}
+ .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-child(3) {
+ border-radius: 0 8px 8px 0;
+ }
+
+ .tab li.active {
+ border-color: #3A7BFA;
+ color: #3A7BFA;
+ }
+
+ .center .center-options .center-title {
+ width: 100%;
+ text-align: right;
+ display: flex;
+ align-items: center;
+ }
+
+ .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;
+ }
</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>
- </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-text="planTotal"></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" :key="upIndex" @upUser="upUser"/>
- </div>
- </div>
+ <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>
+ <ValueTable :tableRowClassName="changeRowClass" class="value-table" ref="insOrderPlan"
+ :url="$api.insOrderPlan.selectInsOrderPlanList" :upUrl="$api.user.updateUser" :componentData="componentData"
+ :key="upIndex" @upUser="upUser" />
+ </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>
+ </span>
+ </el-dialog>
+ </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 {
+ getYearAndMonthAndDays
+ } from '../../util/date'
+ export default {
+ components: {
+ ValueTable
+ },
+ data() {
+ return {
+ viewSelf: false,
+ sampleUserForm: {
+ entrustCode: null,
+ insSampleId: null,
+ userId: null
+ },
+ claimVisible: false,
+ searchForm: {
+ sampleName: null,
+ state: null
+ },
+ tabList: [],
+ active: 1,
+ tabIndex: 0,
+ componentData: {
entity: {
- state: 1,
- insState: null,
- sample: null,
+ viewSelf: false,
+ state: 1,
+ childrenLaboratory: null,
+ insState: null,
+ sampleName: null,
orderBy: {
field: 'type',
order: 'desc'
@@ -149,125 +178,190 @@
showSelect: false,
select: false,
do: [{
- id: '',
- font: '妫�楠�',
- type: 'text',
- method: '',
- field:[]
- },{
- id: '',
- font: '浜ゆ帴',
- type: 'text',
- method: ''
- },
- {
- id: '',
- font: '澶嶆牳',
- type: 'text',
- method: ''
- },{
- id: '',
- font: '璁ら',
- type: 'text',
- method: ''
- }],
+ id: '',
+ font: '妫�楠�',
+ type: 'text',
+ method: '',
+ field: []
+ }, {
+ id: '',
+ font: '浜ゆ帴',
+ type: 'text',
+ method: ''
+ },
+ {
+ id: '',
+ font: '澶嶆牳',
+ type: 'text',
+ method: ''
+ }, {
+ id: '',
+ font: '璁ら',
+ type: 'text',
+ method: 'claimFun',
+ disabFun: (row, index) => {
+ return row.sampleUserId != null
+ }
+ }
+ ],
tagField: {
- type:{
- select:[]
- },
- insState:{
- select:[]
- }
- },
+ type: {
+ select: []
+ },
+ insState: {
+ select: []
+ }
+ },
selectField: {},
- requiredAdd:[],
- requiredUp:[]
+ requiredAdd: [],
+ requiredUp: []
},
- upIndex: 0,
- planTotal: 0,
- insStateList: []
- }
- },
- created(){
- this.getTypeDicts()
- this.getInsStateDicts()
- },
- methods:{
- upUser(){
+ upIndex: 0,
+ planTotal: 0,
+ insStateList: []
+ }
+ },
+ created() {
+ this.getTypeDicts()
+ this.getInsStateDicts()
+ this.getLaboratoryDicts()
+ this.$nextTick(() => {
+ this.refreshTable()
+ })
+ },
+ watch: {
+ tabList(newVal) {
+ if (newVal && newVal.length > 0) {
+ this.componentData.entity.childrenLaboratory = newVal[0].value
+ this.$nextTick(() => {
+ 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
- })
- },
- }
-}
+ },
+ changeCheckBox(val) {
+ this.componentData.entity.viewSelf = val
+ this.$nextTick(() => {
+ this.refreshTable()
+ })
+ },
+ claimFun(row) {
+ console.log(row)
+ if (row) {
+ this.sampleUserForm = {
+ entrustCode: row.entrustCode,
+ insSampleId: row.id
+ }
+ this.claimVisible = true
+ }
+
+ },
+ confirmClaim() {
+ this.$axios.post(this.$api.insOrderPlan.claimInsOrderPlan, this.sampleUserForm, {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }).then(res => {
+ if (res.code === 200 && res.data) {
+ this.$message.success("璁ら鎴愬姛")
+ this.claimVisible = false
+ this.refreshTable()
+ }
+ }).catch(error => {
+ console.error(error)
+ })
+ },
+ refreshTable() {
+ this.$refs.insOrderPlan.selectList()
+ },
+ changeRowClass({
+ row,
+ rowIndex
+ }) {
+ let currentTime = getYearAndMonthAndDays()
+ if (row.sendTime && currentTime === row.sendTime) {
+ return 'highlight-warning-row-border'
+ } else if (row.sendTime && currentTime > row.sendTime) {
+ 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.childrenLaboratory = 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
+ }
+ })
+ this.$nextTick(() => {
+ this.componentData.entity.childrenLaboratory = this.tabList[0].value
+ })
+ })
+ }
+ }
+ }
</script>
--
Gitblit v1.9.3