业务办理-标签查询

This commit is contained in:
hongchao 2025-03-05 17:46:48 +08:00
parent 954f658ac3
commit be8e3fce68
2 changed files with 553 additions and 21 deletions

View File

@ -1,12 +1,12 @@
<template>
<div class="container">
<uni-card is-shadow is-full spacing="0px">
<uni-card is-shadow is-full spacing="0px" style="overflow: visible;"> <!-- 添加 overflow: visible -->
<div style="display: flex; align-items: center">
<div>编号</div>
<uni-easyinput v-model="code" maxlength="999" placeholder="请输入编号" />
<button
size="mini"
@click=""
@click="handQuery"
style="margin: 0 5px; background: #e89e42; color: #fff"
>
查询
@ -19,20 +19,444 @@
识别
</button>
</div>
<div>
<view>
<uni-data-select
v-model="maCodeTwo"
:localdata="optionList"
@change="changeTag"
placeholder="请选择相关联编号"
style="width:60%;margin-top:10px;z-index: 1000;"
></uni-data-select>
</view>
</div>
</uni-card>
<uni-card is-shadow is-full spacing="0px" style="margin-top: 10px">
<div>
<uni-card is-shadow is-full spacing="0px"
style="width: 100%; height: 240px;margin-top: 5px;border: 6px solid green; position: relative;"
v-if="isJj!=null && isJj==0">
<div style="height: 240px; padding: 0 0px;">
<div
class="title"
style="text-align: center; font-weight: 450; font-size: 16px; color: #4dad7e"
>
</div>
<div
class="info"
style="margin-top: 0px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex; /* 添加 flex 布局 */
align-items: center; /* 垂直居中对齐 */
"
>
<span style="color: #4dad7e">名称</span>
<span style="margin-left: 40px;">{{tagInfo.materialName}}</span>
</div>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex;
justify-content: end;
align-items: center;
"
>
<span style="color: #4dad7e">检验结论</span>
</div>
</div>
<div
class="info"
style="margin-top: 0px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex; /* 添加 flex 布局 */
align-items: center; /* 垂直居中对齐 */
"
>
<span style="color: #4dad7e">型号</span>
<span style="margin-left: 40px;">{{tagInfo.materialModel}}</span>
</div>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex;
justify-content: end;
align-items: center;
"
>
<span style="color: #ef3e3e;margin-right: 20px;font-size: 14px;">{{tagInfo.inspectStatus}}</span>
</div>
</div>
<div
class="info"
style="margin-top: 0px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 100%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex; /* 添加 flex 布局 */
align-items: center; /* 垂直居中对齐 */
"
>
<span style="color: #4dad7e">编号</span>
<span style="margin-left: 40px;">{{tagInfo.maCode}}</span>
</div>
</div>
<div class="img-cont">
<div
class="info"
style="margin-top: 0px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 100%;
flex-shrink: 0;
margin-bottom: 1px;
font-size: 14px;
display: flex; /* 添加 flex 布局 */
align-items: center; /* 垂直居中对齐 */
"
>
<span style="color: #4dad7e">本次检验日期</span>
<span style="margin-left: 40px;">{{tagInfo.thisCheckTime}}</span>
</div>
</div>
<div
class="info"
style="margin-top: 0px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 100%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex; /* 添加 flex 布局 */
align-items: center; /* 垂直居中对齐 */
"
>
<span style="color: #4dad7e">下次检验日期</span>
<span style="margin-left: 40px;">{{tagInfo.nextCheckTime}}</span>
</div>
</div>
<div
class="info"
style="margin-top: 0px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex; /* 添加 flex 布局 */
align-items: center; /* 垂直居中对齐 */
"
>
<span style="color: #4dad7e">检修员</span>
<span style="margin-left: 40px;">{{tagInfo.inspectMan}}</span>
</div>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 1px;
font-size: 16px;
display: flex;
justify-content: end;
align-items: center;
"
>
<span style="color: #4dad7e;font-size: 14px;">检验员</span>
<span style="margin-left: 20px;margin-right: 20px;font-size: 14px;">{{tagInfo.checkMan}}</span>
</div>
</div>
<div
class="info"
style="margin-top: 0px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 100%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex; /* 添加 flex 布局 */
align-items: center; /* 垂直居中对齐 */
"
>
<span style="color: #4dad7e">联系电话</span>
<span style="margin-left: 40px;">{{tagInfo.phone}}</span>
</div>
</div>
<div
class="info"
style="margin-top: 1px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 100%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex; /* 添加 flex 布局 */
align-items: center; /* 垂直居中对齐 */
"
>
<span style="color: #4dad7e">出库检验报告</span>
<span style="margin-left: 40px; text-decoration: underline; cursor: pointer;color: #4dad7e" @click="handleReportClick">
{{"检测报告"}}
</span>
</div>
</div>
<div >
<div>
<canvas
canvasId="canvas"
class="my-canvas"
style="position: absolute; top: 50%; left: 8%; transform: translate(0, -50%); z-index: 9999;width: 165px; height: 165px;"
></canvas>
</div>
</div>
</div>
</uni-card>
<uni-card is-shadow is-full spacing="0px"
style="width: 100%; height: 240px;margin-top: 1px;border: 6px solid #0055aa; position: relative;"
v-if="isJj!=null && isJj==1">
<div style="height: 240px; padding: 0 0px;">
<div
class="title"
style="text-align: center; font-weight: 450; font-size: 16px; "
>
安徽顺凯有限公司
</div>
<div
class="title"
style="text-align: center; font-weight: 450; font-size: 16px; "
>
合格证
</div>
<div
class="info"
style="margin-top: 0px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 100%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex; /* 添加 flex 布局 */
align-items: center; /* 垂直居中对齐 */
"
>
<span >试样名称</span>
<span style="margin-left: 40px;">{{"攀登自锁器"}}</span>
</div>
</div>
<div
class="info"
style="margin-top: 0px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 100%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex; /* 添加 flex 布局 */
align-items: center; /* 垂直居中对齐 */
"
>
<span >规格型号</span>
<span style="margin-left: 40px;">{{"1.5T"}}</span>
</div>
</div>
<div
class="info"
style="margin-top: 0px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 100%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex; /* 添加 flex 布局 */
align-items: center; /* 垂直居中对齐 */
"
>
<span >编号</span>
<span style="margin-left: 40px;">{{"W204-20648"}}</span>
</div>
</div>
<div
class="info"
style="margin-top: 0px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 100%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex; /* 添加 flex 布局 */
align-items: center; /* 垂直居中对齐 */
"
>
<span >本次检验日期</span>
<span style="margin-left: 40px;">{{"2024-8-02"}}</span>
</div>
</div>
<div
class="info"
style="margin-top: 0px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 100%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex; /* 添加 flex 布局 */
align-items: center; /* 垂直居中对齐 */
"
>
<span >下次检验日期</span>
<span style="margin-left: 40px;">{{"2025-7-02"}}</span>
</div>
</div>
<div
class="info"
style="margin-top: 0px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex; /* 添加 flex 布局 */
align-items: center; /* 垂直居中对齐 */
"
>
<span >试验人</span>
<span style="margin-left: 40px;">{{"张三"}}</span>
</div>
</div>
<div
class="info"
style="margin-top: 0px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 100%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex; /* 添加 flex 布局 */
align-items: center; /* 垂直居中对齐 */
"
>
<span >检验结果</span>
<span style="margin-left: 40px;">{{"合格"}}</span>
</div>
</div>
<div
class="info"
style="margin-top: 0px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 100%;
flex-shrink: 0;
margin-bottom: 0px;
font-size: 14px;
display: flex; /* 添加 flex 布局 */
align-items: center; /* 垂直居中对齐 */
"
>
<span >检测报告</span>
<span style="margin-left: 40px; text-decoration: underline; cursor: pointer;color: #0055aa;" @click="handleReportClick">
{{"检测报告"}}
</span>
</div>
</div>
<div >
<div>
<canvas
canvasId="canvasTwo"
style="position: absolute; top: 50%; left: 8%; transform: translate(0, -50%); z-index: 9999;width: 165px; height: 165px;"
></canvas>
</div>
</div>
</div>
</uni-card>
</div>
</template>
@ -40,18 +464,108 @@
<script setup lang="ts">
import { onLoad } from '@dcloudio/uni-app'
import { nextTick, ref } from 'vue'
import { getListTag,getSelectionList } from '@/services/stquery/stquery.js'
//
const code = ref<string>('')
//
const codeImg = ref<string>('https://web-assets.dcloud.net.cn/unidoc/zh/shuijiao.jpg')
//
const isJj = ref<Number>(0)
const maCodeTwo = ref<string>('')
const optionList = ref([])
const tagInfo = ref({})
onLoad(() => {
isJj.value = null
// nextTick(() => {
// //
// chapter('XXX', 'XXX')
// })
})
const handQuery = () => {
getSelectionList({'maCode':code.value}).then(response => {
optionList.value = response.data.map(option => {
return {
value:option.maCode,
text:option.maCode,
}
});
console.log("xxxxxxxxxxxxxxxxxxxxxx",optionList.value)
});
}
const changeTag =async () => {
await getListTag({'maCode':maCodeTwo.value}).then((response) => {
if(response.data &&response.data.length!=0){
tagInfo.value = response.data[0]
}
});
isJj.value = 0
nextTick(() => {
//
chapter('XXX专用章', 'XXX科技股份有限公司')
})
})
let canvas = null
if(isJj.value==null){
canvas =null
}else{
canvas = isJj.value === 0 ? 'canvas' : 'canvasTwo';
}
console.log("xxxxxxxxx",canvas)
if (canvas!=null && isJj.value==0) {
chapter('机具检验专用章', '安徽送边电工程有限公司机具(物流)分公司', canvas);
}
if (canvas!=null && isJj.value==1) {
chapter('检验专用章', '安徽顺凯检测有限公司', canvas);
}
});
}
// PDF
const handleReportClick = async () => {
try {
const pdfUrl = encodeURI("http://192.168.0.244:18583/statics/2025/03/05/清新互联智能事件格式_2021(1)_20250305153249A001.pdf");
console.log('请求的 PDF URL:', pdfUrl); // URL便
uni.downloadFile({
url: pdfUrl,
success: (res) => {
if (res.statusCode === 200) {
uni.saveFile({
tempFilePath: res.tempFilePath,
success: (saveRes) => {
uni.showToast({
title: '文件下载成功',
icon: 'success'
});
//
uni.openDocument({
filePath: saveRes.savedFilePath,
success: () => {
console.log('文件打开成功');
},
fail: (err) => {
console.error('文件打开失败', err);
}
});
},
fail: (err) => {
console.error('文件保存失败', err);
}
});
} else {
console.error('下载文件失败,状态码:', res.statusCode);
}
},
fail: (err) => {
console.error('下载文件失败', err);
}
});
} catch (error) {
console.error('获取 PDF 文件 URL 失败', error);
}
};
//
const handleRecognition = () => {
@ -60,8 +574,8 @@ const handleRecognition = () => {
}
//
const chapter = (text, companyName) => {
const ctx = uni.createCanvasContext('canvas')
const chapter = (text, companyName,canvasName) => {
const ctx = uni.createCanvasContext(canvasName)
//
let width = 82

View File

@ -9,6 +9,24 @@ export const getRetainedEquipmentListApi = (data) => {
})
}
//获取电子标签详情
export const getListTag = (data) => {
return http({
method: 'GET',
url: '/material/ma_machine/getElectronicLabel',
data,
})
}
// 获取电子标签下拉框
export const getSelectionList = (data) => {
return http({
method: 'GET',
url: '/material/ma_machine/getByMaCode',
data,
})
}