feat:待审数据

This commit is contained in:
houjunxiang
2025-11-11 20:51:08 +08:00
parent fb41fa9a03
commit 970a8b8eae
11 changed files with 416 additions and 651 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -5,11 +5,9 @@ const taskPrefix = '/qms/bus/qmsBusAssayTask'
// 获取任务 // 获取任务
const getAssayTaskList = params => { const getAssayTaskList = params => {
return request({ return request({
url: '/qms/business-assay-task/page', url: '/qms/business-assay-task/list',
method: 'GET', method: 'GET',
params: { params: {
pageSize: 999,
pageNo: 1,
...params ...params
} }
}) })
@@ -107,16 +105,11 @@ const execSendSample = data => {
} }
// 获取任务明细字段 // 获取任务明细字段
const queryFieldsByTaskDetail = params => { const getSampleAnalysisDataByTaskDataId = params => {
return request({ return request({
url: '/qms/config/qmsConAssayTaskDetailField/queryFieldsByTaskDetail', url: '/qms/bus/sample/analysis/getSampleAnalysisDataByTaskDataId',
method: 'GET', method: 'GET',
params: { params
...params
},
custom: {
isTransformResponse: true
}
}) })
} }
@@ -125,9 +118,7 @@ const queryHeadFieldsByTaskNo = params => {
return request({ return request({
url: '/qms/config/qmsConAssayTaskHead/queryHeadFieldsByTaskNo', url: '/qms/config/qmsConAssayTaskHead/queryHeadFieldsByTaskNo',
method: 'GET', method: 'GET',
params: { params
...params
}
}) })
} }
@@ -136,9 +127,7 @@ const queryHeadValueByTaskNo = params => {
return request({ return request({
url: '/qms/bus/qmsBusAssayTaskHead/queryHeadValueByTaskNo', url: '/qms/bus/qmsBusAssayTaskHead/queryHeadValueByTaskNo',
method: 'GET', method: 'GET',
params: { params,
...params
},
custom: { custom: {
showError: false, showError: false,
isTransformResponse: true isTransformResponse: true
@@ -280,7 +269,7 @@ export default {
getDynamicBaseFormSchema, getDynamicBaseFormSchema,
getAssayTaskDetailListByTaskNo, getAssayTaskDetailListByTaskNo,
getAssayTaskDetailById, getAssayTaskDetailById,
queryFieldsByTaskDetail, getSampleAnalysisDataByTaskDataId,
queryHeadFieldsByTaskNo, queryHeadFieldsByTaskNo,
queryHeadValueByTaskNo, queryHeadValueByTaskNo,
saveHeadValue, saveHeadValue,

View File

@@ -46,6 +46,7 @@ export function calcAnalysisValue(group) {
if (formulaVal.startsWith('Get')) { if (formulaVal.startsWith('Get')) {
//计算公式为Get开头的都是执行方法 //计算公式为Get开头的都是执行方法
v = eval(formulaVal) v = eval(formulaVal)
} else if (formulaVal.startsWith('From')) {
} else { } else {
v = math.evaluate(formulaVal).toString() v = math.evaluate(formulaVal).toString()
v = isFinite(v) ? v.toString() : '' v = isFinite(v) ? v.toString() : ''
@@ -85,6 +86,7 @@ export function calcRowAnalysisValue(row, columnObj, dynamicsColumns) {
if (formulaVal.startsWith('Get')) { if (formulaVal.startsWith('Get')) {
formulaVal = formulaVal.replace(')', ",'" + row.conBaseSampleId + "')") formulaVal = formulaVal.replace(')', ",'" + row.conBaseSampleId + "')")
v = eval(formulaVal) v = eval(formulaVal)
} else if (formulaVal.startsWith('From')) {
} else { } else {
v = math.evaluate(formulaVal).toString() v = math.evaluate(formulaVal).toString()
v = isFinite(v) ? v : 0 v = isFinite(v) ? v : 0
@@ -326,3 +328,27 @@ function accAdd(arg1, arg2) {
} }
return (arg1 + arg2) / m return (arg1 + arg2) / m
} }
// 通过配置项分组
export function groupByField(list, groupKey = 'groupDictionaryBusinessKey') {
const groupMap = new Map()
list.unshift({ groupDictionaryBusinessKey: 'all', groupDictionaryBusinessName: '全部' })
for (const item of list) {
const key = item[groupKey]
if (!key) continue // 跳过没有 group 的项(可选)
if (!groupMap.has(key)) {
groupMap.set(key, {
value: key,
label: item.groupDictionaryBusinessName, // 假设 title 在每个 item 中,且同组相同
fields: []
})
}
// 把当前项(或仅需要的部分)推入 fields
groupMap.get(key).fields.push(item)
}
// 转为数组
return Array.from(groupMap.values())
}

View File

@@ -149,6 +149,7 @@ http.interceptors.response.use(
} }
const { code, data, msg } = response.data const { code, data, msg } = response.data
// 统一处理【公司/部门二次选择】:参考 PC 端逻辑,自动补全或提示选择后重试 // 统一处理【公司/部门二次选择】:参考 PC 端逻辑,自动补全或提示选择后重试
if (code === 400 && Array.isArray(data)) { if (code === 400 && Array.isArray(data)) {
debugger debugger
@@ -209,7 +210,8 @@ http.interceptors.response.use(
} }
} }
if ((code === 0 || code === 200) && response.config.custom.showSuccess) { if (code === 0 || code === 200) {
if (response.config.custom.showSuccess) {
setTimeout(() => { setTimeout(() => {
uni.showToast({ uni.showToast({
title: msg || response.config.custom.successMsg, title: msg || response.config.custom.successMsg,
@@ -217,9 +219,10 @@ http.interceptors.response.use(
}) })
}, 100) }, 100)
} }
$store('user').updateLastRequestTime() $store('user').updateLastRequestTime()
return Promise.resolve(data) return Promise.resolve(data)
}
return Promise.reject(response.data)
}, },
error => { error => {
console.log('error', error) console.log('error', error)

View File

@@ -1,7 +1,8 @@
export default { export default {
isNullOrEmpty: function (value) { isEmpty: function (value) {
//是否为空 if (value === undefined || value === null) return true
return value === null || value === '' || value === undefined ? true : false if (typeof value === 'string' && value.trim() === '') return true
return false
}, },
trim: function (value) { trim: function (value) {
//去空格 //去空格
@@ -311,6 +312,20 @@ export default {
} }
}) })
}, },
showPromiseModal(title, content) {
return new Promise(resolve => {
uni.showModal({
title,
content,
cancelColor: '#0055A2',
confirmColor: '#0055A2',
success: res => {
resolve(res.confirm) // true 表示点击了确定false 表示取消
},
fail: () => resolve(false)
})
})
},
isRsk() { isRsk() {
let sysInfo = uni.getSystemInfoSync() let sysInfo = uni.getSystemInfoSync()
let brand = sysInfo.brand.toLowerCase() let brand = sysInfo.brand.toLowerCase()

View File

@@ -28,9 +28,9 @@ const isAllowAgainPrint = ref(false)
const menuItemList = ref([ const menuItemList = ref([
// { url: '/pages/analysis/sample/sample-receive', otherConf: { icon: 'arrow-downward' }, name: '收样' }, // { url: '/pages/analysis/sample/sample-receive', otherConf: { icon: 'arrow-downward' }, name: '收样' },
{ url: '/pages/analysis/sample/sample-work-list', otherConf: { icon: 'edit-pen-fill' }, name: '样品分析' }, { url: '/pages/analysis/sample/sample-work-list', otherConf: { icon: 'edit-pen-fill' }, name: '样品分析' },
{ url: '/pages/analysis/sample/sample-report', otherConf: { icon: 'arrow-upward' }, name: '数据上报' }, // { url: '/pages/analysis/sample/sample-report', otherConf: { icon: 'arrow-upward' }, name: '数据上报' },
{ url: '/pages/analysis/sample/sample-report-search', otherConf: { icon: 'search' }, name: '待审数据' }, { url: '/pages/analysis/sample/sample-report-search', otherConf: { icon: 'search' }, name: '待审数据' },
{ url: '/pages/analysis/sample/sample-print', otherConf: { icon: 'file-text-fill' }, name: '单据补打' }, // { url: '/pages/analysis/sample/sample-print', otherConf: { icon: 'file-text-fill' }, name: '单据补打' },
{ url: '/pages/analysis/setting/setting', otherConf: { icon: 'setting-fill' }, name: '系统设置' } { url: '/pages/analysis/setting/setting', otherConf: { icon: 'setting-fill' }, name: '系统设置' }
]) ])

View File

@@ -15,7 +15,7 @@ import { getBaseUrl } from '@/defaultBaseUrl'
import nx from '@/nx' import nx from '@/nx'
// 响应式数据 // 响应式数据
const taskId = ref('') const businessAssayTaskId = ref('')
const localFilePath = ref('') const localFilePath = ref('')
const reportKey = ref('') const reportKey = ref('')
const hideResultFlag = ref('') const hideResultFlag = ref('')
@@ -87,10 +87,10 @@ const loadPdfOnAndroid = async pdfUrl => {
const getPdf = async () => { const getPdf = async () => {
const printBaseUrl = getBaseUrl() const printBaseUrl = getBaseUrl()
const baseUrl = getBaseUrl() const baseUrl = getBaseUrl()
let dataUrl = `${baseUrl}/qms/bus/qmsBusAssayTask/getAssayTaskDataWithDetailData?taskId=${taskId.value}` let dataUrl = `${baseUrl}/qms/bus/sample/analysis-audit/crossAuditByTaskId?businessAssayTaskId=${businessAssayTaskId.value}`
dataUrl += `&hideResultFlag=${hideResultFlag.value}` dataUrl += `&hideResultFlag=${hideResultFlag.value}`
const token = nx.$store('user').token const token = nx.$store('user').token
let url = `${printBaseUrl}/report/gridpp/report/previewDocs` let url = `${printBaseUrl}/qms/config-report-template/preview`
url += `?token=${token}` url += `?token=${token}`
url += `&type=PDF` url += `&type=PDF`
url += `&reportKey=${reportKey.value}` url += `&reportKey=${reportKey.value}`
@@ -123,8 +123,8 @@ const deleteTmpFile = () => {
// 生命周期 // 生命周期
onLoad(param => { onLoad(param => {
if (param.taskId) { if (param.businessAssayTaskId) {
taskId.value = param.taskId businessAssayTaskId.value = param.businessAssayTaskId
reportKey.value = param.reportKey reportKey.value = param.reportKey
hideResultFlag.value = param.hideResultFlag hideResultFlag.value = param.hideResultFlag
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More