<template>
<div class="sec-container">
<van-popup
v-model:show="showDetailModal"
:style="{ width: showType === 'qcOrder'?'30%':'100%', height: '100%', overflow: 'auto' }"
position="right"
round
closeable
@close="handleDetailClose"
>
<van-form ref="addCommentsFormRef" @submit="handleSave">
<!-- 检验单信息 -->
<van-cell-group title="检验单信息" v-if="showType === 'qcOrder'">
<!-- <van-field-->
<!-- v-model="saveData.applyDate"-->
<!-- is-link-->
<!-- readonly-->
<!-- clearable-->
<!-- @click="handleDate"-->
<!-- placeholder="请选择提出时间"-->
<!-- />-->
<van-field
v-model="saveData.applyDate"
is-link
readonly
label="提出时间"
placeholder="点击选择日期"
@click="showDatePicker = true"
/>
<van-popup v-model:show="showDatePicker" round position="bottom">
<van-date-picker
v-model="saveData.applyDate"
@confirm="onConfirm"
@cancel="showDatePicker = false"
/>
</van-popup>
</van-cell-group>
<!-- 编辑/新增时的表单 -->
<van-cell-group title="检验单信息" v-if="showType === 'show' || showType === 'result'">
<van-field name="radio" label="检验状态" v-if="showType === 'result'">
<template #input>
<van-radio-group v-model="saveData.status" direction="horizontal">
<van-radio name="0">新建</van-radio>
<van-radio name="1">检验中</van-radio>
<van-radio name="2">合格</van-radio>
<van-radio name="-1">不合格</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field name="projectNo" label="项目">
<template #input>
{{saveData.projectNo}}
</template>
</van-field>
<van-field name="inspClass" label="检验大类" >
<template #input>
{{saveData.inspClassStr}}
</template>
</van-field>
<van-field name="inspType" label="检验类型" >
<template #input>
{{saveData.inspTypeName}}
</template>
</van-field>
<van-field name="orgNo" label="基地" >
<template #input>
{{saveData.orgName}}
</template>
</van-field>
<van-field name="workzone" label="作业区" >
<template #input>
{{saveData.workzoneName}}
</template>
</van-field>
<van-field name="inspLoc" label="检验地点" >
<template #input>
{{saveData.inspLoc}}
</template>
</van-field>
<van-field name="mainUserNo" label="负责人" >
<template #input>
{{saveData.mainUserName}}
</template>
</van-field>
<van-field name="tel" label="联系方式">
<template #input>
{{saveData.tel}}
</template>
</van-field>
</van-cell-group>
<!-- 管路信息 -->
<van-cell-group title="管路信息" v-if="showType != 'qcOrder'">
<!-- 简化显示 -->
<div class="search-btn" v-if="showType === 'result'">
<van-button type="primary" @click="changeStatus(1,'pipe')" style="margin-right:10px">合格</van-button>
<van-button type="primary" @click="changeStatus(-1,'pipe')" style="margin-right:10px">不合格 </van-button>
<van-button type="primary" @click="changeStatus(2,'pipe')" style="margin-right:10px">取消 </van-button>
</div>
<a-table
sticky
v-if="showType == 'show'"
:scroll="{ x: '100%' }"
:columns="pipeTable.columns"
:dataSource="pipeTable.dataSource"
bordered
size="middle"
:loading="loading"
:pagination="false"
rowKey="id"
ref="pipeTableRef"
>
</a-table>
<a-table
sticky
v-if="showType == 'result'"
:scroll="{ x: '100%' }"
:columns="pipeTable.resColumns"
:dataSource="pipeTable.dataSource"
bordered
size="middle"
:loading="loading"
:pagination="false"
rowKey="id"
ref="pipeTableRef"
:row-selection="{ selectedRowKeys: pipeTable.selectedRowKeys, onChange: onSelectChange }"
>
</a-table>
</van-cell-group>
<!-- 焊缝信息 -->
<van-cell-group title="焊缝信息" v-if="showType != 'qcOrder'">
<div class="search-btn" v-if="showType === 'result'">
<van-button type="primary" @click="changeStatus(1,'weld')" style="margin-right:10px">合格</van-button>
<van-button type="primary" @click="changeStatus(-1,'weld')" style="margin-right:10px">不合格 </van-button>
<van-button type="primary" @click="changeStatus(2,'weld')" style="margin-right:10px">取消 </van-button>
</div>
<a-table
sticky
v-if="showType == 'show'"
:scroll="{ x: '100%' }"
:columns="weldTable.columns"
:dataSource="weldTable.dataSource"
bordered
size="middle"
:loading="loading"
:pagination="false"
rowKey="id"
ref="weldTableRef"
>
</a-table>
<a-table
sticky
v-if="showType == 'result'"
:scroll="{ x: '100%' }"
:columns="weldTable.resColumns"
:dataSource="weldTable.dataSource"
bordered
size="middle"
:loading="loading"
:pagination="false"
rowKey="id"
ref="weldTableRef"
:row-selection="{ selectedRowKeys: weldTable.selectedRowKeys, onChange: onWeldSelectChange }"
>
</a-table>
</van-cell-group>
<!-- 提交按钮 -->
<div style="margin: 16px;">
<van-button round block type="default" @click="handleDetailClose">取消</van-button>
<van-button round block type="primary" @click = 'handleSave' native-type="submit" v-if=" showType === 'result' || showType === 'qcOrder'">提交</van-button>
</div>
</van-form>
</van-popup>
<div class="top-content">
<div class="project-content">
<div class=""></div>
</div>
<div class="btn-content">
<div class="btn-right" @click="openSearchDialog">
<SearchOutlined style="font-size: 20px; color: #004688" />
<p class="speNorm">搜索</p>
</div>
</div>
</div>
<div class="bot-content" @scroll="handleScroll">
<a-table
sticky
:scroll="{ x: '100%' }"
:columns="columns"
:dataSource="data"
bordered
size="middle"
:loading="loading"
:pagination="false"
rowKey="id"
>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<a-button type="link" @click="showData(record,'show')" v-resource="[{ url: '/service-piping/cp/insp/order', method: 'POST' }]">查看</a-button>
<a-button type="link" @click="showData(record,'result')" v-resource="[{ url: '/service-piping/cp/insp/order', method: 'POST' }]">结果维护</a-button>
<a-button type="link" @click="showData(record,'qcOrder')" v-if="record.applyFlag!='Y'"
>申请检验</a-button>
</template>
</template>
</a-table>
</div>
<van-popup
v-model:show="searchOpen"
position="right"
:style="{ width: popupWidth, height: '100%', overflow: 'hidden' }"
round
closeable
@close="handleDetailClose"
>
<div class="search-content">
<div class="search-top">
<div class="search-project-back" v-if="projectType" @click="handleBack">
<LeftOutlined style="font-size: 15px; color: #004688; margin-top: 3px" />返回
</div>
<div class="search-titles">
<span>{{ !projectType ? '搜索' : '搜索项目' }}</span>
</div>
</div>
<div class="search-state">
<van-cell-group inset>
<van-field
v-model="searchState.projectNo"
clearable
label="项目"
readonly
@click="handleProject"
/>
<van-field
v-model="searchState.orderNo"
clearable
label="检验单号"
/>
<van-field
v-model="searchState.inspClass"
clearable
@click="handleInspClass"
label="检验大类"
is-link
readonly
/>
</van-cell-group>
<van-popup v-model:show="showPicker" round position="bottom">
<van-picker
:columns="inspColumns"
@cancel="showPicker = false"
@confirm="onInspClassConfirm"
/>
</van-popup>
<project-panel ref="projectpanelRef" @get="getProj"></project-panel>
</div>
<div class="search-btn">
<van-button type="warning" color="#9A9A9A" @click="onReset">重置</van-button>
<van-button type="primary" @click="onSearch">查询 </van-button>
</div>
</div>
</van-popup>
</div>
</template>
<script setup>
import { ref, onMounted, onUnmounted, onActivated, computed, watch, createVNode, reactive } from 'vue'
import { SearchOutlined, LeftOutlined, ExclamationCircleOutlined } from '@ant-design/icons-vue'
import * as serve from '@/api/cp/pipeInspection'
import ProjectPanel from '@/components/ProjectPanel.vue'
import dayjs from 'dayjs'
import { Buffer } from 'buffer'
import { useRouter } from 'vue-router'
import localforage from 'localforage'
import { useHomePage } from '@/stores/homePage'
import { Modal } from 'ant-design-vue'
import {getBuildBases} from "@/api/common/index.js";
import {showNotify} from "vant";
import { cloneDeep } from 'lodash-es'
const showDatePicker = ref(false);
const onSelectChange = (keys, rows) => {
pipeTable.selectedRowKeys = keys
pipeTable.selectedRows = rows
}
const onWeldSelectChange = (keys, rows) => {
weldTable.selectedRowKeys = keys
weldTable.selectedRows = rows
}
const workZoneNos = ref([])
const statusOptions = ref([
{ value: -1, text: "不合格" },
{ value: 0, text: "新建" },
{ value: 1, text: "合格" },
{ value: 2, text: "取消" }
])
// const inspClassOptions = [
// { text: '焊前检验', value: 'HQ' },
// { text: '焊后检验', value: 'HH' },
// { text: '压力检验', value: 'PT' },
// { text: '完工检验', value: 'HP' },
// { text: '其他检验', value: 'JY' },
// ]
const currProjectNo =ref(null)
const selectInsp = ref([])
const weldTable = reactive({
toolbar: {
// buttons: [{ code: "addCar", name: "添加物料" }]
},
resToolbar: {
buttons: [{ code: "qualifiedWeld", name: "合格" },{ code: "unqualifiedWeld", name: "不合格" },{ code: "cancelWeld", name: "取消" }]
},
selectedRowKeys: [],
selectedRows: [],
columns: [
{
title: "管号",
dataIndex: "pipeNo",
width: 120,
},
{
title: "焊缝号",
dataIndex: "weldNo",
width: 150,
},
{
title: "焊缝长度",
dataIndex: "length",
width: 150,
},
{
title: "焊接日期",
type: "date",
dataIndex: "weldDate",
width: 150,
},
// {
// title: "操作",
// key: "action",
// align: "center",
// width: 90,
// sorter: false,
// scopedSlots: { customRender: "action" },
// fixed: "right",
// formInvisible: true
// }
],
resColumns: [
{
title: "项目",
dataIndex: "projectNo",
width: 90,
type: "project",
},
{
title: "管号",
dataIndex: "pipeNo",
width: 120,
},
{
title: "版本号",
dataIndex: "pipeVersion",
width: 120,
},
{
title: "焊缝号",
dataIndex: "weldNo",
width: 150,
},
{
title: "检验结果",
dataIndex: "status",
type: "select",
width: 80,
customRender: function (text) {
if (text.record.status) {
return stateColumns.value.find(
(item) => item.value == text.record.status
).text
} else {
return '新建'
}
}
},
{
title: "小票删除",
dataIndex: "pipeDelFlag",
width: 80,
},
{
title: "小票暂停",
dataIndex: "pipePauseFlag",
width: 80,
},
{
title: "小票最新版",
dataIndex: "pipeTopFlag",
width: 80,
},
{
title: "焊缝删除",
dataIndex: "delFlag",
width: 80,
},
{
title: "操作",
key: "action",
align: "center",
width: 200,
sorter: false,
scopedSlots: { customRender: "action" },
fixed: "right",
formInvisible: true
}
],
dataSource: []
})
const showType = ref('')
window.Buffer = Buffer
const router = useRouter()
const homePage = useHomePage()
const saveData = ref({})
const stateColumns = ref(
[{ value: 0, text: "新建" },
{ value: -1, text: "不合格" },
{ value: 1, text: "检验中" },
{ value: 2, text: "合格" },]
)
const showDetailModal = ref(false)
const inspColumns = ref([
{ value: 'HQ', text: "焊前检验" },
{ value: 'HH', text: "焊后检验" },
{ value: 'PT', text: "压力检验" },
{ value: 'HP', text: "完工检验" },
{ value: 'JY', text: "其他检验" },
])
const showPicker = ref(false)
const buildBaseList = ref([])
const data = ref([])
const loading = ref(false)
const dataCount = ref(0)
const searchState = ref({
size: 20,
page: 0,
projectNo: undefined,
inspClass: undefined,
orderNo: undefined,
})
const searchOpen = ref(false)
const projectpanelRef = ref(null)
const projectType = ref(false)
const popupWidth = ref('30%')
const isLast = ref(false)
const statusList = ref([
{
text: '新建',
value: 0
},
{
text: '进行中',
value: 1
},
{
text: '已完成',
value: 2
}
])
const pipeTable = reactive({
toolbar: {
buttons: [{ code: "addPipe", name: "添加物料" }]
},
resToolbar: {
buttons: [{ code: "qualifiedPipe", name: "合格" },{ code: "unqualifiedPipe", name: "不合格" },{ code: "cancelPipe", name: "取消" }]
},
selectedRowKeys: [],
selectedRows: [],
columns: [
{
title: "图号",
dataIndex: "drawNo",
width: 120,
},
{
title: "作业对象",
dataIndex: "block",
width: 150,
},
{
title: "托盘号",
dataIndex: "instPalletNo",
width: 150,
},
{
title: "管号",
dataIndex: "pipeNo",
width: 120,
},
{
title: "页号",
dataIndex: "pageNo",
width: 80,
},
{
title: "暂停",
dataIndex: "isPause",
width: 80,
},
{
title: "删除",
dataIndex: "isDelete",
width: 80,
},
{
title: "最新版",
dataIndex: "isTopVersion",
width: 80,
},
{
title: "装配承包商",
dataIndex: "assyCoopName",
width: 150,
},
{
title: "焊接承包商",
dataIndex: "weldingCoopName",
width: 150,
},
{
title: "焊前检验单",
dataIndex: "weldingPreOrderNo",
width: 150,
},
{
title: "焊后检验单",
dataIndex: "weldingPostOrderNo",
width: 150,
},
{
title: "压力检验单",
dataIndex: "ptOrderNo",
width: 150,
},
{
title: "完工/预制放行检验单",
dataIndex: "preFinishOrderNo",
width: 150,
},
{
title: "PMI检验单",
dataIndex: "pmiOrderNo",
width: 150,
},
{
title: "焊后热处理检验单",
dataIndex: "pwhtOrderNo",
width: 150,
},
{
title: "硬度检验单",
dataIndex: "hardnessOrderNo",
width: 150,
},
{
title: "铁素体检验单",
dataIndex: "ferriteOrderNo",
width: 150,
},
// {
// title: "操作",
// key: "action",
// align: "center",
// sorter: false,
// scopedSlots: { customRender: "action" },
// fixed: "right",
// formInvisible: true
// }
],
resColumns: [
{
title: "项目",
dataIndex: "projectNo",
width: 90,
type: "project",
},
{
title: "管号",
dataIndex: "pipeNo",
width: 120,
},
{
title: "版本号",
dataIndex: "pipeVersion",
width: 80,
},
{
title: "删除",
dataIndex: "isDelete",
width: 80,
},
{
title: "暂停",
dataIndex: "isPause",
width: 80,
},
{
title: "最新版",
dataIndex: "isTopVersion",
width: 80,
},
{
title: "检验结果",
dataIndex: "status",
type: "select",
width: 80,
customRender: function (text) {
if (text.record.status) {
return statusOptions.value.find(
(item) => item.value == text.record.status
).text
} else {
return '新建'
}
}
},
{
title: "操作",
key: "action",
align: "center",
width: 200,
sorter: false,
scopedSlots: { customRender: "action" },
fixed: "right",
formInvisible: true
}
],
dataSource: []
})
const columns = computed(() => {
return [
{
title: '项目号',
dataIndex: 'projectNo',
width: 120
},
{
title: "基地",
dataIndex: "orgNo",
condition: true,
width: 90,
customRender: function (text) {
if (text.record.orgNo)
return buildBaseList.value.find(
(item) => item.value == text.record.orgNo
).text
},
},
{
title: "检验单号",
dataIndex: "orderNo",
condition: true,
width: 150
},
{
dataIndex: "workzoneName",
title: "作业区",
width: 150,
},
{
title: "QC单号",
dataIndex: "qcOrderNo",
condition: true,
width: 150
},
{
title: "申请检验时间",
dataIndex: "createDate",
width: 150,
type: "datetime",
align: "center",
customRender: function (text) {
if (text.record.createDate)
return dayjs(text.record.createDate).format('YYYY-MM-DD HH:mm:ss')
},
},
{
title: "检验大类",
dataIndex: "inspClass",
type: "select",
width: 100,
condition: true,
customRender: function (text) {
if (text.record.inspClass)
return inspColumns.value.find(
(item) => item.value == text.record.inspClass
).text
},
},
{
title: "检验类型",
dataIndex: "inspTypeName",
width: 150,
},
{
title: "创建时间",
dataIndex: "createDate",
width: 150,
type: "datetime",
customRender: function (text) {
if (text.record.createDate)
return dayjs(text.record.createDate).format('YYYY-MM-DD HH:mm:ss')
},
},
{
title: "创建人",
dataIndex: "createUserId",
width: 120,
type: "employeeDescription",
options: {
fieldNames: {
label: "createUserName",
value: "createUserId"
}
}
},
{
title: "管数量",
dataIndex: "pipeNum",
width: 80
},
{
title: "状态",
dataIndex: "status",
type: "select",
width: 80,
condition: true,
customRender: function (text) {
if (text.record.status) {
return statusOptions.value.find(
(item) => item.value == text.record.status
).text
} else {
return '新建'
}
}
},
{
title: '操作',
dataIndex: 'action',
width: 140,
key: 'action'
}
]
})
const loadData = (type) => {
loading.value = true
serve.getOrderList(searchState.value).then(async (res) => {
for (let item of res.content) {
item.targetStorageDate = item.targetStorageDate
? dayjs(item.targetStorageDate).format('YYYY-MM-DD')
: ''
item.isDownload = false
let value = await localforage.getItem(item.id.toString())
if (value instanceof Blob && value.size > 0 && value.type === 'application/pdf') {
item.isDownload = true
}
}
if (type == 'scroll') {
data.value.push(...res.content)
} else {
data.value = res.content
}
dataCount.value = res.totalElements || 0
isLast.value = res.last
loading.value = false
})
}
const handleScroll = (e) => {
const element = e.target
if (element.scrollTop + element.clientHeight >= element.scrollHeight) {
if (!isLast.value) {
searchState.value.page++
loadData('scroll')
}
}
}
const openSearchDialog = () => {
searchOpen.value = true
}
const handleProject = () => {
projectType.value = true
projectpanelRef.value.open = true
projectpanelRef.value.init()
}
const handleBack = () => {
projectType.value = false
projectpanelRef.value.open = false
}
const handleClose = () => {
projectType.value = false
projectpanelRef.value.open = false
}
const handleDetailClose = () => {
showDetailModal.value = false
}
const handleResize = () => {
if (window.innerWidth < 1000) {
popupWidth.value = '60%'
} else {
popupWidth.value = '30%'
}
}
const getProj = (val) => {
searchState.value.projectNo = val.projId
searchState.value.projNo = val.projNo
handleClose()
}
const onSearch = () => {
searchState.value.page = 0
loadData()
searchOpen.value = false
}
const onReset = () => {
searchState.value.page = 0
searchState.value.projectNo = undefined
searchState.value.projNo = undefined
searchState.value.inspClass = undefined
searchState.value.orderNo = undefined
}
const handleBeforeUnload = () => {
if (!homePage.isOnline) {
Modal.confirm({
title: '浏览器当前处于离线状态,是否继续?',
icon: createVNode(ExclamationCircleOutlined),
content: createVNode(
'div',
{
style: 'color:red;'
},
'一旦刷新,将无法继续使用'
),
onOk() {
console.log('OK')
},
onCancel() {
console.log('Cancel')
}
})
}
}
watch(
() => homePage.isOnline,
async (newVal) => {
if (!newVal) {
try {
const listData = await localforage.getItem('downloadList')
if (listData) {
const list = JSON.parse(listData)
list.forEach((item) => {
item.isDownload = true
})
data.value = list
}
} catch (error) {
console.error('Error parsing list data:', error)
}
} else {
onReset()
loadData()
}
}
)
const onInspClassConfirm = ({ selectedOptions }) => {
showPicker.value = false
searchState.value.inspClass = selectedOptions[0].value
}
const handleInspClass = () => {
showPicker.value = true
}
onMounted(() => {
getBuildBase()
serve.getWorkZone({majors:'管路'}).then((res) => {
workZoneNos.value = res.status == 200 ? res.data.map((item) => {
return {
label: item.name,
value: item.code,
}
}) : [];
})
if (homePage.isOnline) {
loadData()
}
handleResize()
window.addEventListener('resize', handleResize)
window.addEventListener('beforeunload', handleBeforeUnload)
})
onUnmounted(() => {
window.removeEventListener('resize', handleResize)
window.removeEventListener('beforeunload', handleBeforeUnload)
})
onActivated(async () => {
if (!homePage.isOnline) {
try {
const listData = await localforage.getItem('downloadList')
if (listData) {
const list = JSON.parse(listData)
list.forEach((item) => {
item.isDownload = true
})
data.value = list
}
} catch (error) {
console.error('Error parsing list data:', error)
}
}
})
const getBuildBase = () => {
getBuildBases().then((res) => {
buildBaseList.value = res.map((item) => ({
value: item.orgNo,
text: item.name
}))
})
}
const showData = (record,showTypeStr) => {
serve.getOrderList({id:record.id}).then((res) => {
console.log('res.data',res)
console.log('res.data',res.data)
console.log('res.data.content',res.content)
saveData.value = res.content[0]
saveData.value.mainUserNo = { label: saveData.value.mainUserName, value: saveData.value.mainUserNo }
saveData.value.status = saveData.value.status+''
pipeTable.dataSource = res.content[0].pipeList
console.log('pipeTable.dataSource',pipeTable.dataSource)
weldTable.dataSource = res.content[0].weldList
currProjectNo.value = res.content[0].projectNo
showDetailModal.value = true
showType.value = showTypeStr
saveData.value.inspClassStr = inspColumns.value.find(
(item) => item.value == saveData.value.inspClass
).text
saveData.value.orgName = buildBaseList.value.find(
(item) => item.value == saveData.value.orgNo
).text
serve.getInsp({ projName: res.content[0].projectNo, professionNo: "CP" }).then((res) => {
selectInsp.value = res.map((item) => {
return {
label: item.MSVALUE+"",
value: item.MSKEY+"",
}
})
})
})
}
const onConfirm = ({ selectedValues }) => {
saveData.applyDate = selectedValues.join('-');
console.log('saveData.applyDate',saveData.applyDate)
console.log('selectedValues',selectedValues)
showDatePicker.value = false;
};
const changeStatus = (stateNum,type)=>{
console.log('pipeTable',pipeTable.selectedRows)
console.log('weldTable',weldTable.selectedRows)
if(type === 'pipe' ){
if(pipeTable.selectedRows.length === 0 ){
showNotify({ type: 'danger', message: '请选择一条数据' })
return
}
pipeTable.dataSource = pipeTable.dataSource.map(item => {
const selectedItem = pipeTable.selectedRows.find(row => row.id === item.id);
return selectedItem ? { ...item, status: stateNum } : item;
});
}
if(type === 'weld'){
if(weldTable.selectedRows.length === 0 ){
showNotify({ type: 'danger', message: '请选择一条数据' })
return
}
weldTable.dataSource = weldTable.dataSource.map(item => {
const selectedItem = weldTable.selectedRows.find(row => row.id === item.id);
return selectedItem ? { ...item, status: stateNum } : item;
});
}
console.log('pipeTable.dataSource',pipeTable.dataSource)
console.log('weldTable.dataSource',weldTable.dataSource)
}
const handleSave = () => {
let param = cloneDeep(saveData.value)
if(showType.value == 'result'){
param.editType = 1
param.id = saveData.value.id
} else {
param.getEditType = 0
if('edit' == showType.value){
param.id = saveData.value.id
}
}
if (param.mainUserNo && param.mainUserNo.value) {
param.mainUserName = param.mainUserNo.label
param.mainUserNo = param.mainUserNo.value
} else {
param.mainUserNo = ''
}
param.pipeList = pipeTable.dataSource
param.weldList = weldTable.dataSource
serve.saveOrderList(param).then(() => {
showNotify({
type: 'success',
message: '操作成功'
})
// if(type.value != 'result'){
showDetailModal.value = false
// }
})
}
</script>
<style lang="scss" scoped>
:deep .urgentFlag-active {
background: #ffb656;
}
:deep .abnormalFlag-active {
background: #fb7171;
}
:deep .anticon-search {
line-height: 0 !important;
}
</style>
<style lang="scss" scoped>
@import '@/styles/common.scss';
.search-content {
width: 100%;
overflow: hidden;
// height: 100%;
.search-top {
width: 100%;
height: 50px;
margin-top: 20px;
display: flex;
justify-content: center;
align-content: center;
.search-project-back {
font-size: 14px;
display: flex;
align-content: center;
position: absolute;
left: 10px;
color: #004688;
}
.search-titles {
height: 100%;
display: flex;
justify-content: center;
align-content: center;
color: #004688;
span {
font-size: 15px;
margin-left: 5px;
}
}
}
.search-state {
width: 100%;
height: calc(100% - 45px - 10px);
position: absolute;
bottom: 0;
overflow: hidden;
overflow-y: scroll;
}
}
.action-buttons {
display: flex;
align-items: center;
justify-content: space-around;
}
</style>
点击申请检验后点击提出时间没有弹出日期选择框