14 Commits

Author SHA1 Message Date
caozehui
ad02fac4ff 比对模式根据配置文件动态展示原始数据、历史趋势图 2026-02-02 10:14:41 +08:00
caozehui
e4de4fe43c 微调 2026-01-27 11:06:31 +08:00
caozehui
bc7d6b24b7 微调 2026-01-23 11:27:42 +08:00
caozehui
3de7461960 微调 2026-01-23 11:24:47 +08:00
caozehui
bff94f4521 微调 2026-01-23 11:20:03 +08:00
caozehui
e63a3dfa92 数据库变更 2026-01-22 15:42:02 +08:00
caozehui
7efb738d54 微调 2026-01-22 15:25:30 +08:00
caozehui
84763eb414 微调 2026-01-22 11:26:42 +08:00
caozehui
820a6bb233 系数调整 2026-01-21 13:59:57 +08:00
caozehui
31e44cfc69 比对系数下发全局配置 2026-01-19 14:22:24 +08:00
caozehui
fb9460e307 Merge remote-tracking branch 'origin/master' 2026-01-16 10:46:11 +08:00
caozehui
99a8c97b17 比对系数下发全局配置 2026-01-16 10:46:00 +08:00
caozehui
c30569f5e1 比对系数下发全局配置 2026-01-16 10:44:41 +08:00
caozehui
cdc19e1db9 更新后端jar包 2026-01-06 10:29:29 +08:00
72 changed files with 903 additions and 802 deletions

View File

@@ -115,3 +115,4 @@ activate:
private-key: "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcUyYhVqczGxblL+o/xZzF/8nf+LjrfUE/dS1aRHM7uMDD0cgCArhjtfneFePrMxt+Z7W8yNBzSarub8qsfhaVNikV7Es7oaeTygfjQXTi2n4AFkir3fM07J08RpWhl5M8f8uWTCuvFUYAw00gq55typqmnbkmJa2VIUy/iQf+cMCP7abz4/jNhUzUR3qA7TV4oMRgTdIEDUp63YF8dOC+JH8XxYrCVeHXV6fLCwmesdMzl0lB2VTEKMfLbXhOmF5g7P9y/16VCcN8UBuZlbyYfn+GAxJOSbeHi5HshOKfoSuD7Jz+3WQZpNavOWjIFExKIU38/CvnJCOP7XBCqpSTAgMBAAECggEAYeWokWRE3TpvwiOZnUpR/aVMdVi75a3ROL5XIpqPV61B+t/bU3cEpl0GF9C5pUeiRi0IoStZb3mI9D1KPW/REKyUWkhabQO1gFYbTnRlkNOn6MILzKX4cwJjDaZeeo4EBPU7N+qHyOOXrU6hdH5FfxhMdV983ajm5eeuupxER1C2kAcIklTeVpTX6EKOgZb5LBp5ssOVm2P42pOauvcRozRcvZmqnErXmukv0H4l3EVNt4rHpTn9riHUC63e8JfiYzVaF6zuNUxv6nHEft0/SRMw11XSTnNfDzcKqgjz6ksFBS/6eQQYKESk+ONC53HUuYHFAknkwsPupDCT2W8FIQKBgQDLHT/xCU3nxGr4vFKBDNaO2D5oK20ECbBO4oDvLWWmQG7f+6TsMy8PgVdMnoL4RfqGlwFAKEpS6KVFHnBVqnNEhcdy9uCI7x7Xx8UnyUtxj1EDTm76uta9Ki9OrlqB6tImDM9+Ya3vGktW37ht4WOx2OsJRhG1dbf6RLwFlH7DWwKBgQDFBxvi5I1BR6hg6Tj7xd2SqOT2Y+BED3xuSYENhWbmMhLJDResaB7mjztbxlYaY2mOE0holWm2uDmVFFhMh4jYXik4hYH8nmDzq9mDpZCZ9pyjYqnAP8THoAa8EbgrUWB8A6BPH4iL3KbMnBfBKY0pIr2xrvnjQjNBAgta7KDRKQKBgCe6oe4wxrdF2TKsC2tIqpMoQxS3Icy/ZGgZr+SYuaBKTCWtoDW/UT40K3JGMxIDBhzbXphBCUCsVt9tM8Xd4EwP6tJW7dZ7B0pnve2pVwNwaAVAiz6p2yUHIle+jN+Koe5lZRSwYIg7WW81tWpwwsJfzqFyvjYDP6hJV4mz4ROvAoGAaRcdnKvjXApomShMqJ4lTPChD3q+SA8qg3jZSOj6tZXHx00gb2kp8jg7pPvpOTIFPy6x1Ha9aCRjMk0ju84fA6lVuzwa1S907wOehUVuF3Eeo1cgy9Y3k3KbpPyeixxgpkUY4JslLdSHc2NemD0dee951qhJyRmqVOZOQDUuoeECgYEAqBw2cAFk3vM97WY06TSldGA8ajVHx3BYRjj+zl62NTQthy8fw3tqxb3c5e8toOmZWKjZvDhg2TRLhsDDQWEYg3LZG87REqVIjgEPcpjNLidjygGX8n3JF2o0O5I/EMvl0s/+LVQONfduOBvhwDqr8QNisbLsyneiAq7umewMolo=" private-key: "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcUyYhVqczGxblL+o/xZzF/8nf+LjrfUE/dS1aRHM7uMDD0cgCArhjtfneFePrMxt+Z7W8yNBzSarub8qsfhaVNikV7Es7oaeTygfjQXTi2n4AFkir3fM07J08RpWhl5M8f8uWTCuvFUYAw00gq55typqmnbkmJa2VIUy/iQf+cMCP7abz4/jNhUzUR3qA7TV4oMRgTdIEDUp63YF8dOC+JH8XxYrCVeHXV6fLCwmesdMzl0lB2VTEKMfLbXhOmF5g7P9y/16VCcN8UBuZlbyYfn+GAxJOSbeHi5HshOKfoSuD7Jz+3WQZpNavOWjIFExKIU38/CvnJCOP7XBCqpSTAgMBAAECggEAYeWokWRE3TpvwiOZnUpR/aVMdVi75a3ROL5XIpqPV61B+t/bU3cEpl0GF9C5pUeiRi0IoStZb3mI9D1KPW/REKyUWkhabQO1gFYbTnRlkNOn6MILzKX4cwJjDaZeeo4EBPU7N+qHyOOXrU6hdH5FfxhMdV983ajm5eeuupxER1C2kAcIklTeVpTX6EKOgZb5LBp5ssOVm2P42pOauvcRozRcvZmqnErXmukv0H4l3EVNt4rHpTn9riHUC63e8JfiYzVaF6zuNUxv6nHEft0/SRMw11XSTnNfDzcKqgjz6ksFBS/6eQQYKESk+ONC53HUuYHFAknkwsPupDCT2W8FIQKBgQDLHT/xCU3nxGr4vFKBDNaO2D5oK20ECbBO4oDvLWWmQG7f+6TsMy8PgVdMnoL4RfqGlwFAKEpS6KVFHnBVqnNEhcdy9uCI7x7Xx8UnyUtxj1EDTm76uta9Ki9OrlqB6tImDM9+Ya3vGktW37ht4WOx2OsJRhG1dbf6RLwFlH7DWwKBgQDFBxvi5I1BR6hg6Tj7xd2SqOT2Y+BED3xuSYENhWbmMhLJDResaB7mjztbxlYaY2mOE0holWm2uDmVFFhMh4jYXik4hYH8nmDzq9mDpZCZ9pyjYqnAP8THoAa8EbgrUWB8A6BPH4iL3KbMnBfBKY0pIr2xrvnjQjNBAgta7KDRKQKBgCe6oe4wxrdF2TKsC2tIqpMoQxS3Icy/ZGgZr+SYuaBKTCWtoDW/UT40K3JGMxIDBhzbXphBCUCsVt9tM8Xd4EwP6tJW7dZ7B0pnve2pVwNwaAVAiz6p2yUHIle+jN+Koe5lZRSwYIg7WW81tWpwwsJfzqFyvjYDP6hJV4mz4ROvAoGAaRcdnKvjXApomShMqJ4lTPChD3q+SA8qg3jZSOj6tZXHx00gb2kp8jg7pPvpOTIFPy6x1Ha9aCRjMk0ju84fA6lVuzwa1S907wOehUVuF3Eeo1cgy9Y3k3KbpPyeixxgpkUY4JslLdSHc2NemD0dee951qhJyRmqVOZOQDUuoeECgYEAqBw2cAFk3vM97WY06TSldGA8ajVHx3BYRjj+zl62NTQthy8fw3tqxb3c5e8toOmZWKjZvDhg2TRLhsDDQWEYg3LZG87REqVIjgEPcpjNLidjygGX8n3JF2o0O5I/EMvl0s/+LVQONfduOBvhwDqr8QNisbLsyneiAq7umewMolo="
public-key: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnFMmIVanMxsW5S/qP8Wcxf/J3/i4631BP3UtWkRzO7jAw9HIAgK4Y7X53hXj6zMbfme1vMjQc0mq7m/KrH4WlTYpFexLO6Gnk8oH40F04tp+ABZIq93zNOydPEaVoZeTPH/LlkwrrxVGAMNNIKuebcqapp25JiWtlSFMv4kH/nDAj+2m8+P4zYVM1Ed6gO01eKDEYE3SBA1Ket2BfHTgviR/F8WKwlXh11enywsJnrHTM5dJQdlUxCjHy214TpheYOz/cv9elQnDfFAbmZW8mH5/hgMSTkm3h4uR7ITin6Erg+yc/t1kGaTWrzloyBRMSiFN/Pwr5yQjj+1wQqqUkwIDAQAB" public-key: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnFMmIVanMxsW5S/qP8Wcxf/J3/i4631BP3UtWkRzO7jAw9HIAgK4Y7X53hXj6zMbfme1vMjQc0mq7m/KrH4WlTYpFexLO6Gnk8oH40F04tp+ABZIq93zNOydPEaVoZeTPH/LlkwrrxVGAMNNIKuebcqapp25JiWtlSFMv4kH/nDAj+2m8+P4zYVM1Ed6gO01eKDEYE3SBA1Ket2BfHTgviR/F8WKwlXh11enywsJnrHTM5dJQdlUxCjHy214TpheYOz/cv9elQnDfFAbmZW8mH5/hgMSTkm3h4uR7ITin6Erg+yc/t1kGaTWrzloyBRMSiFN/Pwr5yQjj+1wQqqUkwIDAQAB"

View File

@@ -1 +1 @@
34820 74476

Binary file not shown.

View File

@@ -6,3 +6,4 @@
.\binlog.000028 .\binlog.000028
.\binlog.000029 .\binlog.000029
.\binlog.000030 .\binlog.000030
.\binlog.000031

View File

@@ -19,9 +19,9 @@ VITE_API_URL=/api
# 开发环境跨域代理,支持配置多个 # 开发环境跨域代理,支持配置多个
#VITE_PROXY=[["/api","http://127.0.0.1:18092/"]] VITE_PROXY=[["/api","http://127.0.0.1:18092/"]]
#VITE_PROXY=[["/api","http://192.168.1.124:18092/"]] #VITE_PROXY=[["/api","http://192.168.1.124:18092/"]]
VITE_PROXY=[["/api","http://192.168.2.125:18092/"]] #VITE_PROXY=[["/api","http://192.168.2.125:18092/"]]
# VITE_PROXY=[["/api","http://192.168.1.138:8080/"]]张文 # VITE_PROXY=[["/api","http://192.168.1.138:8080/"]]张文
# 开启激活验证 # 开启激活验证
VITE_ACTIVATE_OPEN=false VITE_ACTIVATE_OPEN=false

View File

@@ -23,6 +23,6 @@ VITE_PWA=true
# 线上环境接口地址 # 线上环境接口地址
#VITE_API_URL="/api" # 打包时用 #VITE_API_URL="/api" # 打包时用
VITE_API_URL="http://127.0.0.1:18093/" VITE_API_URL="http://127.0.0.1:18092/"
# 开启激活验证 # 开启激活验证
VITE_ACTIVATE_OPEN=true VITE_ACTIVATE_OPEN=false

View File

@@ -14,7 +14,8 @@ export const getScriptList = (params: {
devId:string, devId:string,
chnNum:number, chnNum:number,
num:number, num:number,
planId:string planId:string,
code:string
}) => { }) => {
return http.post('/result/getCheckItem', params, {loading: false}) return http.post('/result/getCheckItem', params, {loading: false})
} }

View File

@@ -35,9 +35,25 @@ export namespace StandardDevice {
updateBy?: string | null; //更新用户 updateBy?: string | null; //更新用户
updateTime?: string | null; //更新时间 updateTime?: string | null; //更新时间
disabled?: boolean; disabled?: boolean;
gainList?:Gain[]
} }
interface Gain{
stdDevMonitorId:string;
uaGain:number;
ubGain:number;
ucGain:number;
u0Gain:number;
iaGain:number;
ibGain:number;
icGain:number;
i0Gain:number;
uabGain:number;
ubcGain:number;
ucaGain:number;
}
/** /**
* 标准设备表格查询分页返回的对象; * 标准设备表格查询分页返回的对象;
*/ */

View File

@@ -14,6 +14,7 @@ export namespace Base {
createTime?: string| null; //创建时间 createTime?: string| null; //创建时间
updateBy?: string| null; //更新用户 updateBy?: string| null; //更新用户
updateTime?: string| null; //更新时间 updateTime?: string| null; //更新时间
coefficient:number //比对监测后,当电压、电流不符合时,是否对标准设备进行系数校准
} }
} }

View File

@@ -57,3 +57,14 @@ export const getPublicKey = (username: string) => {
export const getAutoGenerate = () => { export const getAutoGenerate = () => {
return http.get('/sysTestConfig/getAutoGenerate', {}, {loading: false}) return http.get('/sysTestConfig/getAutoGenerate', {}, {loading: false})
} }
/**
* 获取比对模式下是否能够进行系数校准
*/
export const getCanCoefficient=()=>{
return http.get('/prepare/canCoefficient', {}, {loading: false})
}
export const startCoefficient=()=>{
return http.get('/prepare/startCoefficient', {}, {loading: false})
}

View File

@@ -190,7 +190,7 @@ export default class SocketService {
* WebSocket连接配置 * WebSocket连接配置
*/ */
private config: SocketConfig = { private config: SocketConfig = {
url: 'ws://127.0.0.1:7777/hello', url: 'ws://127.0.0.1:7778/hello',
//url: 'ws://192.168.1.124:7777/hello', //url: 'ws://192.168.1.124:7777/hello',
heartbeatInterval: 9000, // 9秒心跳间隔 heartbeatInterval: 9000, // 9秒心跳间隔
reconnectDelay: 5000, // 5秒重连延迟 reconnectDelay: 5000, // 5秒重连延迟

View File

@@ -165,7 +165,7 @@
:currentScriptTypeName="currentScriptTypeName" :currentScriptTypeName="currentScriptTypeName"
/> />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="原始数据" name="rawDataTab"> <el-tab-pane label="原始数据" name="rawDataTab" v-if="!isBusiness">
<CompareDataCheckRawDataTable <CompareDataCheckRawDataTable
v-if="activeTab === 'rawDataTab'" v-if="activeTab === 'rawDataTab'"
:tableData="rawTableData.length == 0 ? [] : currentRawTableData" :tableData="rawTableData.length == 0 ? [] : currentRawTableData"
@@ -173,7 +173,7 @@
:currentScriptTypeName="currentScriptTypeName" :currentScriptTypeName="currentScriptTypeName"
/> />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="历史趋势" name="chartTab" v-if="!isWaveData"> <el-tab-pane label="历史趋势" name="chartTab" v-if="!isWaveData&&!isBusiness">
<CompareDataCheckChart <CompareDataCheckChart
v-if="activeTab === 'chartTab'" v-if="activeTab === 'chartTab'"
:tableData="rawTableData.length == 0 ? [] : currentRawTableData" :tableData="rawTableData.length == 0 ? [] : currentRawTableData"
@@ -198,17 +198,12 @@ import { Histogram, Postcard } from '@element-plus/icons-vue'
import {generateDevReport, getPqErrSysList} from '@/api/plan/plan' import {generateDevReport, getPqErrSysList} from '@/api/plan/plan'
import {useModeStore} from '@/stores/modules/mode' // 引入模式 store import {useModeStore} from '@/stores/modules/mode' // 引入模式 store
import {useDictStore} from '@/stores/modules/dict' import {useDictStore} from '@/stores/modules/dict'
import { import {changeErrorSystem, deleteTempTable, getContrastFormContent, getContrastResult, getScriptList, reCalculate} from '@/api/check/test'
changeErrorSystem,
deleteTempTable,
getContrastFormContent,
getContrastResult,
getScriptList,
reCalculate
} from '@/api/check/test'
import {ElMessage} from 'element-plus' import {ElMessage} from 'element-plus'
import {ResultEnum} from '@/enums/httpEnum' import {ResultEnum} from '@/enums/httpEnum'
const isShowRawData = import.meta.env.VITE_IS_SHOW_RAW_DATA
const {appendToBody = true} = defineProps<{ const {appendToBody = true} = defineProps<{
appendToBody: boolean appendToBody: boolean
}>() }>()
@@ -275,6 +270,11 @@ const currentRawTableData = computed(() => {
return Array.isArray(data) ? data : [] return Array.isArray(data) ? data : []
}) })
const isBusiness = computed(() => {
console.log(isShowRawData)
return modeStore.currentMode === '比对式' && isShowRawData
})
const open = async (row: any, chnNum: string, deviceId: string | null, source: number) => { const open = async (row: any, chnNum: string, deviceId: string | null, source: number) => {
activeTab.value = 'resultTab' activeTab.value = 'resultTab'
isWaveData.value = false isWaveData.value = false
@@ -344,7 +344,8 @@ const initScriptData = async () => {
devId: formContent.deviceId, devId: formContent.deviceId,
chnNum: formContent.chnNum, chnNum: formContent.chnNum,
num: formContent.num, num: formContent.num,
planId: checkStore.plan.id planId: checkStore.plan.id,
code: checkStore.plan.code + (formContent.errorSysId != checkStore.plan.errorSysId || formContent.dataRule != checkStore.plan.dataRule ? '_temp' : '')
}) })
// 格式化脚本数据 // 格式化脚本数据
@@ -688,6 +689,7 @@ defineExpose({
overflow-y: auto; overflow-y: auto;
overflow-x: auto; overflow-x: auto;
margin-right: 10px; margin-right: 10px;
.content-tree { .content-tree {
width: 100%; width: 100%;
height: 100%; height: 100%;
@@ -724,10 +726,12 @@ defineExpose({
margin-top: 10px; margin-top: 10px;
margin-bottom: 10px; margin-bottom: 10px;
display: flex; display: flex;
.el-tabs { .el-tabs {
width: 100%; width: 100%;
} }
} }
.content-left { .content-left {
height: 100%; height: 100%;
border: 1px solid #e0e0e0; border: 1px solid #e0e0e0;
@@ -739,6 +743,7 @@ defineExpose({
} }
} }
} }
:deep(.el-tabs--border-card > .el-tabs__content) { :deep(.el-tabs--border-card > .el-tabs__content) {
height: 367px; height: 367px;
} }

View File

@@ -128,7 +128,7 @@ import {CheckData} from '@/api/check/interface'
import {useCheckStore} from '@/stores/modules/check' import {useCheckStore} from '@/stores/modules/check'
import {ElMessage, ElMessageBox} from 'element-plus' import {ElMessage, ElMessageBox} from 'element-plus'
import {getBigTestItem} from '@/api/check/test' import {getBigTestItem} from '@/api/check/test'
import {getAutoGenerate} from '@/api/user/login' import {getAutoGenerate, getCanCoefficient, startCoefficient} from '@/api/user/login'
import { generateDevReport } from '@/api/plan/plan' import { generateDevReport } from '@/api/plan/plan'
import {useModeStore} from '@/stores/modules/mode' // 引入模式 store import {useModeStore} from '@/stores/modules/mode' // 引入模式 store
import {useDictStore} from '@/stores/modules/dict' import {useDictStore} from '@/stores/modules/dict'
@@ -157,11 +157,6 @@ const props = defineProps({
const emit = defineEmits([ const emit = defineEmits([
'update:testStatus', 'update:testStatus',
'update:webMsgSend',
'sendPause',
'sendResume',
'sendReCheck',
'closeWebSocket'
]) ])
// 用来保存测试项进度抽屉是否打开 // 用来保存测试项进度抽屉是否打开
@@ -684,6 +679,20 @@ const updatePercentage = async () => {
}) })
} }
stopTimeCount(1) stopTimeCount(1)
let { data: canCoefficient } = await getCanCoefficient()
if(canCoefficient) {
ElMessageBox.confirm('存在系数偏差,是否进行系数校准?', '系数校准', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(async ()=>{
// 调用系数校准接口
await startCoefficient()
ElMessage.success({ message: '系数下发中,请稍等...', duration: 15000 ,onClose() {
ElMessage.success('系数下发成功!')
},})
}).catch(()=>{
ElMessageBox.alert( ElMessageBox.alert(
'检测全部结束,你可以停留在此页面查看检测结果,或返回首页进行复检、报告生成和归档等操作', '检测全部结束,你可以停留在此页面查看检测结果,或返回首页进行复检、报告生成和归档等操作',
'检测完成', '检测完成',
@@ -691,9 +700,16 @@ const updatePercentage = async () => {
confirmButtonText: '确定' confirmButtonText: '确定'
} }
) )
// 关闭WebSocket连接 })
emit('closeWebSocket') }else{
//clear(); ElMessageBox.alert(
'检测全部结束,你可以停留在此页面查看检测结果,或返回首页进行复检、报告生成和归档等操作',
'检测完成',
{
confirmButtonText: '确定'
}
)
}
} }
} }
// ========== 时间计数器管理函数 ========== // ========== 时间计数器管理函数 ==========
@@ -862,7 +878,6 @@ const handleClick = (item: any, chnNum: number, scriptType: string) => {
} }
const handlePause = () => { const handlePause = () => {
//emit('sendPause')
testLogList.push({ testLogList.push({
type: 'error', type: 'error',
log: `${new Date().toLocaleString()}:当前测试小项正在执行中,将在该小项执行结束后暂停...` log: `${new Date().toLocaleString()}:当前测试小项正在执行中,将在该小项执行结束后暂停...`

View File

@@ -539,6 +539,7 @@ const columns = reactive<ColumnProps<Device.ResPqDev>[]>([
{ prop: 'operation', label: '操作', fixed: 'right', minWidth :200,isShow: operationShow } { prop: 'operation', label: '操作', fixed: 'right', minWidth :200,isShow: operationShow }
]) ])
let testType = 'test' // 检测类型:'test'-检测 'reTest'-复检 let testType = 'test' // 检测类型:'test'-检测 'reTest'-复检
let qualifiedCount = 0 //合格数量
//比对单个报告生成 //比对单个报告生成
@@ -568,12 +569,14 @@ const handleSelectionChange = (selection: any[]) => {
} }
// 统计已完成检测的设备数量 // 统计已完成检测的设备数量
const result = selection.filter(item => item.checkResult != 0) let result = selection.filter(item => item.checkState == 0)
if (result.length > 0) { if (result.length > 0) {
testType = 'test' testType = 'test'
} else { } else {
testType = 'reTest' testType = 'reTest'
} }
qualifiedCount=selection.filter(item => item.checkResult == 1).length
let devices: CheckData.Device[] = selection.map((item: any) => { let devices: CheckData.Device[] = selection.map((item: any) => {
return { return {
deviceId: item.id, deviceId: item.id,
@@ -925,6 +928,7 @@ const handleTest = async (val: string) => {
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: '不合格项复检', confirmButtonText: '不合格项复检',
cancelButtonText: '全部复检', cancelButtonText: '全部复检',
showConfirmButton:qualifiedCount<=0,
type: 'warning' type: 'warning'
}) })
.then(() => { .then(() => {

View File

@@ -1,7 +1,7 @@
<template> <template>
<el-dialog :title="dialogTitle" v-model='dialogVisible' @close="close" v-bind="dialogBig" align-center> <el-dialog :title="dialogTitle" v-model='dialogVisible' @close="close" v-bind="dialogBig" align-center>
<el-tabs type="border-card"> <el-tabs type="border-card" v-model="activeName">
<el-tab-pane label="设备台账信息"> <el-tab-pane label="设备台账信息" name="devInfo">
<div> <div>
<el-form :model='formContent' ref='dialogFormRef' :rules='rules' :disabled="false" label-width="auto" class="form-three"> <el-form :model='formContent' ref='dialogFormRef' :rules='rules' :disabled="false" label-width="auto" class="form-three">
<el-divider>设备信息</el-divider> <el-divider>设备信息</el-divider>
@@ -72,6 +72,47 @@
</el-form> </el-form>
</div> </div>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="通道系数" name="gainInfo">
<el-tabs type="border-card" style="margin: 15px 0px;">
<el-tab-pane v-for="(item, index) in formContent.gainList" :label="'通道'+(index+1)">
<el-form :model='item' ref='gainFormRef' :disabled="true" class="form-four">
<el-form-item label-width="30" label-position="left" label="ua" prop="uaGain">
<el-input v-model="item.uaGain"/>
</el-form-item>
<el-form-item label-width="30" label-position="left" label="ub" prop="ubGain">
<el-input v-model="item.ubGain"/>
</el-form-item>
<el-form-item label-width="30" label-position="left" label="uc" prop="ucGain">
<el-input v-model="item.ucGain"/>
</el-form-item>
<el-form-item label-width="30" label-position="left" label="u0" prop="u0Gain">
<el-input v-model="item.u0Gain"/>
</el-form-item>
<el-form-item label-width="30" label-position="left" label="ia" prop="iaGain">
<el-input v-model="item.iaGain"/>
</el-form-item>
<el-form-item label-width="30" label-position="left" label="ib" prop="ibGain">
<el-input v-model="item.ibGain"/>
</el-form-item>
<el-form-item label-width="30" label-position="left" label="ic" prop="icGain">
<el-input v-model="item.icGain"/>
</el-form-item>
<el-form-item label-width="30" label-position="left" label="i0" prop="i0Gain">
<el-input v-model="item.i0Gain"/>
</el-form-item>
<el-form-item label-width="30" label-position="left" label="uab" prop="uabGain">
<el-input v-model="item.uabGain"/>
</el-form-item>
<el-form-item label-width="30" label-position="left" label="ubc" prop="uabGain">
<el-input v-model="item.ubcGain"/>
</el-form-item>
<el-form-item label-width="30" label-position="left" label="uca" prop="ucaGain">
<el-input v-model="item.ucaGain"/>
</el-form-item>
</el-form>
</el-tab-pane>
</el-tabs>
</el-tab-pane>
</el-tabs> </el-tabs>
<template #footer> <template #footer>
<div> <div>
@@ -84,17 +125,14 @@
</template> </template>
<script setup lang='ts'> <script setup lang='ts'>
import IPAddress from '@/components/IpAddress/index.vue'
import {dialogBig} from '@/utils/elementBind' import {dialogBig} from '@/utils/elementBind'
import {type StandardDevice} from '@/api/device/interface/standardDevice.ts' import {type StandardDevice} from '@/api/device/interface/standardDevice.ts'
import {ElMessage, type FormItemRule} from 'element-plus' import {ElMessage, type FormItemRule} from 'element-plus'
import {addPqStandardDev, updatePqStandardDev} from '@/api/device/standardDevice/index.ts' import {addPqStandardDev, updatePqStandardDev} from '@/api/device/standardDevice/index.ts'
import {computed, reactive, type Ref, ref} from 'vue' import {computed, reactive, type Ref, ref} from 'vue'
import {useDictStore} from '@/stores/modules/dict' import {useDictStore} from '@/stores/modules/dict'
import { CirclePlus, Delete, EditPen } from '@element-plus/icons-vue'
import {type Device} from '@/api/device/interface/device.ts' import {type Device} from '@/api/device/interface/device.ts'
// 使用 dayjs 库格式化 // 使用 dayjs 库格式化
import dayjs from 'dayjs'
// 存储设备类型选项 // 存储设备类型选项
const devTypeOptions = ref<Device.ResDev[]>([]) const devTypeOptions = ref<Device.ResDev[]>([])
@@ -120,6 +158,8 @@ const pqChannelArray = ref([
label: '4', label: '4',
}, },
]) ])
const activeName=ref('devInfo')
function useMetaInfo() { function useMetaInfo() {
const dialogVisible = ref(false) const dialogVisible = ref(false)
@@ -259,12 +299,14 @@ const pqChannelArray = ref([
// 打开弹窗,可能是新增,也可能是编辑 // 打开弹窗,可能是新增,也可能是编辑
const open = async (sign: string, data: StandardDevice.ResPqStandardDevice, devType: Device.ResDev[]) => { const open = async (sign: string, data: StandardDevice.ResPqStandardDevice, devType: Device.ResDev[]) => {
activeName.value = 'devInfo'
// 重置表单 // 重置表单
dialogFormRef.value?.resetFields() dialogFormRef.value?.resetFields()
devTypeOptions.value = devType devTypeOptions.value = devType
titleType.value = sign titleType.value = sign
if (data.id) { if (data.id) {
Object.assign(formContent, {...data}) Object.assign(formContent, {...data})
console.log(formContent)
if (typeof formContent.inspectChannel === 'string') { if (typeof formContent.inspectChannel === 'string') {
formContent.inspectChannel = formContent.inspectChannel.split(',').filter(Boolean) formContent.inspectChannel = formContent.inspectChannel.split(',').filter(Boolean)
} }

View File

@@ -99,13 +99,11 @@ const handleInputRetainTime = value => {
ElMessage.warning("持续时间不能小于0周波") ElMessage.warning("持续时间不能小于0周波")
props.childForm[0].dipData.retainTime = 0 props.childForm[0].dipData.retainTime = 0
emit('setRetainTime', 0 ) emit('setRetainTime', 0 )
}else if (value > 300) { }else if (value > 3000) {
ElMessage.warning("持续时间不能大于300周波") ElMessage.warning("持续时间不能大于3000周波")
props.childForm[0].dipData.retainTime = 300 props.childForm[0].dipData.retainTime = 3000
emit('setRetainTime', 300 ) emit('setRetainTime', 3000 )
}else{ }else{
emit('setRetainTime', value ) emit('setRetainTime', value )
} }
} }

View File

@@ -342,7 +342,7 @@
v-model="formContent.testConfig!.realTime" v-model="formContent.testConfig!.realTime"
:precision="0" :precision="0"
:step="1" :step="1"
:min="40" :min="20"
placeholder="请输入实时数据有效组数" placeholder="请输入实时数据有效组数"
/> />
</el-form-item> </el-form-item>

View File

@@ -25,6 +25,11 @@
<el-input number v-model.number='TestConfigForm.scale' placeholder="请输入误差保留小数位" onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"/> <el-input number v-model.number='TestConfigForm.scale' placeholder="请输入误差保留小数位" onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" v-if="modeStore.currentMode=='比对式'">
<el-form-item label='是否进行系数校准' prop='coefficient' :label-width="140">
<el-switch v-model="TestConfigForm.coefficient" :active-value="1" :inactive-value="0" active-color="#13ce66" inactive-color="#ff4949"></el-switch>
</el-form-item>
</el-col>
<!-- <el-col :span="8">--> <!-- <el-col :span="8">-->
<!-- <el-form-item label='数据处理原则' prop='dataRule' :label-width="140">--> <!-- <el-form-item label='数据处理原则' prop='dataRule' :label-width="140">-->
<!-- <el-select v-model="TestConfigForm.dataRule" clearable placeholder="请选择数据处理原则">--> <!-- <el-select v-model="TestConfigForm.dataRule" clearable placeholder="请选择数据处理原则">-->
@@ -235,6 +240,7 @@ const TestConfigForm = ref<Base.ResTestConfig>({
maxTime: 3, maxTime: 3,
state: 1, //状态 state: 1, //状态
scale:4, scale:4,
coefficient:0,
}) })
const RegResForm = ref<VersionRegister.ResSys_Reg_Res>({ const RegResForm = ref<VersionRegister.ResSys_Reg_Res>({