diff --git a/src/api/business/lab/measureData.ts b/src/api/business/lab/measureData.ts new file mode 100644 index 0000000..ab3a56e --- /dev/null +++ b/src/api/business/lab/measureData.ts @@ -0,0 +1,78 @@ +/** + * 计量数据管理 +*/ +import request from '../../index' + +// 计量数据管理列表 +export function getMeasureDataList(data: { offset: number; limit: number }) { + return request({ + url: `/business/certificateReport/approval/listPage?offset=${data.offset}&limit=${data.limit}`, + method: 'post', + data, + }) +} + +// 点击下载模板后生成证书 +export function downLoadTemplate(data: any) { + return request({ + url: '/business/certificateReport/exportFile', + method: 'post', + data, + responseType: 'blob', + }) +} + +// 新增 +export function addMeasureData(data: any) { + return request({ + url: '/business/certificateReport/save', + method: 'post', + data, + }) +} + +// 草稿箱更新 +export function draftUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/draftUpdate', + method: 'post', + data, + }) +} + +// 未通过-驳回编辑 +export function failUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/failUpdate', + method: 'post', + data, + }) +} + +// 提交 +export function submit(data: { formId: string; processId?: string; id: string }) { + return request({ + url: '/business/certificateReport/submit', + method: 'post', + data, + }) +} + +// 详情 +export function getMeasureDataDetail(data: { id: string }) { + return request({ + url: '/business/certificateReport/detail', + method: 'post', + data, + }) +} + +// 删除 +export function deleteMeasureData(data: any) { + return request({ + url: '/business/certificateReport/batchDelete', + method: 'post', + data, + }) +} + diff --git a/src/api/business/lab/measureData.ts b/src/api/business/lab/measureData.ts new file mode 100644 index 0000000..ab3a56e --- /dev/null +++ b/src/api/business/lab/measureData.ts @@ -0,0 +1,78 @@ +/** + * 计量数据管理 +*/ +import request from '../../index' + +// 计量数据管理列表 +export function getMeasureDataList(data: { offset: number; limit: number }) { + return request({ + url: `/business/certificateReport/approval/listPage?offset=${data.offset}&limit=${data.limit}`, + method: 'post', + data, + }) +} + +// 点击下载模板后生成证书 +export function downLoadTemplate(data: any) { + return request({ + url: '/business/certificateReport/exportFile', + method: 'post', + data, + responseType: 'blob', + }) +} + +// 新增 +export function addMeasureData(data: any) { + return request({ + url: '/business/certificateReport/save', + method: 'post', + data, + }) +} + +// 草稿箱更新 +export function draftUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/draftUpdate', + method: 'post', + data, + }) +} + +// 未通过-驳回编辑 +export function failUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/failUpdate', + method: 'post', + data, + }) +} + +// 提交 +export function submit(data: { formId: string; processId?: string; id: string }) { + return request({ + url: '/business/certificateReport/submit', + method: 'post', + data, + }) +} + +// 详情 +export function getMeasureDataDetail(data: { id: string }) { + return request({ + url: '/business/certificateReport/detail', + method: 'post', + data, + }) +} + +// 删除 +export function deleteMeasureData(data: any) { + return request({ + url: '/business/certificateReport/batchDelete', + method: 'post', + data, + }) +} + diff --git a/src/api/business/subpackage/apply.ts b/src/api/business/subpackage/apply.ts index ad17a5a..c778f8e 100644 --- a/src/api/business/subpackage/apply.ts +++ b/src/api/business/subpackage/apply.ts @@ -94,3 +94,4 @@ data, }) } + diff --git a/src/api/business/lab/measureData.ts b/src/api/business/lab/measureData.ts new file mode 100644 index 0000000..ab3a56e --- /dev/null +++ b/src/api/business/lab/measureData.ts @@ -0,0 +1,78 @@ +/** + * 计量数据管理 +*/ +import request from '../../index' + +// 计量数据管理列表 +export function getMeasureDataList(data: { offset: number; limit: number }) { + return request({ + url: `/business/certificateReport/approval/listPage?offset=${data.offset}&limit=${data.limit}`, + method: 'post', + data, + }) +} + +// 点击下载模板后生成证书 +export function downLoadTemplate(data: any) { + return request({ + url: '/business/certificateReport/exportFile', + method: 'post', + data, + responseType: 'blob', + }) +} + +// 新增 +export function addMeasureData(data: any) { + return request({ + url: '/business/certificateReport/save', + method: 'post', + data, + }) +} + +// 草稿箱更新 +export function draftUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/draftUpdate', + method: 'post', + data, + }) +} + +// 未通过-驳回编辑 +export function failUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/failUpdate', + method: 'post', + data, + }) +} + +// 提交 +export function submit(data: { formId: string; processId?: string; id: string }) { + return request({ + url: '/business/certificateReport/submit', + method: 'post', + data, + }) +} + +// 详情 +export function getMeasureDataDetail(data: { id: string }) { + return request({ + url: '/business/certificateReport/detail', + method: 'post', + data, + }) +} + +// 删除 +export function deleteMeasureData(data: any) { + return request({ + url: '/business/certificateReport/batchDelete', + method: 'post', + data, + }) +} + diff --git a/src/api/business/subpackage/apply.ts b/src/api/business/subpackage/apply.ts index ad17a5a..c778f8e 100644 --- a/src/api/business/subpackage/apply.ts +++ b/src/api/business/subpackage/apply.ts @@ -94,3 +94,4 @@ data, }) } + diff --git a/src/api/system/tool.ts b/src/api/system/tool.ts index 6b2f5f2..8223e4c 100644 --- a/src/api/system/tool.ts +++ b/src/api/system/tool.ts @@ -67,19 +67,10 @@ data, }) } -// 原始记录模板/证书报告模板列表(分页) -export interface listParamsType { - templateNo: string // 编号 - templateName: string // 名称 - templateCreator: string // 负责人 - // createTime: string // 创建时间 - limit: number - offset: number - templateType: string -} -export function templatePage(data: listParamsType) { + +export function templatePage(data: any) { return request({ - url: `${prefix}/template/listPage?limit=${data.limit}&offset=${data.offset}`, + url: `${prefix}template/listPage?limit=${data.limit}&offset=${data.offset}`, method: 'post', data, }) @@ -87,7 +78,7 @@ // 原始记录模板/证书报告模板列表/详情( export function templatePageDetail(data: object) { return request({ - url: `${prefix}/template/detail`, + url: `${prefix}template/detail`, method: 'post', data, }) @@ -95,7 +86,7 @@ // 原始记录模板/证书报告模板列表删除 export function templateDelete(data: object) { return request({ - url: `${prefix}/template/delete`, + url: `${prefix}template/delete`, method: 'post', data, }) @@ -103,7 +94,7 @@ // 原始记录模板/证书报告模板列表新建 export function templateAdd(data: object) { return request({ - url: `${prefix}/template/add`, + url: `${prefix}template/add`, method: 'post', data, }) @@ -111,7 +102,7 @@ // 原始记录模板/证书报告模板列表更新 export function templateUpdate(data: object) { return request({ - url: `${prefix}/template/update`, + url: `${prefix}template/update`, method: 'post', data, }) @@ -119,7 +110,7 @@ // 原始记录模板/证书报告模板列表导出 export function templateExport(data: object) { return request({ - url: `${prefix}/template/listExport`, + url: `${prefix}template/listExport`, method: 'post', data, responseType: 'blob', diff --git a/src/api/business/lab/measureData.ts b/src/api/business/lab/measureData.ts new file mode 100644 index 0000000..ab3a56e --- /dev/null +++ b/src/api/business/lab/measureData.ts @@ -0,0 +1,78 @@ +/** + * 计量数据管理 +*/ +import request from '../../index' + +// 计量数据管理列表 +export function getMeasureDataList(data: { offset: number; limit: number }) { + return request({ + url: `/business/certificateReport/approval/listPage?offset=${data.offset}&limit=${data.limit}`, + method: 'post', + data, + }) +} + +// 点击下载模板后生成证书 +export function downLoadTemplate(data: any) { + return request({ + url: '/business/certificateReport/exportFile', + method: 'post', + data, + responseType: 'blob', + }) +} + +// 新增 +export function addMeasureData(data: any) { + return request({ + url: '/business/certificateReport/save', + method: 'post', + data, + }) +} + +// 草稿箱更新 +export function draftUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/draftUpdate', + method: 'post', + data, + }) +} + +// 未通过-驳回编辑 +export function failUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/failUpdate', + method: 'post', + data, + }) +} + +// 提交 +export function submit(data: { formId: string; processId?: string; id: string }) { + return request({ + url: '/business/certificateReport/submit', + method: 'post', + data, + }) +} + +// 详情 +export function getMeasureDataDetail(data: { id: string }) { + return request({ + url: '/business/certificateReport/detail', + method: 'post', + data, + }) +} + +// 删除 +export function deleteMeasureData(data: any) { + return request({ + url: '/business/certificateReport/batchDelete', + method: 'post', + data, + }) +} + diff --git a/src/api/business/subpackage/apply.ts b/src/api/business/subpackage/apply.ts index ad17a5a..c778f8e 100644 --- a/src/api/business/subpackage/apply.ts +++ b/src/api/business/subpackage/apply.ts @@ -94,3 +94,4 @@ data, }) } + diff --git a/src/api/system/tool.ts b/src/api/system/tool.ts index 6b2f5f2..8223e4c 100644 --- a/src/api/system/tool.ts +++ b/src/api/system/tool.ts @@ -67,19 +67,10 @@ data, }) } -// 原始记录模板/证书报告模板列表(分页) -export interface listParamsType { - templateNo: string // 编号 - templateName: string // 名称 - templateCreator: string // 负责人 - // createTime: string // 创建时间 - limit: number - offset: number - templateType: string -} -export function templatePage(data: listParamsType) { + +export function templatePage(data: any) { return request({ - url: `${prefix}/template/listPage?limit=${data.limit}&offset=${data.offset}`, + url: `${prefix}template/listPage?limit=${data.limit}&offset=${data.offset}`, method: 'post', data, }) @@ -87,7 +78,7 @@ // 原始记录模板/证书报告模板列表/详情( export function templatePageDetail(data: object) { return request({ - url: `${prefix}/template/detail`, + url: `${prefix}template/detail`, method: 'post', data, }) @@ -95,7 +86,7 @@ // 原始记录模板/证书报告模板列表删除 export function templateDelete(data: object) { return request({ - url: `${prefix}/template/delete`, + url: `${prefix}template/delete`, method: 'post', data, }) @@ -103,7 +94,7 @@ // 原始记录模板/证书报告模板列表新建 export function templateAdd(data: object) { return request({ - url: `${prefix}/template/add`, + url: `${prefix}template/add`, method: 'post', data, }) @@ -111,7 +102,7 @@ // 原始记录模板/证书报告模板列表更新 export function templateUpdate(data: object) { return request({ - url: `${prefix}/template/update`, + url: `${prefix}template/update`, method: 'post', data, }) @@ -119,7 +110,7 @@ // 原始记录模板/证书报告模板列表导出 export function templateExport(data: object) { return request({ - url: `${prefix}/template/listExport`, + url: `${prefix}template/listExport`, method: 'post', data, responseType: 'blob', diff --git a/src/components.d.ts b/src/components.d.ts index edc2e04..64cf608 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -46,6 +46,7 @@ ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] + MultiHeaderTable: typeof import('./components/MultiHeaderTable/index.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -67,6 +68,7 @@ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] + TableColumn: typeof import('./components/MultiHeaderTable/tableColumn.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] Trend: typeof import('./components/Trend/index.vue')['default'] WordOreview: typeof import('./components/filePreview/wordOreview.vue')['default'] diff --git a/src/api/business/lab/measureData.ts b/src/api/business/lab/measureData.ts new file mode 100644 index 0000000..ab3a56e --- /dev/null +++ b/src/api/business/lab/measureData.ts @@ -0,0 +1,78 @@ +/** + * 计量数据管理 +*/ +import request from '../../index' + +// 计量数据管理列表 +export function getMeasureDataList(data: { offset: number; limit: number }) { + return request({ + url: `/business/certificateReport/approval/listPage?offset=${data.offset}&limit=${data.limit}`, + method: 'post', + data, + }) +} + +// 点击下载模板后生成证书 +export function downLoadTemplate(data: any) { + return request({ + url: '/business/certificateReport/exportFile', + method: 'post', + data, + responseType: 'blob', + }) +} + +// 新增 +export function addMeasureData(data: any) { + return request({ + url: '/business/certificateReport/save', + method: 'post', + data, + }) +} + +// 草稿箱更新 +export function draftUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/draftUpdate', + method: 'post', + data, + }) +} + +// 未通过-驳回编辑 +export function failUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/failUpdate', + method: 'post', + data, + }) +} + +// 提交 +export function submit(data: { formId: string; processId?: string; id: string }) { + return request({ + url: '/business/certificateReport/submit', + method: 'post', + data, + }) +} + +// 详情 +export function getMeasureDataDetail(data: { id: string }) { + return request({ + url: '/business/certificateReport/detail', + method: 'post', + data, + }) +} + +// 删除 +export function deleteMeasureData(data: any) { + return request({ + url: '/business/certificateReport/batchDelete', + method: 'post', + data, + }) +} + diff --git a/src/api/business/subpackage/apply.ts b/src/api/business/subpackage/apply.ts index ad17a5a..c778f8e 100644 --- a/src/api/business/subpackage/apply.ts +++ b/src/api/business/subpackage/apply.ts @@ -94,3 +94,4 @@ data, }) } + diff --git a/src/api/system/tool.ts b/src/api/system/tool.ts index 6b2f5f2..8223e4c 100644 --- a/src/api/system/tool.ts +++ b/src/api/system/tool.ts @@ -67,19 +67,10 @@ data, }) } -// 原始记录模板/证书报告模板列表(分页) -export interface listParamsType { - templateNo: string // 编号 - templateName: string // 名称 - templateCreator: string // 负责人 - // createTime: string // 创建时间 - limit: number - offset: number - templateType: string -} -export function templatePage(data: listParamsType) { + +export function templatePage(data: any) { return request({ - url: `${prefix}/template/listPage?limit=${data.limit}&offset=${data.offset}`, + url: `${prefix}template/listPage?limit=${data.limit}&offset=${data.offset}`, method: 'post', data, }) @@ -87,7 +78,7 @@ // 原始记录模板/证书报告模板列表/详情( export function templatePageDetail(data: object) { return request({ - url: `${prefix}/template/detail`, + url: `${prefix}template/detail`, method: 'post', data, }) @@ -95,7 +86,7 @@ // 原始记录模板/证书报告模板列表删除 export function templateDelete(data: object) { return request({ - url: `${prefix}/template/delete`, + url: `${prefix}template/delete`, method: 'post', data, }) @@ -103,7 +94,7 @@ // 原始记录模板/证书报告模板列表新建 export function templateAdd(data: object) { return request({ - url: `${prefix}/template/add`, + url: `${prefix}template/add`, method: 'post', data, }) @@ -111,7 +102,7 @@ // 原始记录模板/证书报告模板列表更新 export function templateUpdate(data: object) { return request({ - url: `${prefix}/template/update`, + url: `${prefix}template/update`, method: 'post', data, }) @@ -119,7 +110,7 @@ // 原始记录模板/证书报告模板列表导出 export function templateExport(data: object) { return request({ - url: `${prefix}/template/listExport`, + url: `${prefix}template/listExport`, method: 'post', data, responseType: 'blob', diff --git a/src/components.d.ts b/src/components.d.ts index edc2e04..64cf608 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -46,6 +46,7 @@ ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] + MultiHeaderTable: typeof import('./components/MultiHeaderTable/index.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -67,6 +68,7 @@ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] + TableColumn: typeof import('./components/MultiHeaderTable/tableColumn.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] Trend: typeof import('./components/Trend/index.vue')['default'] WordOreview: typeof import('./components/filePreview/wordOreview.vue')['default'] diff --git a/src/components/MultiHeaderTable/index.vue b/src/components/MultiHeaderTable/index.vue new file mode 100644 index 0000000..85b8c88 --- /dev/null +++ b/src/components/MultiHeaderTable/index.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/src/api/business/lab/measureData.ts b/src/api/business/lab/measureData.ts new file mode 100644 index 0000000..ab3a56e --- /dev/null +++ b/src/api/business/lab/measureData.ts @@ -0,0 +1,78 @@ +/** + * 计量数据管理 +*/ +import request from '../../index' + +// 计量数据管理列表 +export function getMeasureDataList(data: { offset: number; limit: number }) { + return request({ + url: `/business/certificateReport/approval/listPage?offset=${data.offset}&limit=${data.limit}`, + method: 'post', + data, + }) +} + +// 点击下载模板后生成证书 +export function downLoadTemplate(data: any) { + return request({ + url: '/business/certificateReport/exportFile', + method: 'post', + data, + responseType: 'blob', + }) +} + +// 新增 +export function addMeasureData(data: any) { + return request({ + url: '/business/certificateReport/save', + method: 'post', + data, + }) +} + +// 草稿箱更新 +export function draftUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/draftUpdate', + method: 'post', + data, + }) +} + +// 未通过-驳回编辑 +export function failUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/failUpdate', + method: 'post', + data, + }) +} + +// 提交 +export function submit(data: { formId: string; processId?: string; id: string }) { + return request({ + url: '/business/certificateReport/submit', + method: 'post', + data, + }) +} + +// 详情 +export function getMeasureDataDetail(data: { id: string }) { + return request({ + url: '/business/certificateReport/detail', + method: 'post', + data, + }) +} + +// 删除 +export function deleteMeasureData(data: any) { + return request({ + url: '/business/certificateReport/batchDelete', + method: 'post', + data, + }) +} + diff --git a/src/api/business/subpackage/apply.ts b/src/api/business/subpackage/apply.ts index ad17a5a..c778f8e 100644 --- a/src/api/business/subpackage/apply.ts +++ b/src/api/business/subpackage/apply.ts @@ -94,3 +94,4 @@ data, }) } + diff --git a/src/api/system/tool.ts b/src/api/system/tool.ts index 6b2f5f2..8223e4c 100644 --- a/src/api/system/tool.ts +++ b/src/api/system/tool.ts @@ -67,19 +67,10 @@ data, }) } -// 原始记录模板/证书报告模板列表(分页) -export interface listParamsType { - templateNo: string // 编号 - templateName: string // 名称 - templateCreator: string // 负责人 - // createTime: string // 创建时间 - limit: number - offset: number - templateType: string -} -export function templatePage(data: listParamsType) { + +export function templatePage(data: any) { return request({ - url: `${prefix}/template/listPage?limit=${data.limit}&offset=${data.offset}`, + url: `${prefix}template/listPage?limit=${data.limit}&offset=${data.offset}`, method: 'post', data, }) @@ -87,7 +78,7 @@ // 原始记录模板/证书报告模板列表/详情( export function templatePageDetail(data: object) { return request({ - url: `${prefix}/template/detail`, + url: `${prefix}template/detail`, method: 'post', data, }) @@ -95,7 +86,7 @@ // 原始记录模板/证书报告模板列表删除 export function templateDelete(data: object) { return request({ - url: `${prefix}/template/delete`, + url: `${prefix}template/delete`, method: 'post', data, }) @@ -103,7 +94,7 @@ // 原始记录模板/证书报告模板列表新建 export function templateAdd(data: object) { return request({ - url: `${prefix}/template/add`, + url: `${prefix}template/add`, method: 'post', data, }) @@ -111,7 +102,7 @@ // 原始记录模板/证书报告模板列表更新 export function templateUpdate(data: object) { return request({ - url: `${prefix}/template/update`, + url: `${prefix}template/update`, method: 'post', data, }) @@ -119,7 +110,7 @@ // 原始记录模板/证书报告模板列表导出 export function templateExport(data: object) { return request({ - url: `${prefix}/template/listExport`, + url: `${prefix}template/listExport`, method: 'post', data, responseType: 'blob', diff --git a/src/components.d.ts b/src/components.d.ts index edc2e04..64cf608 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -46,6 +46,7 @@ ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] + MultiHeaderTable: typeof import('./components/MultiHeaderTable/index.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -67,6 +68,7 @@ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] + TableColumn: typeof import('./components/MultiHeaderTable/tableColumn.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] Trend: typeof import('./components/Trend/index.vue')['default'] WordOreview: typeof import('./components/filePreview/wordOreview.vue')['default'] diff --git a/src/components/MultiHeaderTable/index.vue b/src/components/MultiHeaderTable/index.vue new file mode 100644 index 0000000..85b8c88 --- /dev/null +++ b/src/components/MultiHeaderTable/index.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/src/components/MultiHeaderTable/tableColumn.vue b/src/components/MultiHeaderTable/tableColumn.vue new file mode 100644 index 0000000..2b87285 --- /dev/null +++ b/src/components/MultiHeaderTable/tableColumn.vue @@ -0,0 +1,147 @@ + + + diff --git a/src/api/business/lab/measureData.ts b/src/api/business/lab/measureData.ts new file mode 100644 index 0000000..ab3a56e --- /dev/null +++ b/src/api/business/lab/measureData.ts @@ -0,0 +1,78 @@ +/** + * 计量数据管理 +*/ +import request from '../../index' + +// 计量数据管理列表 +export function getMeasureDataList(data: { offset: number; limit: number }) { + return request({ + url: `/business/certificateReport/approval/listPage?offset=${data.offset}&limit=${data.limit}`, + method: 'post', + data, + }) +} + +// 点击下载模板后生成证书 +export function downLoadTemplate(data: any) { + return request({ + url: '/business/certificateReport/exportFile', + method: 'post', + data, + responseType: 'blob', + }) +} + +// 新增 +export function addMeasureData(data: any) { + return request({ + url: '/business/certificateReport/save', + method: 'post', + data, + }) +} + +// 草稿箱更新 +export function draftUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/draftUpdate', + method: 'post', + data, + }) +} + +// 未通过-驳回编辑 +export function failUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/failUpdate', + method: 'post', + data, + }) +} + +// 提交 +export function submit(data: { formId: string; processId?: string; id: string }) { + return request({ + url: '/business/certificateReport/submit', + method: 'post', + data, + }) +} + +// 详情 +export function getMeasureDataDetail(data: { id: string }) { + return request({ + url: '/business/certificateReport/detail', + method: 'post', + data, + }) +} + +// 删除 +export function deleteMeasureData(data: any) { + return request({ + url: '/business/certificateReport/batchDelete', + method: 'post', + data, + }) +} + diff --git a/src/api/business/subpackage/apply.ts b/src/api/business/subpackage/apply.ts index ad17a5a..c778f8e 100644 --- a/src/api/business/subpackage/apply.ts +++ b/src/api/business/subpackage/apply.ts @@ -94,3 +94,4 @@ data, }) } + diff --git a/src/api/system/tool.ts b/src/api/system/tool.ts index 6b2f5f2..8223e4c 100644 --- a/src/api/system/tool.ts +++ b/src/api/system/tool.ts @@ -67,19 +67,10 @@ data, }) } -// 原始记录模板/证书报告模板列表(分页) -export interface listParamsType { - templateNo: string // 编号 - templateName: string // 名称 - templateCreator: string // 负责人 - // createTime: string // 创建时间 - limit: number - offset: number - templateType: string -} -export function templatePage(data: listParamsType) { + +export function templatePage(data: any) { return request({ - url: `${prefix}/template/listPage?limit=${data.limit}&offset=${data.offset}`, + url: `${prefix}template/listPage?limit=${data.limit}&offset=${data.offset}`, method: 'post', data, }) @@ -87,7 +78,7 @@ // 原始记录模板/证书报告模板列表/详情( export function templatePageDetail(data: object) { return request({ - url: `${prefix}/template/detail`, + url: `${prefix}template/detail`, method: 'post', data, }) @@ -95,7 +86,7 @@ // 原始记录模板/证书报告模板列表删除 export function templateDelete(data: object) { return request({ - url: `${prefix}/template/delete`, + url: `${prefix}template/delete`, method: 'post', data, }) @@ -103,7 +94,7 @@ // 原始记录模板/证书报告模板列表新建 export function templateAdd(data: object) { return request({ - url: `${prefix}/template/add`, + url: `${prefix}template/add`, method: 'post', data, }) @@ -111,7 +102,7 @@ // 原始记录模板/证书报告模板列表更新 export function templateUpdate(data: object) { return request({ - url: `${prefix}/template/update`, + url: `${prefix}template/update`, method: 'post', data, }) @@ -119,7 +110,7 @@ // 原始记录模板/证书报告模板列表导出 export function templateExport(data: object) { return request({ - url: `${prefix}/template/listExport`, + url: `${prefix}template/listExport`, method: 'post', data, responseType: 'blob', diff --git a/src/components.d.ts b/src/components.d.ts index edc2e04..64cf608 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -46,6 +46,7 @@ ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] + MultiHeaderTable: typeof import('./components/MultiHeaderTable/index.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -67,6 +68,7 @@ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] + TableColumn: typeof import('./components/MultiHeaderTable/tableColumn.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] Trend: typeof import('./components/Trend/index.vue')['default'] WordOreview: typeof import('./components/filePreview/wordOreview.vue')['default'] diff --git a/src/components/MultiHeaderTable/index.vue b/src/components/MultiHeaderTable/index.vue new file mode 100644 index 0000000..85b8c88 --- /dev/null +++ b/src/components/MultiHeaderTable/index.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/src/components/MultiHeaderTable/tableColumn.vue b/src/components/MultiHeaderTable/tableColumn.vue new file mode 100644 index 0000000..2b87285 --- /dev/null +++ b/src/components/MultiHeaderTable/tableColumn.vue @@ -0,0 +1,147 @@ + + + diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue index e56f775..67092d3 100644 --- a/src/components/NormalTable/index.vue +++ b/src/components/NormalTable/index.vue @@ -3,6 +3,7 @@ import { ElTable } from 'element-plus' import { defineExpose, ref } from 'vue' import type { TableColumn } from './table_interface' +import showPhoto from '@/views/system/tool/showPhoto.vue' // ------------------定义props、 emit------------------- const props = defineProps({ @@ -212,8 +213,8 @@ {{ scope.row[column.value] }} {{ column.filter(scope.row) }}
- {{ scope.row }} -
+ +
diff --git a/src/api/business/lab/measureData.ts b/src/api/business/lab/measureData.ts new file mode 100644 index 0000000..ab3a56e --- /dev/null +++ b/src/api/business/lab/measureData.ts @@ -0,0 +1,78 @@ +/** + * 计量数据管理 +*/ +import request from '../../index' + +// 计量数据管理列表 +export function getMeasureDataList(data: { offset: number; limit: number }) { + return request({ + url: `/business/certificateReport/approval/listPage?offset=${data.offset}&limit=${data.limit}`, + method: 'post', + data, + }) +} + +// 点击下载模板后生成证书 +export function downLoadTemplate(data: any) { + return request({ + url: '/business/certificateReport/exportFile', + method: 'post', + data, + responseType: 'blob', + }) +} + +// 新增 +export function addMeasureData(data: any) { + return request({ + url: '/business/certificateReport/save', + method: 'post', + data, + }) +} + +// 草稿箱更新 +export function draftUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/draftUpdate', + method: 'post', + data, + }) +} + +// 未通过-驳回编辑 +export function failUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/failUpdate', + method: 'post', + data, + }) +} + +// 提交 +export function submit(data: { formId: string; processId?: string; id: string }) { + return request({ + url: '/business/certificateReport/submit', + method: 'post', + data, + }) +} + +// 详情 +export function getMeasureDataDetail(data: { id: string }) { + return request({ + url: '/business/certificateReport/detail', + method: 'post', + data, + }) +} + +// 删除 +export function deleteMeasureData(data: any) { + return request({ + url: '/business/certificateReport/batchDelete', + method: 'post', + data, + }) +} + diff --git a/src/api/business/subpackage/apply.ts b/src/api/business/subpackage/apply.ts index ad17a5a..c778f8e 100644 --- a/src/api/business/subpackage/apply.ts +++ b/src/api/business/subpackage/apply.ts @@ -94,3 +94,4 @@ data, }) } + diff --git a/src/api/system/tool.ts b/src/api/system/tool.ts index 6b2f5f2..8223e4c 100644 --- a/src/api/system/tool.ts +++ b/src/api/system/tool.ts @@ -67,19 +67,10 @@ data, }) } -// 原始记录模板/证书报告模板列表(分页) -export interface listParamsType { - templateNo: string // 编号 - templateName: string // 名称 - templateCreator: string // 负责人 - // createTime: string // 创建时间 - limit: number - offset: number - templateType: string -} -export function templatePage(data: listParamsType) { + +export function templatePage(data: any) { return request({ - url: `${prefix}/template/listPage?limit=${data.limit}&offset=${data.offset}`, + url: `${prefix}template/listPage?limit=${data.limit}&offset=${data.offset}`, method: 'post', data, }) @@ -87,7 +78,7 @@ // 原始记录模板/证书报告模板列表/详情( export function templatePageDetail(data: object) { return request({ - url: `${prefix}/template/detail`, + url: `${prefix}template/detail`, method: 'post', data, }) @@ -95,7 +86,7 @@ // 原始记录模板/证书报告模板列表删除 export function templateDelete(data: object) { return request({ - url: `${prefix}/template/delete`, + url: `${prefix}template/delete`, method: 'post', data, }) @@ -103,7 +94,7 @@ // 原始记录模板/证书报告模板列表新建 export function templateAdd(data: object) { return request({ - url: `${prefix}/template/add`, + url: `${prefix}template/add`, method: 'post', data, }) @@ -111,7 +102,7 @@ // 原始记录模板/证书报告模板列表更新 export function templateUpdate(data: object) { return request({ - url: `${prefix}/template/update`, + url: `${prefix}template/update`, method: 'post', data, }) @@ -119,7 +110,7 @@ // 原始记录模板/证书报告模板列表导出 export function templateExport(data: object) { return request({ - url: `${prefix}/template/listExport`, + url: `${prefix}template/listExport`, method: 'post', data, responseType: 'blob', diff --git a/src/components.d.ts b/src/components.d.ts index edc2e04..64cf608 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -46,6 +46,7 @@ ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] + MultiHeaderTable: typeof import('./components/MultiHeaderTable/index.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -67,6 +68,7 @@ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] + TableColumn: typeof import('./components/MultiHeaderTable/tableColumn.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] Trend: typeof import('./components/Trend/index.vue')['default'] WordOreview: typeof import('./components/filePreview/wordOreview.vue')['default'] diff --git a/src/components/MultiHeaderTable/index.vue b/src/components/MultiHeaderTable/index.vue new file mode 100644 index 0000000..85b8c88 --- /dev/null +++ b/src/components/MultiHeaderTable/index.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/src/components/MultiHeaderTable/tableColumn.vue b/src/components/MultiHeaderTable/tableColumn.vue new file mode 100644 index 0000000..2b87285 --- /dev/null +++ b/src/components/MultiHeaderTable/tableColumn.vue @@ -0,0 +1,147 @@ + + + diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue index e56f775..67092d3 100644 --- a/src/components/NormalTable/index.vue +++ b/src/components/NormalTable/index.vue @@ -3,6 +3,7 @@ import { ElTable } from 'element-plus' import { defineExpose, ref } from 'vue' import type { TableColumn } from './table_interface' +import showPhoto from '@/views/system/tool/showPhoto.vue' // ------------------定义props、 emit------------------- const props = defineProps({ @@ -212,8 +213,8 @@ {{ scope.row[column.value] }} {{ column.filter(scope.row) }}
- {{ scope.row }} -
+ +
diff --git a/src/utils/useCheckList.ts b/src/utils/useCheckList.ts new file mode 100644 index 0000000..c7782f0 --- /dev/null +++ b/src/utils/useCheckList.ts @@ -0,0 +1,73 @@ +import { ElMessage } from 'element-plus' +// import type { TableColumn } from '@/components/NormalTable/table_interface' + +/** + * 检查列表 + * @param list 要检查的表格数据(被依赖项如果满足某个条件就去检查依赖项,否则不检查依赖项) + * @param columns // 表头信息 + * @param tableTitle // 表格名称 + * @param depend // 依赖项 + * @param depended // 被依赖项 + * @param dependedValue // 被依赖项条件 + * @param requireLength // 要检查的表格数据长度是否大于0 + */ +export default function useCheckList(list: any, columns: any, tableTitle = '', depend?: string, depended?: string, dependedValue?: number | string, requireLength = false): boolean { + for (const prop of columns) { + for (let index = 0; index < list.length; index++) { + const item = list[index] + + if (depend && depended && item[depended] === dependedValue && !(`${item[prop.value]}`)) { // 被依赖项满足条件时需要检查 + ElMessage.warning(`请先完善 ${tableTitle} 第${index + 1}行中 ${prop.text} 字段`) + return false + } + else { + // 检查必填 + if (prop.required && (!(`${item[prop.value]}`) || `${item[prop.value]}` === 'null' || `${item[prop.value]}` === 'undefined' || item[prop.value] == undefined)) { + if (`${prop.belongStandardEquipment}` === '15') { // 小功率 + ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.message} ${prop.text} 字段不能为空`) + } + else { + ElMessage.warning(`请先完善 ${tableTitle} 第${index + 1}行中 ${prop.text} 字段`) + } + return false + } + } + + // 验证正则 + if (prop.reg && typeof prop.reg === 'function') { + if (prop.value === 'resolution') { // 分辨力特殊处理 + if (!prop.reg(item[prop.value])) { + ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.text} 不能大于1`) + return false + } + } + else { + if (!prop.reg(item[prop.value])) { + if (`${prop.belongStandardEquipment}` === '15') { // 小功率 + ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.message} ${prop.text} 字段不能为0`) + } + else if (`${prop.belongStandardEquipment}` === '17') { // S参数 + ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.text} 仅允许输入数字、字母、特殊字符`) + } + else { + ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.text} 字段输入不合法`) + } + return false + } + } + } + + if (prop.children && prop.children.length) { + if (!useCheckList(list, prop.children, tableTitle, depend, depended, dependedValue)) { + return false + } + } + } + } + + if (requireLength && !list.length) { + ElMessage.warning(`${tableTitle}表格数据不能为空`) + return false + } + return true +} diff --git a/src/api/business/lab/measureData.ts b/src/api/business/lab/measureData.ts new file mode 100644 index 0000000..ab3a56e --- /dev/null +++ b/src/api/business/lab/measureData.ts @@ -0,0 +1,78 @@ +/** + * 计量数据管理 +*/ +import request from '../../index' + +// 计量数据管理列表 +export function getMeasureDataList(data: { offset: number; limit: number }) { + return request({ + url: `/business/certificateReport/approval/listPage?offset=${data.offset}&limit=${data.limit}`, + method: 'post', + data, + }) +} + +// 点击下载模板后生成证书 +export function downLoadTemplate(data: any) { + return request({ + url: '/business/certificateReport/exportFile', + method: 'post', + data, + responseType: 'blob', + }) +} + +// 新增 +export function addMeasureData(data: any) { + return request({ + url: '/business/certificateReport/save', + method: 'post', + data, + }) +} + +// 草稿箱更新 +export function draftUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/draftUpdate', + method: 'post', + data, + }) +} + +// 未通过-驳回编辑 +export function failUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/failUpdate', + method: 'post', + data, + }) +} + +// 提交 +export function submit(data: { formId: string; processId?: string; id: string }) { + return request({ + url: '/business/certificateReport/submit', + method: 'post', + data, + }) +} + +// 详情 +export function getMeasureDataDetail(data: { id: string }) { + return request({ + url: '/business/certificateReport/detail', + method: 'post', + data, + }) +} + +// 删除 +export function deleteMeasureData(data: any) { + return request({ + url: '/business/certificateReport/batchDelete', + method: 'post', + data, + }) +} + diff --git a/src/api/business/subpackage/apply.ts b/src/api/business/subpackage/apply.ts index ad17a5a..c778f8e 100644 --- a/src/api/business/subpackage/apply.ts +++ b/src/api/business/subpackage/apply.ts @@ -94,3 +94,4 @@ data, }) } + diff --git a/src/api/system/tool.ts b/src/api/system/tool.ts index 6b2f5f2..8223e4c 100644 --- a/src/api/system/tool.ts +++ b/src/api/system/tool.ts @@ -67,19 +67,10 @@ data, }) } -// 原始记录模板/证书报告模板列表(分页) -export interface listParamsType { - templateNo: string // 编号 - templateName: string // 名称 - templateCreator: string // 负责人 - // createTime: string // 创建时间 - limit: number - offset: number - templateType: string -} -export function templatePage(data: listParamsType) { + +export function templatePage(data: any) { return request({ - url: `${prefix}/template/listPage?limit=${data.limit}&offset=${data.offset}`, + url: `${prefix}template/listPage?limit=${data.limit}&offset=${data.offset}`, method: 'post', data, }) @@ -87,7 +78,7 @@ // 原始记录模板/证书报告模板列表/详情( export function templatePageDetail(data: object) { return request({ - url: `${prefix}/template/detail`, + url: `${prefix}template/detail`, method: 'post', data, }) @@ -95,7 +86,7 @@ // 原始记录模板/证书报告模板列表删除 export function templateDelete(data: object) { return request({ - url: `${prefix}/template/delete`, + url: `${prefix}template/delete`, method: 'post', data, }) @@ -103,7 +94,7 @@ // 原始记录模板/证书报告模板列表新建 export function templateAdd(data: object) { return request({ - url: `${prefix}/template/add`, + url: `${prefix}template/add`, method: 'post', data, }) @@ -111,7 +102,7 @@ // 原始记录模板/证书报告模板列表更新 export function templateUpdate(data: object) { return request({ - url: `${prefix}/template/update`, + url: `${prefix}template/update`, method: 'post', data, }) @@ -119,7 +110,7 @@ // 原始记录模板/证书报告模板列表导出 export function templateExport(data: object) { return request({ - url: `${prefix}/template/listExport`, + url: `${prefix}template/listExport`, method: 'post', data, responseType: 'blob', diff --git a/src/components.d.ts b/src/components.d.ts index edc2e04..64cf608 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -46,6 +46,7 @@ ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] + MultiHeaderTable: typeof import('./components/MultiHeaderTable/index.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -67,6 +68,7 @@ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] + TableColumn: typeof import('./components/MultiHeaderTable/tableColumn.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] Trend: typeof import('./components/Trend/index.vue')['default'] WordOreview: typeof import('./components/filePreview/wordOreview.vue')['default'] diff --git a/src/components/MultiHeaderTable/index.vue b/src/components/MultiHeaderTable/index.vue new file mode 100644 index 0000000..85b8c88 --- /dev/null +++ b/src/components/MultiHeaderTable/index.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/src/components/MultiHeaderTable/tableColumn.vue b/src/components/MultiHeaderTable/tableColumn.vue new file mode 100644 index 0000000..2b87285 --- /dev/null +++ b/src/components/MultiHeaderTable/tableColumn.vue @@ -0,0 +1,147 @@ + + + diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue index e56f775..67092d3 100644 --- a/src/components/NormalTable/index.vue +++ b/src/components/NormalTable/index.vue @@ -3,6 +3,7 @@ import { ElTable } from 'element-plus' import { defineExpose, ref } from 'vue' import type { TableColumn } from './table_interface' +import showPhoto from '@/views/system/tool/showPhoto.vue' // ------------------定义props、 emit------------------- const props = defineProps({ @@ -212,8 +213,8 @@ {{ scope.row[column.value] }} {{ column.filter(scope.row) }}
- {{ scope.row }} -
+ +
diff --git a/src/utils/useCheckList.ts b/src/utils/useCheckList.ts new file mode 100644 index 0000000..c7782f0 --- /dev/null +++ b/src/utils/useCheckList.ts @@ -0,0 +1,73 @@ +import { ElMessage } from 'element-plus' +// import type { TableColumn } from '@/components/NormalTable/table_interface' + +/** + * 检查列表 + * @param list 要检查的表格数据(被依赖项如果满足某个条件就去检查依赖项,否则不检查依赖项) + * @param columns // 表头信息 + * @param tableTitle // 表格名称 + * @param depend // 依赖项 + * @param depended // 被依赖项 + * @param dependedValue // 被依赖项条件 + * @param requireLength // 要检查的表格数据长度是否大于0 + */ +export default function useCheckList(list: any, columns: any, tableTitle = '', depend?: string, depended?: string, dependedValue?: number | string, requireLength = false): boolean { + for (const prop of columns) { + for (let index = 0; index < list.length; index++) { + const item = list[index] + + if (depend && depended && item[depended] === dependedValue && !(`${item[prop.value]}`)) { // 被依赖项满足条件时需要检查 + ElMessage.warning(`请先完善 ${tableTitle} 第${index + 1}行中 ${prop.text} 字段`) + return false + } + else { + // 检查必填 + if (prop.required && (!(`${item[prop.value]}`) || `${item[prop.value]}` === 'null' || `${item[prop.value]}` === 'undefined' || item[prop.value] == undefined)) { + if (`${prop.belongStandardEquipment}` === '15') { // 小功率 + ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.message} ${prop.text} 字段不能为空`) + } + else { + ElMessage.warning(`请先完善 ${tableTitle} 第${index + 1}行中 ${prop.text} 字段`) + } + return false + } + } + + // 验证正则 + if (prop.reg && typeof prop.reg === 'function') { + if (prop.value === 'resolution') { // 分辨力特殊处理 + if (!prop.reg(item[prop.value])) { + ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.text} 不能大于1`) + return false + } + } + else { + if (!prop.reg(item[prop.value])) { + if (`${prop.belongStandardEquipment}` === '15') { // 小功率 + ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.message} ${prop.text} 字段不能为0`) + } + else if (`${prop.belongStandardEquipment}` === '17') { // S参数 + ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.text} 仅允许输入数字、字母、特殊字符`) + } + else { + ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.text} 字段输入不合法`) + } + return false + } + } + } + + if (prop.children && prop.children.length) { + if (!useCheckList(list, prop.children, tableTitle, depend, depended, dependedValue)) { + return false + } + } + } + } + + if (requireLength && !list.length) { + ElMessage.warning(`${tableTitle}表格数据不能为空`) + return false + } + return true +} diff --git a/src/views/business/lab/components/selectOrderSamplesDialog.vue b/src/views/business/lab/components/selectOrderSamplesDialog.vue index 4002f83..b004107 100644 --- a/src/views/business/lab/components/selectOrderSamplesDialog.vue +++ b/src/views/business/lab/components/selectOrderSamplesDialog.vue @@ -14,6 +14,7 @@ const loadingTable = ref(false) // loading const list = ref([]) // 表格参数 const tableRef = ref() +const isMulti = ref(true) // 是否多选默认为多选 const columns = ref([ { text: '被测样品名称', value: 'sampleName', align: 'center', required: true }, { text: '型号规格', value: 'sampleModel', align: 'center', required: true }, @@ -60,9 +61,10 @@ } // 初始化 -const initDialog = (orderIdParam: string) => { +const initDialog = (orderIdParam: string, isMultiParam = true) => { dialogFormVisible.value = true orderId.value = orderIdParam + isMulti.value = isMultiParam getList() } defineExpose({ initDialog }) @@ -78,7 +80,7 @@ :columns="columns" is-showmulti-select :list-loading="loadingTable" - :is-multi="true" + :is-multi="isMulti" :height="300" :pagination="false" @multi-select="handleSelectionChange" diff --git a/src/api/business/lab/measureData.ts b/src/api/business/lab/measureData.ts new file mode 100644 index 0000000..ab3a56e --- /dev/null +++ b/src/api/business/lab/measureData.ts @@ -0,0 +1,78 @@ +/** + * 计量数据管理 +*/ +import request from '../../index' + +// 计量数据管理列表 +export function getMeasureDataList(data: { offset: number; limit: number }) { + return request({ + url: `/business/certificateReport/approval/listPage?offset=${data.offset}&limit=${data.limit}`, + method: 'post', + data, + }) +} + +// 点击下载模板后生成证书 +export function downLoadTemplate(data: any) { + return request({ + url: '/business/certificateReport/exportFile', + method: 'post', + data, + responseType: 'blob', + }) +} + +// 新增 +export function addMeasureData(data: any) { + return request({ + url: '/business/certificateReport/save', + method: 'post', + data, + }) +} + +// 草稿箱更新 +export function draftUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/draftUpdate', + method: 'post', + data, + }) +} + +// 未通过-驳回编辑 +export function failUpdateMeasureData(data: any) { + return request({ + url: '/business/certificateReport/failUpdate', + method: 'post', + data, + }) +} + +// 提交 +export function submit(data: { formId: string; processId?: string; id: string }) { + return request({ + url: '/business/certificateReport/submit', + method: 'post', + data, + }) +} + +// 详情 +export function getMeasureDataDetail(data: { id: string }) { + return request({ + url: '/business/certificateReport/detail', + method: 'post', + data, + }) +} + +// 删除 +export function deleteMeasureData(data: any) { + return request({ + url: '/business/certificateReport/batchDelete', + method: 'post', + data, + }) +} + diff --git a/src/api/business/subpackage/apply.ts b/src/api/business/subpackage/apply.ts index ad17a5a..c778f8e 100644 --- a/src/api/business/subpackage/apply.ts +++ b/src/api/business/subpackage/apply.ts @@ -94,3 +94,4 @@ data, }) } + diff --git a/src/api/system/tool.ts b/src/api/system/tool.ts index 6b2f5f2..8223e4c 100644 --- a/src/api/system/tool.ts +++ b/src/api/system/tool.ts @@ -67,19 +67,10 @@ data, }) } -// 原始记录模板/证书报告模板列表(分页) -export interface listParamsType { - templateNo: string // 编号 - templateName: string // 名称 - templateCreator: string // 负责人 - // createTime: string // 创建时间 - limit: number - offset: number - templateType: string -} -export function templatePage(data: listParamsType) { + +export function templatePage(data: any) { return request({ - url: `${prefix}/template/listPage?limit=${data.limit}&offset=${data.offset}`, + url: `${prefix}template/listPage?limit=${data.limit}&offset=${data.offset}`, method: 'post', data, }) @@ -87,7 +78,7 @@ // 原始记录模板/证书报告模板列表/详情( export function templatePageDetail(data: object) { return request({ - url: `${prefix}/template/detail`, + url: `${prefix}template/detail`, method: 'post', data, }) @@ -95,7 +86,7 @@ // 原始记录模板/证书报告模板列表删除 export function templateDelete(data: object) { return request({ - url: `${prefix}/template/delete`, + url: `${prefix}template/delete`, method: 'post', data, }) @@ -103,7 +94,7 @@ // 原始记录模板/证书报告模板列表新建 export function templateAdd(data: object) { return request({ - url: `${prefix}/template/add`, + url: `${prefix}template/add`, method: 'post', data, }) @@ -111,7 +102,7 @@ // 原始记录模板/证书报告模板列表更新 export function templateUpdate(data: object) { return request({ - url: `${prefix}/template/update`, + url: `${prefix}template/update`, method: 'post', data, }) @@ -119,7 +110,7 @@ // 原始记录模板/证书报告模板列表导出 export function templateExport(data: object) { return request({ - url: `${prefix}/template/listExport`, + url: `${prefix}template/listExport`, method: 'post', data, responseType: 'blob', diff --git a/src/components.d.ts b/src/components.d.ts index edc2e04..64cf608 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -46,6 +46,7 @@ ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] LineChart: typeof import('./components/Echart/LineChart.vue')['default'] MeasureRecords: typeof import('./components/Sample/measureRecords.vue')['default'] + MultiHeaderTable: typeof import('./components/MultiHeaderTable/index.vue')['default'] NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] NodeWrapBan: typeof import('./components/workFlow/nodeWrapBan.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] @@ -67,6 +68,7 @@ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] + TableColumn: typeof import('./components/MultiHeaderTable/tableColumn.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] Trend: typeof import('./components/Trend/index.vue')['default'] WordOreview: typeof import('./components/filePreview/wordOreview.vue')['default'] diff --git a/src/components/MultiHeaderTable/index.vue b/src/components/MultiHeaderTable/index.vue new file mode 100644 index 0000000..85b8c88 --- /dev/null +++ b/src/components/MultiHeaderTable/index.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/src/components/MultiHeaderTable/tableColumn.vue b/src/components/MultiHeaderTable/tableColumn.vue new file mode 100644 index 0000000..2b87285 --- /dev/null +++ b/src/components/MultiHeaderTable/tableColumn.vue @@ -0,0 +1,147 @@ + + + diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue index e56f775..67092d3 100644 --- a/src/components/NormalTable/index.vue +++ b/src/components/NormalTable/index.vue @@ -3,6 +3,7 @@ import { ElTable } from 'element-plus' import { defineExpose, ref } from 'vue' import type { TableColumn } from './table_interface' +import showPhoto from '@/views/system/tool/showPhoto.vue' // ------------------定义props、 emit------------------- const props = defineProps({ @@ -212,8 +213,8 @@ {{ scope.row[column.value] }} {{ column.filter(scope.row) }}
- {{ scope.row }} -
+ +
diff --git a/src/utils/useCheckList.ts b/src/utils/useCheckList.ts new file mode 100644 index 0000000..c7782f0 --- /dev/null +++ b/src/utils/useCheckList.ts @@ -0,0 +1,73 @@ +import { ElMessage } from 'element-plus' +// import type { TableColumn } from '@/components/NormalTable/table_interface' + +/** + * 检查列表 + * @param list 要检查的表格数据(被依赖项如果满足某个条件就去检查依赖项,否则不检查依赖项) + * @param columns // 表头信息 + * @param tableTitle // 表格名称 + * @param depend // 依赖项 + * @param depended // 被依赖项 + * @param dependedValue // 被依赖项条件 + * @param requireLength // 要检查的表格数据长度是否大于0 + */ +export default function useCheckList(list: any, columns: any, tableTitle = '', depend?: string, depended?: string, dependedValue?: number | string, requireLength = false): boolean { + for (const prop of columns) { + for (let index = 0; index < list.length; index++) { + const item = list[index] + + if (depend && depended && item[depended] === dependedValue && !(`${item[prop.value]}`)) { // 被依赖项满足条件时需要检查 + ElMessage.warning(`请先完善 ${tableTitle} 第${index + 1}行中 ${prop.text} 字段`) + return false + } + else { + // 检查必填 + if (prop.required && (!(`${item[prop.value]}`) || `${item[prop.value]}` === 'null' || `${item[prop.value]}` === 'undefined' || item[prop.value] == undefined)) { + if (`${prop.belongStandardEquipment}` === '15') { // 小功率 + ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.message} ${prop.text} 字段不能为空`) + } + else { + ElMessage.warning(`请先完善 ${tableTitle} 第${index + 1}行中 ${prop.text} 字段`) + } + return false + } + } + + // 验证正则 + if (prop.reg && typeof prop.reg === 'function') { + if (prop.value === 'resolution') { // 分辨力特殊处理 + if (!prop.reg(item[prop.value])) { + ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.text} 不能大于1`) + return false + } + } + else { + if (!prop.reg(item[prop.value])) { + if (`${prop.belongStandardEquipment}` === '15') { // 小功率 + ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.message} ${prop.text} 字段不能为0`) + } + else if (`${prop.belongStandardEquipment}` === '17') { // S参数 + ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.text} 仅允许输入数字、字母、特殊字符`) + } + else { + ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.text} 字段输入不合法`) + } + return false + } + } + } + + if (prop.children && prop.children.length) { + if (!useCheckList(list, prop.children, tableTitle, depend, depended, dependedValue)) { + return false + } + } + } + } + + if (requireLength && !list.length) { + ElMessage.warning(`${tableTitle}表格数据不能为空`) + return false + } + return true +} diff --git a/src/views/business/lab/components/selectOrderSamplesDialog.vue b/src/views/business/lab/components/selectOrderSamplesDialog.vue index 4002f83..b004107 100644 --- a/src/views/business/lab/components/selectOrderSamplesDialog.vue +++ b/src/views/business/lab/components/selectOrderSamplesDialog.vue @@ -14,6 +14,7 @@ const loadingTable = ref(false) // loading const list = ref([]) // 表格参数 const tableRef = ref() +const isMulti = ref(true) // 是否多选默认为多选 const columns = ref([ { text: '被测样品名称', value: 'sampleName', align: 'center', required: true }, { text: '型号规格', value: 'sampleModel', align: 'center', required: true }, @@ -60,9 +61,10 @@ } // 初始化 -const initDialog = (orderIdParam: string) => { +const initDialog = (orderIdParam: string, isMultiParam = true) => { dialogFormVisible.value = true orderId.value = orderIdParam + isMulti.value = isMultiParam getList() } defineExpose({ initDialog }) @@ -78,7 +80,7 @@ :columns="columns" is-showmulti-select :list-loading="loadingTable" - :is-multi="true" + :is-multi="isMulti" :height="300" :pagination="false" @multi-select="handleSelectionChange" diff --git a/src/views/business/lab/components/selectReportTemplate.vue b/src/views/business/lab/components/selectReportTemplate.vue index 5c59693..ec36ef7 100644 --- a/src/views/business/lab/components/selectReportTemplate.vue +++ b/src/views/business/lab/components/selectReportTemplate.vue @@ -7,8 +7,9 @@ import type { typeofSign } from '@/views/system/tool/tool_interface' import { templatePage } from '@/api/system/tool' -const emits = defineEmits(['add']) +const emits = defineEmits(['confirm']) const dialogFormVisible = ref(false) // 控制弹窗显隐 +const createTime = ref() // 查询参数 const searchQuery = reactive({ templateNo: '', // 编号 @@ -18,31 +19,43 @@ createEndTime: '', limit: 5, offset: 1, - templateType: '', + certificationType: '0', ids: [] as string[], }) // 查询参数 const loadingTable = ref(false) // loading const list = ref([]) // 表格参数 const total = ref(0) const columns = ref([ - { text: '编号', value: 'templateNo', align: 'center', width: '180' }, - { text: '模板名称', value: 'templateName', align: 'center', width: '150' }, - { text: '模板负责人', value: 'templateCreator', align: 'center', width: '100' }, - { text: '创建时间', value: 'createTime', align: 'center', width: '250' }, - { text: '描述', value: 'templateDesc', align: 'center' }, + { text: '编号', value: 'templateNo', align: 'center', width: '160' }, + { text: '模板名称', value: 'templateName', align: 'center' }, + { text: '模板类型', value: 'templateTypeName', align: 'center', width: '100' }, + { text: '负责人', value: 'templateCreator', align: 'center', width: '100' }, + { text: '内容描述', value: 'templateDesc', align: 'center' }, + { text: '创建时间', value: 'createTime', align: 'center', width: '180' }, ]) const checkoutList = ref([]) // 多选选中参数 -// 获取类型 -const getType = async () => { - const res = await getDictByCode('templateType') - searchQuery.templateType = res.data.filter((item: typeofSign) => item.name === '证书报告模板')[0].value +// ---------------------------------------字典-------------------------------------------- +const templateTypeMap = ref([]) as any // 模板类型 +// 获取字典值 +async function getDict() { + // 模板类型 + const res = await getDictByCode('certificationType') + res.data.forEach((item: { value: string; name: string }) => { + templateTypeMap.value[`${item.value}`] = item.name + }) } +// ---------------------------------------------------------------------------------------------- // 获取数据列表 const getList = () => { loadingTable.value = true templatePage(searchQuery).then((res) => { if (res.code === 200) { - list.value = res.data.rows + list.value = res.data.rows.map((item: { certificationType: string }) => { + return { + ...item, + templateTypeName: `${item.certificationType}` ? templateTypeMap.value[item.certificationType] : item.certificationType, // 模板类型 + } + }) total.value = res.data.total } loadingTable.value = false @@ -74,7 +87,8 @@ searchQuery.createEndTime = '' searchQuery.limit = 5 searchQuery.offset = 1 - // searchQuery.templateType = '' // 类型不能变 + searchQuery.certificationType = '0' + createTime.value = '' searchQuery.ids = [] getList() } @@ -82,10 +96,10 @@ // 点击保存 const submitForm = () => { if (!checkoutList.value.length) { - ElMessage.warning('请选择证书报告模板') + ElMessage.warning('请选择证书模板') } else { - emits('add', checkoutList.value[0]) + emits('confirm', checkoutList.value[0]) dialogFormVisible.value = false } } @@ -103,15 +117,25 @@ // 初始化 const initDialog = () => { dialogFormVisible.value = true - getType().then((_) => { + getDict().then((_) => { getList() }) } +watch(() => createTime.value, (newVal) => { + if (newVal) { + searchQuery.createStartTime = newVal[0] + searchQuery.createEndTime = newVal[1] + } + else { + searchQuery.createStartTime = '' + searchQuery.createEndTime = '' + } +}) defineExpose({ initDialog })