+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+
+
+ 取消
+
+
+
+
+
+
diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue
index c129753..4d1b5c0 100644
--- a/src/views/business/lab/deptMeasure/deptMeasureList.vue
+++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue
@@ -1,13 +1,348 @@
-
- 部门检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 任务分发
+
+
+ 退回
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue
new file mode 100644
index 0000000..e572d09
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalAdd.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+ 提交
+
+
+ 打印
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue
new file mode 100644
index 0000000..98230be
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalList.vue
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 详情
+
+
+ 删除
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue
index 3ba89c5..800419d 100644
--- a/src/views/business/lab/myMeasure/myMeasureList.vue
+++ b/src/views/business/lab/myMeasure/myMeasureList.vue
@@ -1,13 +1,373 @@
-
- 我的检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 收入
+
+
+ 退回
+
+
+ 检测完成
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue
new file mode 100644
index 0000000..a598765
--- /dev/null
+++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 原始记录
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
new file mode 100644
index 0000000..97bea6f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
@@ -0,0 +1,664 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
new file mode 100644
index 0000000..da533b7
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
@@ -0,0 +1,1266 @@
+
+
+
+
+
+
+
+ {{ item }}
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 无
+
+
+ {{ formInline.minioFileName === '' ? '上传' : '更换附件' }}
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 审批人:{{ activity.name }}
+ 审批意见:{{ activity.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
new file mode 100644
index 0000000..5bf6f0f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
new file mode 100644
index 0000000..5c3eb39
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
@@ -0,0 +1,373 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue
index 3a3c09c..61ad34d 100644
--- a/src/views/business/schedule/task/components/chooseLab.vue
+++ b/src/views/business/schedule/task/components/chooseLab.vue
@@ -4,7 +4,7 @@
import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface'
import type { TableColumn } from '@/components/NormalTable/table_interface'
-const emits = defineEmits(['changeVisible', 'confirmCheckout'])
+const emits = defineEmits(['confirmCheckout'])
// 是否多选
const multi = ref(false)
const dialogVisible = ref(false)
diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue
index 39817f4..6cbdf10 100644
--- a/src/views/business/schedule/task/components/processNode.vue
+++ b/src/views/business/schedule/task/components/processNode.vue
@@ -149,7 +149,7 @@
-
+
diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts
index c9b3d63..7b538cf 100644
--- a/src/views/business/schedule/task/task-interface.ts
+++ b/src/views/business/schedule/task/task-interface.ts
@@ -9,7 +9,9 @@
customerName: string // 委托方名称
isUrgent: string // 是否加急
sampleAttr: string // 样品属性
- formId: string
+ sendState: string // 分发状态
+ outState: string // 超期状态
+ formId: string // formId
limit: number
offset: number
}
@@ -61,4 +63,5 @@
// 样品检测信息
export interface ISampleMeasure extends ISampleEdit {
orderId: string // 委托单id
+ certifications: string // 证书类别
}
diff --git a/src/api/business/task.ts b/src/api/business/task.ts
index a337c7f..80d91b7 100644
--- a/src/api/business/task.ts
+++ b/src/api/business/task.ts
@@ -1,5 +1,5 @@
/**
- * 任务分发
+ * 任务分发,实验室检测
*/
import request from '../index'
import type { ITaskQuery } from '@/views/business/schedule/task/task-interface'
@@ -25,7 +25,52 @@
}
// 检测流程配置
-export function interchangeListTake(data: { id: string; scheduleId: string }) {
+export function setMeasureProcess(data: { id: string; scheduleId: string }) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 退回
+export function rollbackTask(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 实验室收入样品
+export function takeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量收入样品
+export function batchTakeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 检完样品
+export function overSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量检完样品
+export function batchOverSample(data) {
return request({
url: `${prefix}/schedule/task/setSchedule`,
method: 'post',
diff --git a/src/api/device/standard.ts b/src/api/device/standard.ts
index 6e6fdfa..064780f 100644
--- a/src/api/device/standard.ts
+++ b/src/api/device/standard.ts
@@ -73,6 +73,15 @@
})
}
+// 删除申请列表信息
+export function getOperateDelete(data: object) {
+ return request({
+ url: '/standard/approval/operate/delete',
+ method: 'post',
+ data,
+ })
+}
+
// 新建申请列表信息
export function getStandardLisAdd(data: object) {
return request({
@@ -127,3 +136,86 @@
})
}
+// 批量添加标准装置底部计量人员
+export function setBatchAdd(data: object) {
+ return request({
+ url: '/meter/standard/user/batchAdd',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-计量人员列表(分页)
+export function getuserListPage(data: object) {
+ return request({
+ url: '/meter/standard/user/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-删除计量人员
+export function getuserDelete(data: object) {
+ return request({
+ url: '/meter/standard/user/delete',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-配套设备列表(分页)
+export function getEquipmentListPage(data: object) {
+ return request({
+ url: '/meter/standard/equipment/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加标准配套设备
+export function getEquipmenteAdd(data: object) {
+ return request({
+ url: '/meter/standard/equipment/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加检定规程
+export function getRegulationAdd(data: object) {
+ return request({
+ url: '/meter/standard/regulation/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-检定规程列表(分页)
+export function getRegulationListPage(data: object) {
+ return request({
+ url: '/meter/standard/regulation/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置导出
+export function getExportExcel(data: object) {
+ return request({
+ url: '/meter/standard/exportExcel',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
+// 标准装置申请导出
+export function getExportList(data: object) {
+ return request({
+ url: '/standard/exportList',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts
index 8bfe87e..50cf032 100644
--- a/src/api/measure/person.ts
+++ b/src/api/measure/person.ts
@@ -9,6 +9,14 @@
data,
})
}
+// 计量人员列表-不分页
+export function getStaffListAll(data: { deptId: string; name: string }) {
+ return request({
+ url: '/staff/getUserList',
+ method: 'post',
+ data,
+ })
+}
// 人员详细信息
export function getStaffDetail(data: object) {
return request({
diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg
new file mode 100644
index 0000000..f39dba8
--- /dev/null
+++ b/src/assets/icons/icon-scan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png
new file mode 100644
index 0000000..a56bf3e
--- /dev/null
+++ b/src/assets/images/scan.png
Binary files differ
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 67d321f..01d46ac 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -136,3 +136,10 @@
// cursor: text;
// }
}
+
+.float-radio-buttons {
+ position: fixed;
+ top: 67px;
+ right: 15px;
+ z-index: 999;
+}
diff --git a/src/components.d.ts b/src/components.d.ts
index 0ca1396..227585d 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -18,8 +18,11 @@
AuthAll: typeof import('./components/AuthAll/index.vue')['default']
BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default']
BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default']
+ BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default']
BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default']
BenchCol: typeof import('./components/benchCol/index.vue')['default']
+ CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default']
+ CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default']
ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default']
CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default']
Copyright: typeof import('./components/Copyright/index.vue')['default']
@@ -36,6 +39,7 @@
ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default']
ImageUpload: typeof import('./components/ImageUpload/index.vue')['default']
LineChart: typeof import('./components/Echart/LineChart.vue')['default']
+ MeasureRecords: typeof import('./components/Sample/measureRecords.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']
@@ -47,11 +51,13 @@
QrDialog: typeof import('./components/QrDialog/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
+ ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default']
SearchArea: typeof import('./components/SearchArea/index.vue')['default']
SearchBar: typeof import('./components/SearchBar/index.vue')['default']
SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default']
SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default']
SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default']
+ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default']
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue
new file mode 100644
index 0000000..0b7d7e8
--- /dev/null
+++ b/src/components/BarCodeBind/index.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个条码{{ list.length > 1 ? ',请选择要绑定的条码。' : '' }}
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue
new file mode 100644
index 0000000..16c1311
--- /dev/null
+++ b/src/components/Sample/certificationMonitor.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue
new file mode 100644
index 0000000..a694ce6
--- /dev/null
+++ b/src/components/Sample/certificationRecords.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue
new file mode 100644
index 0000000..b88e552
--- /dev/null
+++ b/src/components/Sample/measureRecords.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue
new file mode 100644
index 0000000..4e160a5
--- /dev/null
+++ b/src/components/ScanSampleDialog/index.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个样品{{ list.length > 1 ? ',请移除不需要绑定的样品。' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts
new file mode 100644
index 0000000..1c3aa33
--- /dev/null
+++ b/src/components/ScanSampleDialog/scan-interface.ts
@@ -0,0 +1,12 @@
+export interface ISampleScan {
+ sampleId?: string // 样品id
+ sampleNo: string // 样品编号
+ sampleName: string // 样品名称
+ sampleModel: string // 样品型号
+ manufacturingNo: string // 出厂编号
+ customerNo: string // 委托方代码
+ customerName: string // 委托方名称
+ orderId: string // 委托书id
+ orderNo: string // 委托书编号
+ labelBind: string // 标签绑定
+}
diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue
new file mode 100644
index 0000000..be9415b
--- /dev/null
+++ b/src/components/dialog/selectStaffDialog.vue
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (listQuery.offset - 1) * listQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
+
+
diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts
index a2fd12e..6a14d78 100644
--- a/src/router/modules/business.ts
+++ b/src/router/modules/business.ts
@@ -96,7 +96,7 @@
{
path: 'receipt/:type/:id?',
name: 'InterchangeReceiptDetail',
- component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'),
+ component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'),
meta: {
title: '设备交接单详情',
icon: 'ep:key',
@@ -196,6 +196,60 @@
activeMenu: '/lab/deptMeasureList',
},
},
+ {
+ path: 'reportOnCredentialsApproval',
+ name: 'ReportOnCredentialsApproval',
+ component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'),
+ meta: {
+ title: '证书报告',
+ icon: 'ep:key',
+ auth: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'reportOnCredentialsApproval/:type/:id?',
+ name: 'reportOnCredentialsAdd',
+ component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'),
+ meta: {
+ title: '证书报告详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'primitiveLogList',
+ name: 'PrimitiveLogList',
+ component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'),
+ meta: {
+ title: '原始记录',
+ icon: 'ep:key',
+ auth: '/lab/primitiveLogList',
+ },
+ },
+ {
+ path: 'environmentalList',
+ name: 'EnvironmentalList',
+ component: () => import('@/views/business/lab/environmental/environmentalList.vue'),
+ meta: {
+ title: '环境记录单',
+ icon: 'ep:key',
+ auth: '/lab/environmentalList',
+ },
+ },
+ {
+ path: 'environmentalList/:type/:id?',
+ name: 'EnvironmentalAdd',
+ component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'),
+ meta: {
+ title: '环境记录单详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/environmentalList',
+ },
+ },
],
},
]
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
index 993d66c..cbc5c47 100644
--- a/src/router/modules/device.ts
+++ b/src/router/modules/device.ts
@@ -238,7 +238,7 @@
},
},
{
- path: ':type/:id?',
+ path: 'Apply:type/:id?',
name: 'standardListAdd',
component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'),
meta: {
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 1264d2e..cfcbfaf 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -72,6 +72,7 @@
username: string
password: string
kaptcha: string
+ sid: string
}) {
return new Promise
((resolve, reject) => {
doLogin(data).then((res) => {
diff --git a/src/views/business/bench/bench.vue b/src/views/business/bench/bench.vue
index 1f5af41..fad9269 100644
--- a/src/views/business/bench/bench.vue
+++ b/src/views/business/bench/bench.vue
@@ -243,7 +243,7 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+
+
+ 取消
+
+
+
+
+
+
diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue
index c129753..4d1b5c0 100644
--- a/src/views/business/lab/deptMeasure/deptMeasureList.vue
+++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue
@@ -1,13 +1,348 @@
-
- 部门检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 任务分发
+
+
+ 退回
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue
new file mode 100644
index 0000000..e572d09
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalAdd.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+ 提交
+
+
+ 打印
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue
new file mode 100644
index 0000000..98230be
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalList.vue
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 详情
+
+
+ 删除
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue
index 3ba89c5..800419d 100644
--- a/src/views/business/lab/myMeasure/myMeasureList.vue
+++ b/src/views/business/lab/myMeasure/myMeasureList.vue
@@ -1,13 +1,373 @@
-
- 我的检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 收入
+
+
+ 退回
+
+
+ 检测完成
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue
new file mode 100644
index 0000000..a598765
--- /dev/null
+++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 原始记录
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
new file mode 100644
index 0000000..97bea6f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
@@ -0,0 +1,664 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
new file mode 100644
index 0000000..da533b7
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
@@ -0,0 +1,1266 @@
+
+
+
+
+
+
+
+ {{ item }}
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 无
+
+
+ {{ formInline.minioFileName === '' ? '上传' : '更换附件' }}
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 审批人:{{ activity.name }}
+ 审批意见:{{ activity.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
new file mode 100644
index 0000000..5bf6f0f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
new file mode 100644
index 0000000..5c3eb39
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
@@ -0,0 +1,373 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue
index 3a3c09c..61ad34d 100644
--- a/src/views/business/schedule/task/components/chooseLab.vue
+++ b/src/views/business/schedule/task/components/chooseLab.vue
@@ -4,7 +4,7 @@
import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface'
import type { TableColumn } from '@/components/NormalTable/table_interface'
-const emits = defineEmits(['changeVisible', 'confirmCheckout'])
+const emits = defineEmits(['confirmCheckout'])
// 是否多选
const multi = ref(false)
const dialogVisible = ref(false)
diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue
index 39817f4..6cbdf10 100644
--- a/src/views/business/schedule/task/components/processNode.vue
+++ b/src/views/business/schedule/task/components/processNode.vue
@@ -149,7 +149,7 @@
-
+
diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts
index c9b3d63..7b538cf 100644
--- a/src/views/business/schedule/task/task-interface.ts
+++ b/src/views/business/schedule/task/task-interface.ts
@@ -9,7 +9,9 @@
customerName: string // 委托方名称
isUrgent: string // 是否加急
sampleAttr: string // 样品属性
- formId: string
+ sendState: string // 分发状态
+ outState: string // 超期状态
+ formId: string // formId
limit: number
offset: number
}
@@ -61,4 +63,5 @@
// 样品检测信息
export interface ISampleMeasure extends ISampleEdit {
orderId: string // 委托单id
+ certifications: string // 证书类别
}
diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue
index c8331c1..465b2e7 100644
--- a/src/views/business/schedule/task/taskEdit.vue
+++ b/src/views/business/schedule/task/taskEdit.vue
@@ -64,6 +64,7 @@
minioFileName: '', // 说明书
labelBind: '', // 标签绑定
mesureType: '', // 检定方式
+ certifications: '',
})
const ruleFormRef = ref
()
@@ -137,7 +138,7 @@
},
]
-const currentMenu = ref('检定记录')
+const currentMenu = ref('证书监控')
const currentMenuObj = computed(() => {
return menu.find(item => item.name === currentMenu.value)
})
@@ -224,6 +225,7 @@
measureResultCode: 'bhg',
deliverer: '张三',
delivererTel: '156254577545',
+ certifications: '1',
}
// for (const item of menu) {
// item.searchFunc()
@@ -587,15 +589,26 @@
-
+
-
- {{ item.name }}
+
+ 证书监控
+
+
+ 检定记录
+
+
+ 检定证书
-
+
+
+
+
+
+
diff --git a/src/api/business/task.ts b/src/api/business/task.ts
index a337c7f..80d91b7 100644
--- a/src/api/business/task.ts
+++ b/src/api/business/task.ts
@@ -1,5 +1,5 @@
/**
- * 任务分发
+ * 任务分发,实验室检测
*/
import request from '../index'
import type { ITaskQuery } from '@/views/business/schedule/task/task-interface'
@@ -25,7 +25,52 @@
}
// 检测流程配置
-export function interchangeListTake(data: { id: string; scheduleId: string }) {
+export function setMeasureProcess(data: { id: string; scheduleId: string }) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 退回
+export function rollbackTask(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 实验室收入样品
+export function takeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量收入样品
+export function batchTakeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 检完样品
+export function overSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量检完样品
+export function batchOverSample(data) {
return request({
url: `${prefix}/schedule/task/setSchedule`,
method: 'post',
diff --git a/src/api/device/standard.ts b/src/api/device/standard.ts
index 6e6fdfa..064780f 100644
--- a/src/api/device/standard.ts
+++ b/src/api/device/standard.ts
@@ -73,6 +73,15 @@
})
}
+// 删除申请列表信息
+export function getOperateDelete(data: object) {
+ return request({
+ url: '/standard/approval/operate/delete',
+ method: 'post',
+ data,
+ })
+}
+
// 新建申请列表信息
export function getStandardLisAdd(data: object) {
return request({
@@ -127,3 +136,86 @@
})
}
+// 批量添加标准装置底部计量人员
+export function setBatchAdd(data: object) {
+ return request({
+ url: '/meter/standard/user/batchAdd',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-计量人员列表(分页)
+export function getuserListPage(data: object) {
+ return request({
+ url: '/meter/standard/user/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-删除计量人员
+export function getuserDelete(data: object) {
+ return request({
+ url: '/meter/standard/user/delete',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-配套设备列表(分页)
+export function getEquipmentListPage(data: object) {
+ return request({
+ url: '/meter/standard/equipment/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加标准配套设备
+export function getEquipmenteAdd(data: object) {
+ return request({
+ url: '/meter/standard/equipment/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加检定规程
+export function getRegulationAdd(data: object) {
+ return request({
+ url: '/meter/standard/regulation/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-检定规程列表(分页)
+export function getRegulationListPage(data: object) {
+ return request({
+ url: '/meter/standard/regulation/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置导出
+export function getExportExcel(data: object) {
+ return request({
+ url: '/meter/standard/exportExcel',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
+// 标准装置申请导出
+export function getExportList(data: object) {
+ return request({
+ url: '/standard/exportList',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts
index 8bfe87e..50cf032 100644
--- a/src/api/measure/person.ts
+++ b/src/api/measure/person.ts
@@ -9,6 +9,14 @@
data,
})
}
+// 计量人员列表-不分页
+export function getStaffListAll(data: { deptId: string; name: string }) {
+ return request({
+ url: '/staff/getUserList',
+ method: 'post',
+ data,
+ })
+}
// 人员详细信息
export function getStaffDetail(data: object) {
return request({
diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg
new file mode 100644
index 0000000..f39dba8
--- /dev/null
+++ b/src/assets/icons/icon-scan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png
new file mode 100644
index 0000000..a56bf3e
--- /dev/null
+++ b/src/assets/images/scan.png
Binary files differ
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 67d321f..01d46ac 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -136,3 +136,10 @@
// cursor: text;
// }
}
+
+.float-radio-buttons {
+ position: fixed;
+ top: 67px;
+ right: 15px;
+ z-index: 999;
+}
diff --git a/src/components.d.ts b/src/components.d.ts
index 0ca1396..227585d 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -18,8 +18,11 @@
AuthAll: typeof import('./components/AuthAll/index.vue')['default']
BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default']
BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default']
+ BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default']
BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default']
BenchCol: typeof import('./components/benchCol/index.vue')['default']
+ CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default']
+ CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default']
ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default']
CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default']
Copyright: typeof import('./components/Copyright/index.vue')['default']
@@ -36,6 +39,7 @@
ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default']
ImageUpload: typeof import('./components/ImageUpload/index.vue')['default']
LineChart: typeof import('./components/Echart/LineChart.vue')['default']
+ MeasureRecords: typeof import('./components/Sample/measureRecords.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']
@@ -47,11 +51,13 @@
QrDialog: typeof import('./components/QrDialog/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
+ ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default']
SearchArea: typeof import('./components/SearchArea/index.vue')['default']
SearchBar: typeof import('./components/SearchBar/index.vue')['default']
SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default']
SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default']
SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default']
+ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default']
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue
new file mode 100644
index 0000000..0b7d7e8
--- /dev/null
+++ b/src/components/BarCodeBind/index.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个条码{{ list.length > 1 ? ',请选择要绑定的条码。' : '' }}
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue
new file mode 100644
index 0000000..16c1311
--- /dev/null
+++ b/src/components/Sample/certificationMonitor.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue
new file mode 100644
index 0000000..a694ce6
--- /dev/null
+++ b/src/components/Sample/certificationRecords.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue
new file mode 100644
index 0000000..b88e552
--- /dev/null
+++ b/src/components/Sample/measureRecords.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue
new file mode 100644
index 0000000..4e160a5
--- /dev/null
+++ b/src/components/ScanSampleDialog/index.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个样品{{ list.length > 1 ? ',请移除不需要绑定的样品。' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts
new file mode 100644
index 0000000..1c3aa33
--- /dev/null
+++ b/src/components/ScanSampleDialog/scan-interface.ts
@@ -0,0 +1,12 @@
+export interface ISampleScan {
+ sampleId?: string // 样品id
+ sampleNo: string // 样品编号
+ sampleName: string // 样品名称
+ sampleModel: string // 样品型号
+ manufacturingNo: string // 出厂编号
+ customerNo: string // 委托方代码
+ customerName: string // 委托方名称
+ orderId: string // 委托书id
+ orderNo: string // 委托书编号
+ labelBind: string // 标签绑定
+}
diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue
new file mode 100644
index 0000000..be9415b
--- /dev/null
+++ b/src/components/dialog/selectStaffDialog.vue
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (listQuery.offset - 1) * listQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
+
+
diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts
index a2fd12e..6a14d78 100644
--- a/src/router/modules/business.ts
+++ b/src/router/modules/business.ts
@@ -96,7 +96,7 @@
{
path: 'receipt/:type/:id?',
name: 'InterchangeReceiptDetail',
- component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'),
+ component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'),
meta: {
title: '设备交接单详情',
icon: 'ep:key',
@@ -196,6 +196,60 @@
activeMenu: '/lab/deptMeasureList',
},
},
+ {
+ path: 'reportOnCredentialsApproval',
+ name: 'ReportOnCredentialsApproval',
+ component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'),
+ meta: {
+ title: '证书报告',
+ icon: 'ep:key',
+ auth: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'reportOnCredentialsApproval/:type/:id?',
+ name: 'reportOnCredentialsAdd',
+ component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'),
+ meta: {
+ title: '证书报告详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'primitiveLogList',
+ name: 'PrimitiveLogList',
+ component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'),
+ meta: {
+ title: '原始记录',
+ icon: 'ep:key',
+ auth: '/lab/primitiveLogList',
+ },
+ },
+ {
+ path: 'environmentalList',
+ name: 'EnvironmentalList',
+ component: () => import('@/views/business/lab/environmental/environmentalList.vue'),
+ meta: {
+ title: '环境记录单',
+ icon: 'ep:key',
+ auth: '/lab/environmentalList',
+ },
+ },
+ {
+ path: 'environmentalList/:type/:id?',
+ name: 'EnvironmentalAdd',
+ component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'),
+ meta: {
+ title: '环境记录单详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/environmentalList',
+ },
+ },
],
},
]
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
index 993d66c..cbc5c47 100644
--- a/src/router/modules/device.ts
+++ b/src/router/modules/device.ts
@@ -238,7 +238,7 @@
},
},
{
- path: ':type/:id?',
+ path: 'Apply:type/:id?',
name: 'standardListAdd',
component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'),
meta: {
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 1264d2e..cfcbfaf 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -72,6 +72,7 @@
username: string
password: string
kaptcha: string
+ sid: string
}) {
return new Promise((resolve, reject) => {
doLogin(data).then((res) => {
diff --git a/src/views/business/bench/bench.vue b/src/views/business/bench/bench.vue
index 1f5af41..fad9269 100644
--- a/src/views/business/bench/bench.vue
+++ b/src/views/business/bench/bench.vue
@@ -243,7 +243,7 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+
+
+ 取消
+
+
+
+
+
+
diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue
index c129753..4d1b5c0 100644
--- a/src/views/business/lab/deptMeasure/deptMeasureList.vue
+++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue
@@ -1,13 +1,348 @@
-
- 部门检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 任务分发
+
+
+ 退回
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue
new file mode 100644
index 0000000..e572d09
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalAdd.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+ 提交
+
+
+ 打印
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue
new file mode 100644
index 0000000..98230be
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalList.vue
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 详情
+
+
+ 删除
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue
index 3ba89c5..800419d 100644
--- a/src/views/business/lab/myMeasure/myMeasureList.vue
+++ b/src/views/business/lab/myMeasure/myMeasureList.vue
@@ -1,13 +1,373 @@
-
- 我的检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 收入
+
+
+ 退回
+
+
+ 检测完成
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue
new file mode 100644
index 0000000..a598765
--- /dev/null
+++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 原始记录
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
new file mode 100644
index 0000000..97bea6f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
@@ -0,0 +1,664 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
new file mode 100644
index 0000000..da533b7
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
@@ -0,0 +1,1266 @@
+
+
+
+
+
+
+
+ {{ item }}
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 无
+
+
+ {{ formInline.minioFileName === '' ? '上传' : '更换附件' }}
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 审批人:{{ activity.name }}
+ 审批意见:{{ activity.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
new file mode 100644
index 0000000..5bf6f0f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
new file mode 100644
index 0000000..5c3eb39
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
@@ -0,0 +1,373 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue
index 3a3c09c..61ad34d 100644
--- a/src/views/business/schedule/task/components/chooseLab.vue
+++ b/src/views/business/schedule/task/components/chooseLab.vue
@@ -4,7 +4,7 @@
import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface'
import type { TableColumn } from '@/components/NormalTable/table_interface'
-const emits = defineEmits(['changeVisible', 'confirmCheckout'])
+const emits = defineEmits(['confirmCheckout'])
// 是否多选
const multi = ref(false)
const dialogVisible = ref(false)
diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue
index 39817f4..6cbdf10 100644
--- a/src/views/business/schedule/task/components/processNode.vue
+++ b/src/views/business/schedule/task/components/processNode.vue
@@ -149,7 +149,7 @@
-
+
diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts
index c9b3d63..7b538cf 100644
--- a/src/views/business/schedule/task/task-interface.ts
+++ b/src/views/business/schedule/task/task-interface.ts
@@ -9,7 +9,9 @@
customerName: string // 委托方名称
isUrgent: string // 是否加急
sampleAttr: string // 样品属性
- formId: string
+ sendState: string // 分发状态
+ outState: string // 超期状态
+ formId: string // formId
limit: number
offset: number
}
@@ -61,4 +63,5 @@
// 样品检测信息
export interface ISampleMeasure extends ISampleEdit {
orderId: string // 委托单id
+ certifications: string // 证书类别
}
diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue
index c8331c1..465b2e7 100644
--- a/src/views/business/schedule/task/taskEdit.vue
+++ b/src/views/business/schedule/task/taskEdit.vue
@@ -64,6 +64,7 @@
minioFileName: '', // 说明书
labelBind: '', // 标签绑定
mesureType: '', // 检定方式
+ certifications: '',
})
const ruleFormRef = ref
()
@@ -137,7 +138,7 @@
},
]
-const currentMenu = ref('检定记录')
+const currentMenu = ref('证书监控')
const currentMenuObj = computed(() => {
return menu.find(item => item.name === currentMenu.value)
})
@@ -224,6 +225,7 @@
measureResultCode: 'bhg',
deliverer: '张三',
delivererTel: '156254577545',
+ certifications: '1',
}
// for (const item of menu) {
// item.searchFunc()
@@ -587,15 +589,26 @@
-
+
-
- {{ item.name }}
+
+ 证书监控
+
+
+ 检定记录
+
+
+ 检定证书
-
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue
index 663b571..799a420 100644
--- a/src/views/business/schedule/task/taskList.vue
+++ b/src/views/business/schedule/task/taskList.vue
@@ -5,6 +5,7 @@
import { ElLoading, ElMessage } from 'element-plus'
import type { ITaskList, ITaskQuery } from './task-interface'
import DistributeDialog from './components/distributeDialog.vue'
+import BarCodeBind from '@/components/BarCodeBind/index.vue'
import type { TableColumn } from '@/components/NormalTable/table_interface'
import { printJSON } from '@/utils/printUtils'
import { exportFile } from '@/utils/exportUtils'
@@ -13,6 +14,14 @@
import type { dictType } from '@/global'
const { proxy } = getCurrentInstance() as any
const $router = useRouter()
+// 右上角按钮
+const menus = [
+ { name: '待分发', value: 'sendState;0' },
+ { name: '检测中', value: 'sendState;1' },
+ { name: '检测完', value: 'sendState;2' },
+ { name: '超期样品', value: 'outState;1' },
+]
+const currentMenu = ref('sendState;0') // 当前选中状态
// 查询条件
const timeRange = ref<[DateModelType, DateModelType]>(['', ''])
const listQuery: Ref = ref({
@@ -25,6 +34,8 @@
sampleAttr: '', // 样品属性
startTime: '', // 应检完时间-开始
endTime: '', // 应检完时间-结束
+ sendState: '', // 分发状态
+ outState: '', // 超期状态
formId: 'jlglsygfsp', // 任务分发formId
offset: 1,
limit: 20,
@@ -33,7 +44,7 @@
const sampleAttrList = ref([]) // 样品属性列表
function getDict() {
// 获取样品属性
- getDictByCode('sampleAttr').then((response) => {
+ getDictByCode('sampleBelong').then((response) => {
sampleAttrList.value = response.data
})
}
@@ -53,7 +64,6 @@
{ text: '样品属性', value: 'sampleAttrName', align: 'center' },
{ text: '当前检定环节', value: 'currentMeasureStateName', align: 'center' },
{ text: '证书出具', value: 'certificationState', align: 'center', filter: (row: ITaskList) => { return `${row.currentCertifications}/${row.requireCertifications}` } },
- { text: '标签信息', value: 'labelBind', align: 'center' },
{ text: '分发性质', value: 'distributeState', align: 'center', width: '90px' },
])
// 表格数据
@@ -78,6 +88,7 @@
{ orderId: '1', sampleNo: '1yp123457', sampleName: '压力表', orderNo: 'wtd123456', customerNo: 'kh123456', customerName: '北京无线电测量研究所', isUrgent: '0', sampleAttr: '1', sampleAttrName: '客户样品', sampleModel: 'JBT-011', manufacturingNo: '24432231124', requireOverTime: '2023-02-01', sampleId: '1', currentMeasureState: '1', currentMeasureStateName: '待分配', currentCertifications: 0, requireCertifications: 0, labelBind: '', distributeState: '2', distributeStateName: '退回分发' },
]
loadingTable.value = false
+ console.log(listQuery.value)
// getTaskList(listQuery.value).then((response) => {
// list.value = response.data.rows
// total.value = parseInt(response.data.total)
@@ -89,17 +100,6 @@
checkoutList.value = e.map((item: { id: string }) => item.id)
}
-// 点击详情
-const handleDetail = (row: ITaskList) => {
- $router.push(`/schedule/task/distribute/${row.sampleId}`)
-}
-
-// 点击分发, 弹窗
-const distributeDialogRef = ref()
-const handleDistribute = (row: ITaskList) => {
- distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
-}
-
// 点击搜索
const searchList = () => {
fetchData(true)
@@ -115,11 +115,31 @@
isUrgent: '', // 是否加急
sampleAttr: '', // 样品属性
formId: 'jlglsygfsp',
+ sendState: '1', // 分发状态
+ outState: '', // 超期状态
offset: 1,
limit: 20,
}
}
+// 点击详情
+const handleDetail = (row: ITaskList) => {
+ $router.push(`/schedule/task/distribute/${row.sampleId}`)
+}
+// 点击分发, 弹窗
+const distributeDialogRef = ref()
+const handleDistribute = (row: ITaskList) => {
+ distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
+}
+// 点击标签绑定
+const barCodeBind = ref()
+const bindLabel = (row: ITaskList) => {
+ barCodeBind.value.initDialog(row.sampleId)
+}
+// 标签绑定完成
+const bindLabelOver = () => {
+ searchList()
+}
// 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写
const changePage = (val: { size?: number; page?: number }) => {
if (val && val.size) {
@@ -178,11 +198,30 @@
}
}
-fetchData(true)
+// 选择按钮变更
+watch(currentMenu, (val: string) => {
+ const vals = val.split(';')
+ if (vals.length > 1) {
+ listQuery.value.sendState = ''
+ listQuery.value.outState = ''
+ listQuery.value[vals[0] as 'sendState' | 'outState'] = vals[1]
+ }
+ fetchData(false)
+})
+
+fetchData(false)
+
+
+
+
+ {{ item.name }}
+
+
+
详情
-
+
标签绑定
-
+
分发
+
+
+
diff --git a/src/api/business/task.ts b/src/api/business/task.ts
index a337c7f..80d91b7 100644
--- a/src/api/business/task.ts
+++ b/src/api/business/task.ts
@@ -1,5 +1,5 @@
/**
- * 任务分发
+ * 任务分发,实验室检测
*/
import request from '../index'
import type { ITaskQuery } from '@/views/business/schedule/task/task-interface'
@@ -25,7 +25,52 @@
}
// 检测流程配置
-export function interchangeListTake(data: { id: string; scheduleId: string }) {
+export function setMeasureProcess(data: { id: string; scheduleId: string }) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 退回
+export function rollbackTask(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 实验室收入样品
+export function takeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量收入样品
+export function batchTakeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 检完样品
+export function overSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量检完样品
+export function batchOverSample(data) {
return request({
url: `${prefix}/schedule/task/setSchedule`,
method: 'post',
diff --git a/src/api/device/standard.ts b/src/api/device/standard.ts
index 6e6fdfa..064780f 100644
--- a/src/api/device/standard.ts
+++ b/src/api/device/standard.ts
@@ -73,6 +73,15 @@
})
}
+// 删除申请列表信息
+export function getOperateDelete(data: object) {
+ return request({
+ url: '/standard/approval/operate/delete',
+ method: 'post',
+ data,
+ })
+}
+
// 新建申请列表信息
export function getStandardLisAdd(data: object) {
return request({
@@ -127,3 +136,86 @@
})
}
+// 批量添加标准装置底部计量人员
+export function setBatchAdd(data: object) {
+ return request({
+ url: '/meter/standard/user/batchAdd',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-计量人员列表(分页)
+export function getuserListPage(data: object) {
+ return request({
+ url: '/meter/standard/user/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-删除计量人员
+export function getuserDelete(data: object) {
+ return request({
+ url: '/meter/standard/user/delete',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-配套设备列表(分页)
+export function getEquipmentListPage(data: object) {
+ return request({
+ url: '/meter/standard/equipment/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加标准配套设备
+export function getEquipmenteAdd(data: object) {
+ return request({
+ url: '/meter/standard/equipment/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加检定规程
+export function getRegulationAdd(data: object) {
+ return request({
+ url: '/meter/standard/regulation/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-检定规程列表(分页)
+export function getRegulationListPage(data: object) {
+ return request({
+ url: '/meter/standard/regulation/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置导出
+export function getExportExcel(data: object) {
+ return request({
+ url: '/meter/standard/exportExcel',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
+// 标准装置申请导出
+export function getExportList(data: object) {
+ return request({
+ url: '/standard/exportList',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts
index 8bfe87e..50cf032 100644
--- a/src/api/measure/person.ts
+++ b/src/api/measure/person.ts
@@ -9,6 +9,14 @@
data,
})
}
+// 计量人员列表-不分页
+export function getStaffListAll(data: { deptId: string; name: string }) {
+ return request({
+ url: '/staff/getUserList',
+ method: 'post',
+ data,
+ })
+}
// 人员详细信息
export function getStaffDetail(data: object) {
return request({
diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg
new file mode 100644
index 0000000..f39dba8
--- /dev/null
+++ b/src/assets/icons/icon-scan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png
new file mode 100644
index 0000000..a56bf3e
--- /dev/null
+++ b/src/assets/images/scan.png
Binary files differ
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 67d321f..01d46ac 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -136,3 +136,10 @@
// cursor: text;
// }
}
+
+.float-radio-buttons {
+ position: fixed;
+ top: 67px;
+ right: 15px;
+ z-index: 999;
+}
diff --git a/src/components.d.ts b/src/components.d.ts
index 0ca1396..227585d 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -18,8 +18,11 @@
AuthAll: typeof import('./components/AuthAll/index.vue')['default']
BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default']
BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default']
+ BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default']
BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default']
BenchCol: typeof import('./components/benchCol/index.vue')['default']
+ CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default']
+ CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default']
ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default']
CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default']
Copyright: typeof import('./components/Copyright/index.vue')['default']
@@ -36,6 +39,7 @@
ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default']
ImageUpload: typeof import('./components/ImageUpload/index.vue')['default']
LineChart: typeof import('./components/Echart/LineChart.vue')['default']
+ MeasureRecords: typeof import('./components/Sample/measureRecords.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']
@@ -47,11 +51,13 @@
QrDialog: typeof import('./components/QrDialog/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
+ ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default']
SearchArea: typeof import('./components/SearchArea/index.vue')['default']
SearchBar: typeof import('./components/SearchBar/index.vue')['default']
SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default']
SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default']
SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default']
+ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default']
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue
new file mode 100644
index 0000000..0b7d7e8
--- /dev/null
+++ b/src/components/BarCodeBind/index.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个条码{{ list.length > 1 ? ',请选择要绑定的条码。' : '' }}
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue
new file mode 100644
index 0000000..16c1311
--- /dev/null
+++ b/src/components/Sample/certificationMonitor.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue
new file mode 100644
index 0000000..a694ce6
--- /dev/null
+++ b/src/components/Sample/certificationRecords.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue
new file mode 100644
index 0000000..b88e552
--- /dev/null
+++ b/src/components/Sample/measureRecords.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue
new file mode 100644
index 0000000..4e160a5
--- /dev/null
+++ b/src/components/ScanSampleDialog/index.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个样品{{ list.length > 1 ? ',请移除不需要绑定的样品。' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts
new file mode 100644
index 0000000..1c3aa33
--- /dev/null
+++ b/src/components/ScanSampleDialog/scan-interface.ts
@@ -0,0 +1,12 @@
+export interface ISampleScan {
+ sampleId?: string // 样品id
+ sampleNo: string // 样品编号
+ sampleName: string // 样品名称
+ sampleModel: string // 样品型号
+ manufacturingNo: string // 出厂编号
+ customerNo: string // 委托方代码
+ customerName: string // 委托方名称
+ orderId: string // 委托书id
+ orderNo: string // 委托书编号
+ labelBind: string // 标签绑定
+}
diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue
new file mode 100644
index 0000000..be9415b
--- /dev/null
+++ b/src/components/dialog/selectStaffDialog.vue
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (listQuery.offset - 1) * listQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
+
+
diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts
index a2fd12e..6a14d78 100644
--- a/src/router/modules/business.ts
+++ b/src/router/modules/business.ts
@@ -96,7 +96,7 @@
{
path: 'receipt/:type/:id?',
name: 'InterchangeReceiptDetail',
- component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'),
+ component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'),
meta: {
title: '设备交接单详情',
icon: 'ep:key',
@@ -196,6 +196,60 @@
activeMenu: '/lab/deptMeasureList',
},
},
+ {
+ path: 'reportOnCredentialsApproval',
+ name: 'ReportOnCredentialsApproval',
+ component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'),
+ meta: {
+ title: '证书报告',
+ icon: 'ep:key',
+ auth: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'reportOnCredentialsApproval/:type/:id?',
+ name: 'reportOnCredentialsAdd',
+ component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'),
+ meta: {
+ title: '证书报告详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'primitiveLogList',
+ name: 'PrimitiveLogList',
+ component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'),
+ meta: {
+ title: '原始记录',
+ icon: 'ep:key',
+ auth: '/lab/primitiveLogList',
+ },
+ },
+ {
+ path: 'environmentalList',
+ name: 'EnvironmentalList',
+ component: () => import('@/views/business/lab/environmental/environmentalList.vue'),
+ meta: {
+ title: '环境记录单',
+ icon: 'ep:key',
+ auth: '/lab/environmentalList',
+ },
+ },
+ {
+ path: 'environmentalList/:type/:id?',
+ name: 'EnvironmentalAdd',
+ component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'),
+ meta: {
+ title: '环境记录单详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/environmentalList',
+ },
+ },
],
},
]
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
index 993d66c..cbc5c47 100644
--- a/src/router/modules/device.ts
+++ b/src/router/modules/device.ts
@@ -238,7 +238,7 @@
},
},
{
- path: ':type/:id?',
+ path: 'Apply:type/:id?',
name: 'standardListAdd',
component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'),
meta: {
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 1264d2e..cfcbfaf 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -72,6 +72,7 @@
username: string
password: string
kaptcha: string
+ sid: string
}) {
return new Promise((resolve, reject) => {
doLogin(data).then((res) => {
diff --git a/src/views/business/bench/bench.vue b/src/views/business/bench/bench.vue
index 1f5af41..fad9269 100644
--- a/src/views/business/bench/bench.vue
+++ b/src/views/business/bench/bench.vue
@@ -243,7 +243,7 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+
+
+ 取消
+
+
+
+
+
+
diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue
index c129753..4d1b5c0 100644
--- a/src/views/business/lab/deptMeasure/deptMeasureList.vue
+++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue
@@ -1,13 +1,348 @@
-
- 部门检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 任务分发
+
+
+ 退回
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue
new file mode 100644
index 0000000..e572d09
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalAdd.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+ 提交
+
+
+ 打印
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue
new file mode 100644
index 0000000..98230be
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalList.vue
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 详情
+
+
+ 删除
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue
index 3ba89c5..800419d 100644
--- a/src/views/business/lab/myMeasure/myMeasureList.vue
+++ b/src/views/business/lab/myMeasure/myMeasureList.vue
@@ -1,13 +1,373 @@
-
- 我的检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 收入
+
+
+ 退回
+
+
+ 检测完成
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue
new file mode 100644
index 0000000..a598765
--- /dev/null
+++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 原始记录
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
new file mode 100644
index 0000000..97bea6f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
@@ -0,0 +1,664 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
new file mode 100644
index 0000000..da533b7
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
@@ -0,0 +1,1266 @@
+
+
+
+
+
+
+
+ {{ item }}
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 无
+
+
+ {{ formInline.minioFileName === '' ? '上传' : '更换附件' }}
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 审批人:{{ activity.name }}
+ 审批意见:{{ activity.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
new file mode 100644
index 0000000..5bf6f0f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
new file mode 100644
index 0000000..5c3eb39
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
@@ -0,0 +1,373 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue
index 3a3c09c..61ad34d 100644
--- a/src/views/business/schedule/task/components/chooseLab.vue
+++ b/src/views/business/schedule/task/components/chooseLab.vue
@@ -4,7 +4,7 @@
import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface'
import type { TableColumn } from '@/components/NormalTable/table_interface'
-const emits = defineEmits(['changeVisible', 'confirmCheckout'])
+const emits = defineEmits(['confirmCheckout'])
// 是否多选
const multi = ref(false)
const dialogVisible = ref(false)
diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue
index 39817f4..6cbdf10 100644
--- a/src/views/business/schedule/task/components/processNode.vue
+++ b/src/views/business/schedule/task/components/processNode.vue
@@ -149,7 +149,7 @@
-
+
diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts
index c9b3d63..7b538cf 100644
--- a/src/views/business/schedule/task/task-interface.ts
+++ b/src/views/business/schedule/task/task-interface.ts
@@ -9,7 +9,9 @@
customerName: string // 委托方名称
isUrgent: string // 是否加急
sampleAttr: string // 样品属性
- formId: string
+ sendState: string // 分发状态
+ outState: string // 超期状态
+ formId: string // formId
limit: number
offset: number
}
@@ -61,4 +63,5 @@
// 样品检测信息
export interface ISampleMeasure extends ISampleEdit {
orderId: string // 委托单id
+ certifications: string // 证书类别
}
diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue
index c8331c1..465b2e7 100644
--- a/src/views/business/schedule/task/taskEdit.vue
+++ b/src/views/business/schedule/task/taskEdit.vue
@@ -64,6 +64,7 @@
minioFileName: '', // 说明书
labelBind: '', // 标签绑定
mesureType: '', // 检定方式
+ certifications: '',
})
const ruleFormRef = ref
()
@@ -137,7 +138,7 @@
},
]
-const currentMenu = ref('检定记录')
+const currentMenu = ref('证书监控')
const currentMenuObj = computed(() => {
return menu.find(item => item.name === currentMenu.value)
})
@@ -224,6 +225,7 @@
measureResultCode: 'bhg',
deliverer: '张三',
delivererTel: '156254577545',
+ certifications: '1',
}
// for (const item of menu) {
// item.searchFunc()
@@ -587,15 +589,26 @@
-
+
-
- {{ item.name }}
+
+ 证书监控
+
+
+ 检定记录
+
+
+ 检定证书
-
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue
index 663b571..799a420 100644
--- a/src/views/business/schedule/task/taskList.vue
+++ b/src/views/business/schedule/task/taskList.vue
@@ -5,6 +5,7 @@
import { ElLoading, ElMessage } from 'element-plus'
import type { ITaskList, ITaskQuery } from './task-interface'
import DistributeDialog from './components/distributeDialog.vue'
+import BarCodeBind from '@/components/BarCodeBind/index.vue'
import type { TableColumn } from '@/components/NormalTable/table_interface'
import { printJSON } from '@/utils/printUtils'
import { exportFile } from '@/utils/exportUtils'
@@ -13,6 +14,14 @@
import type { dictType } from '@/global'
const { proxy } = getCurrentInstance() as any
const $router = useRouter()
+// 右上角按钮
+const menus = [
+ { name: '待分发', value: 'sendState;0' },
+ { name: '检测中', value: 'sendState;1' },
+ { name: '检测完', value: 'sendState;2' },
+ { name: '超期样品', value: 'outState;1' },
+]
+const currentMenu = ref('sendState;0') // 当前选中状态
// 查询条件
const timeRange = ref<[DateModelType, DateModelType]>(['', ''])
const listQuery: Ref = ref({
@@ -25,6 +34,8 @@
sampleAttr: '', // 样品属性
startTime: '', // 应检完时间-开始
endTime: '', // 应检完时间-结束
+ sendState: '', // 分发状态
+ outState: '', // 超期状态
formId: 'jlglsygfsp', // 任务分发formId
offset: 1,
limit: 20,
@@ -33,7 +44,7 @@
const sampleAttrList = ref([]) // 样品属性列表
function getDict() {
// 获取样品属性
- getDictByCode('sampleAttr').then((response) => {
+ getDictByCode('sampleBelong').then((response) => {
sampleAttrList.value = response.data
})
}
@@ -53,7 +64,6 @@
{ text: '样品属性', value: 'sampleAttrName', align: 'center' },
{ text: '当前检定环节', value: 'currentMeasureStateName', align: 'center' },
{ text: '证书出具', value: 'certificationState', align: 'center', filter: (row: ITaskList) => { return `${row.currentCertifications}/${row.requireCertifications}` } },
- { text: '标签信息', value: 'labelBind', align: 'center' },
{ text: '分发性质', value: 'distributeState', align: 'center', width: '90px' },
])
// 表格数据
@@ -78,6 +88,7 @@
{ orderId: '1', sampleNo: '1yp123457', sampleName: '压力表', orderNo: 'wtd123456', customerNo: 'kh123456', customerName: '北京无线电测量研究所', isUrgent: '0', sampleAttr: '1', sampleAttrName: '客户样品', sampleModel: 'JBT-011', manufacturingNo: '24432231124', requireOverTime: '2023-02-01', sampleId: '1', currentMeasureState: '1', currentMeasureStateName: '待分配', currentCertifications: 0, requireCertifications: 0, labelBind: '', distributeState: '2', distributeStateName: '退回分发' },
]
loadingTable.value = false
+ console.log(listQuery.value)
// getTaskList(listQuery.value).then((response) => {
// list.value = response.data.rows
// total.value = parseInt(response.data.total)
@@ -89,17 +100,6 @@
checkoutList.value = e.map((item: { id: string }) => item.id)
}
-// 点击详情
-const handleDetail = (row: ITaskList) => {
- $router.push(`/schedule/task/distribute/${row.sampleId}`)
-}
-
-// 点击分发, 弹窗
-const distributeDialogRef = ref()
-const handleDistribute = (row: ITaskList) => {
- distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
-}
-
// 点击搜索
const searchList = () => {
fetchData(true)
@@ -115,11 +115,31 @@
isUrgent: '', // 是否加急
sampleAttr: '', // 样品属性
formId: 'jlglsygfsp',
+ sendState: '1', // 分发状态
+ outState: '', // 超期状态
offset: 1,
limit: 20,
}
}
+// 点击详情
+const handleDetail = (row: ITaskList) => {
+ $router.push(`/schedule/task/distribute/${row.sampleId}`)
+}
+// 点击分发, 弹窗
+const distributeDialogRef = ref()
+const handleDistribute = (row: ITaskList) => {
+ distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
+}
+// 点击标签绑定
+const barCodeBind = ref()
+const bindLabel = (row: ITaskList) => {
+ barCodeBind.value.initDialog(row.sampleId)
+}
+// 标签绑定完成
+const bindLabelOver = () => {
+ searchList()
+}
// 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写
const changePage = (val: { size?: number; page?: number }) => {
if (val && val.size) {
@@ -178,11 +198,30 @@
}
}
-fetchData(true)
+// 选择按钮变更
+watch(currentMenu, (val: string) => {
+ const vals = val.split(';')
+ if (vals.length > 1) {
+ listQuery.value.sendState = ''
+ listQuery.value.outState = ''
+ listQuery.value[vals[0] as 'sendState' | 'outState'] = vals[1]
+ }
+ fetchData(false)
+})
+
+fetchData(false)
+
+
+
+
+ {{ item.name }}
+
+
+
详情
-
+
标签绑定
-
+
分发
+
+
+
diff --git a/src/views/customer/advice/adviceEdit.vue b/src/views/customer/advice/adviceEdit.vue
index 71da364..a5411c1 100644
--- a/src/views/customer/advice/adviceEdit.vue
+++ b/src/views/customer/advice/adviceEdit.vue
@@ -8,8 +8,6 @@
import type { FormInstance } from 'element-plus'
import type { IAdvice, SimpleCompany } from './advice_interface'
import { addAdvice, getAdviceDetail, updateAdvice } from '@/api/customer/advice'
-import { SCHEDULE } from '@/utils/scheduleDict'
-import type { IAddress } from '@/components/AddressSelect/address-interface'
import { getDictByCode } from '@/api/system/dict'
const loading = ref(false) // 表单加载状态
const infoId = ref('') // id
diff --git a/src/api/business/task.ts b/src/api/business/task.ts
index a337c7f..80d91b7 100644
--- a/src/api/business/task.ts
+++ b/src/api/business/task.ts
@@ -1,5 +1,5 @@
/**
- * 任务分发
+ * 任务分发,实验室检测
*/
import request from '../index'
import type { ITaskQuery } from '@/views/business/schedule/task/task-interface'
@@ -25,7 +25,52 @@
}
// 检测流程配置
-export function interchangeListTake(data: { id: string; scheduleId: string }) {
+export function setMeasureProcess(data: { id: string; scheduleId: string }) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 退回
+export function rollbackTask(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 实验室收入样品
+export function takeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量收入样品
+export function batchTakeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 检完样品
+export function overSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量检完样品
+export function batchOverSample(data) {
return request({
url: `${prefix}/schedule/task/setSchedule`,
method: 'post',
diff --git a/src/api/device/standard.ts b/src/api/device/standard.ts
index 6e6fdfa..064780f 100644
--- a/src/api/device/standard.ts
+++ b/src/api/device/standard.ts
@@ -73,6 +73,15 @@
})
}
+// 删除申请列表信息
+export function getOperateDelete(data: object) {
+ return request({
+ url: '/standard/approval/operate/delete',
+ method: 'post',
+ data,
+ })
+}
+
// 新建申请列表信息
export function getStandardLisAdd(data: object) {
return request({
@@ -127,3 +136,86 @@
})
}
+// 批量添加标准装置底部计量人员
+export function setBatchAdd(data: object) {
+ return request({
+ url: '/meter/standard/user/batchAdd',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-计量人员列表(分页)
+export function getuserListPage(data: object) {
+ return request({
+ url: '/meter/standard/user/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-删除计量人员
+export function getuserDelete(data: object) {
+ return request({
+ url: '/meter/standard/user/delete',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-配套设备列表(分页)
+export function getEquipmentListPage(data: object) {
+ return request({
+ url: '/meter/standard/equipment/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加标准配套设备
+export function getEquipmenteAdd(data: object) {
+ return request({
+ url: '/meter/standard/equipment/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加检定规程
+export function getRegulationAdd(data: object) {
+ return request({
+ url: '/meter/standard/regulation/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-检定规程列表(分页)
+export function getRegulationListPage(data: object) {
+ return request({
+ url: '/meter/standard/regulation/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置导出
+export function getExportExcel(data: object) {
+ return request({
+ url: '/meter/standard/exportExcel',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
+// 标准装置申请导出
+export function getExportList(data: object) {
+ return request({
+ url: '/standard/exportList',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts
index 8bfe87e..50cf032 100644
--- a/src/api/measure/person.ts
+++ b/src/api/measure/person.ts
@@ -9,6 +9,14 @@
data,
})
}
+// 计量人员列表-不分页
+export function getStaffListAll(data: { deptId: string; name: string }) {
+ return request({
+ url: '/staff/getUserList',
+ method: 'post',
+ data,
+ })
+}
// 人员详细信息
export function getStaffDetail(data: object) {
return request({
diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg
new file mode 100644
index 0000000..f39dba8
--- /dev/null
+++ b/src/assets/icons/icon-scan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png
new file mode 100644
index 0000000..a56bf3e
--- /dev/null
+++ b/src/assets/images/scan.png
Binary files differ
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 67d321f..01d46ac 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -136,3 +136,10 @@
// cursor: text;
// }
}
+
+.float-radio-buttons {
+ position: fixed;
+ top: 67px;
+ right: 15px;
+ z-index: 999;
+}
diff --git a/src/components.d.ts b/src/components.d.ts
index 0ca1396..227585d 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -18,8 +18,11 @@
AuthAll: typeof import('./components/AuthAll/index.vue')['default']
BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default']
BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default']
+ BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default']
BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default']
BenchCol: typeof import('./components/benchCol/index.vue')['default']
+ CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default']
+ CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default']
ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default']
CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default']
Copyright: typeof import('./components/Copyright/index.vue')['default']
@@ -36,6 +39,7 @@
ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default']
ImageUpload: typeof import('./components/ImageUpload/index.vue')['default']
LineChart: typeof import('./components/Echart/LineChart.vue')['default']
+ MeasureRecords: typeof import('./components/Sample/measureRecords.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']
@@ -47,11 +51,13 @@
QrDialog: typeof import('./components/QrDialog/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
+ ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default']
SearchArea: typeof import('./components/SearchArea/index.vue')['default']
SearchBar: typeof import('./components/SearchBar/index.vue')['default']
SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default']
SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default']
SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default']
+ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default']
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue
new file mode 100644
index 0000000..0b7d7e8
--- /dev/null
+++ b/src/components/BarCodeBind/index.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个条码{{ list.length > 1 ? ',请选择要绑定的条码。' : '' }}
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue
new file mode 100644
index 0000000..16c1311
--- /dev/null
+++ b/src/components/Sample/certificationMonitor.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue
new file mode 100644
index 0000000..a694ce6
--- /dev/null
+++ b/src/components/Sample/certificationRecords.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue
new file mode 100644
index 0000000..b88e552
--- /dev/null
+++ b/src/components/Sample/measureRecords.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue
new file mode 100644
index 0000000..4e160a5
--- /dev/null
+++ b/src/components/ScanSampleDialog/index.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个样品{{ list.length > 1 ? ',请移除不需要绑定的样品。' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts
new file mode 100644
index 0000000..1c3aa33
--- /dev/null
+++ b/src/components/ScanSampleDialog/scan-interface.ts
@@ -0,0 +1,12 @@
+export interface ISampleScan {
+ sampleId?: string // 样品id
+ sampleNo: string // 样品编号
+ sampleName: string // 样品名称
+ sampleModel: string // 样品型号
+ manufacturingNo: string // 出厂编号
+ customerNo: string // 委托方代码
+ customerName: string // 委托方名称
+ orderId: string // 委托书id
+ orderNo: string // 委托书编号
+ labelBind: string // 标签绑定
+}
diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue
new file mode 100644
index 0000000..be9415b
--- /dev/null
+++ b/src/components/dialog/selectStaffDialog.vue
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (listQuery.offset - 1) * listQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
+
+
diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts
index a2fd12e..6a14d78 100644
--- a/src/router/modules/business.ts
+++ b/src/router/modules/business.ts
@@ -96,7 +96,7 @@
{
path: 'receipt/:type/:id?',
name: 'InterchangeReceiptDetail',
- component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'),
+ component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'),
meta: {
title: '设备交接单详情',
icon: 'ep:key',
@@ -196,6 +196,60 @@
activeMenu: '/lab/deptMeasureList',
},
},
+ {
+ path: 'reportOnCredentialsApproval',
+ name: 'ReportOnCredentialsApproval',
+ component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'),
+ meta: {
+ title: '证书报告',
+ icon: 'ep:key',
+ auth: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'reportOnCredentialsApproval/:type/:id?',
+ name: 'reportOnCredentialsAdd',
+ component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'),
+ meta: {
+ title: '证书报告详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'primitiveLogList',
+ name: 'PrimitiveLogList',
+ component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'),
+ meta: {
+ title: '原始记录',
+ icon: 'ep:key',
+ auth: '/lab/primitiveLogList',
+ },
+ },
+ {
+ path: 'environmentalList',
+ name: 'EnvironmentalList',
+ component: () => import('@/views/business/lab/environmental/environmentalList.vue'),
+ meta: {
+ title: '环境记录单',
+ icon: 'ep:key',
+ auth: '/lab/environmentalList',
+ },
+ },
+ {
+ path: 'environmentalList/:type/:id?',
+ name: 'EnvironmentalAdd',
+ component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'),
+ meta: {
+ title: '环境记录单详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/environmentalList',
+ },
+ },
],
},
]
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
index 993d66c..cbc5c47 100644
--- a/src/router/modules/device.ts
+++ b/src/router/modules/device.ts
@@ -238,7 +238,7 @@
},
},
{
- path: ':type/:id?',
+ path: 'Apply:type/:id?',
name: 'standardListAdd',
component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'),
meta: {
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 1264d2e..cfcbfaf 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -72,6 +72,7 @@
username: string
password: string
kaptcha: string
+ sid: string
}) {
return new Promise((resolve, reject) => {
doLogin(data).then((res) => {
diff --git a/src/views/business/bench/bench.vue b/src/views/business/bench/bench.vue
index 1f5af41..fad9269 100644
--- a/src/views/business/bench/bench.vue
+++ b/src/views/business/bench/bench.vue
@@ -243,7 +243,7 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+
+
+ 取消
+
+
+
+
+
+
diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue
index c129753..4d1b5c0 100644
--- a/src/views/business/lab/deptMeasure/deptMeasureList.vue
+++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue
@@ -1,13 +1,348 @@
-
- 部门检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 任务分发
+
+
+ 退回
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue
new file mode 100644
index 0000000..e572d09
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalAdd.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+ 提交
+
+
+ 打印
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue
new file mode 100644
index 0000000..98230be
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalList.vue
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 详情
+
+
+ 删除
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue
index 3ba89c5..800419d 100644
--- a/src/views/business/lab/myMeasure/myMeasureList.vue
+++ b/src/views/business/lab/myMeasure/myMeasureList.vue
@@ -1,13 +1,373 @@
-
- 我的检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 收入
+
+
+ 退回
+
+
+ 检测完成
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue
new file mode 100644
index 0000000..a598765
--- /dev/null
+++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 原始记录
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
new file mode 100644
index 0000000..97bea6f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
@@ -0,0 +1,664 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
new file mode 100644
index 0000000..da533b7
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
@@ -0,0 +1,1266 @@
+
+
+
+
+
+
+
+ {{ item }}
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 无
+
+
+ {{ formInline.minioFileName === '' ? '上传' : '更换附件' }}
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 审批人:{{ activity.name }}
+ 审批意见:{{ activity.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
new file mode 100644
index 0000000..5bf6f0f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
new file mode 100644
index 0000000..5c3eb39
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
@@ -0,0 +1,373 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue
index 3a3c09c..61ad34d 100644
--- a/src/views/business/schedule/task/components/chooseLab.vue
+++ b/src/views/business/schedule/task/components/chooseLab.vue
@@ -4,7 +4,7 @@
import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface'
import type { TableColumn } from '@/components/NormalTable/table_interface'
-const emits = defineEmits(['changeVisible', 'confirmCheckout'])
+const emits = defineEmits(['confirmCheckout'])
// 是否多选
const multi = ref(false)
const dialogVisible = ref(false)
diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue
index 39817f4..6cbdf10 100644
--- a/src/views/business/schedule/task/components/processNode.vue
+++ b/src/views/business/schedule/task/components/processNode.vue
@@ -149,7 +149,7 @@
-
+
diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts
index c9b3d63..7b538cf 100644
--- a/src/views/business/schedule/task/task-interface.ts
+++ b/src/views/business/schedule/task/task-interface.ts
@@ -9,7 +9,9 @@
customerName: string // 委托方名称
isUrgent: string // 是否加急
sampleAttr: string // 样品属性
- formId: string
+ sendState: string // 分发状态
+ outState: string // 超期状态
+ formId: string // formId
limit: number
offset: number
}
@@ -61,4 +63,5 @@
// 样品检测信息
export interface ISampleMeasure extends ISampleEdit {
orderId: string // 委托单id
+ certifications: string // 证书类别
}
diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue
index c8331c1..465b2e7 100644
--- a/src/views/business/schedule/task/taskEdit.vue
+++ b/src/views/business/schedule/task/taskEdit.vue
@@ -64,6 +64,7 @@
minioFileName: '', // 说明书
labelBind: '', // 标签绑定
mesureType: '', // 检定方式
+ certifications: '',
})
const ruleFormRef = ref
()
@@ -137,7 +138,7 @@
},
]
-const currentMenu = ref('检定记录')
+const currentMenu = ref('证书监控')
const currentMenuObj = computed(() => {
return menu.find(item => item.name === currentMenu.value)
})
@@ -224,6 +225,7 @@
measureResultCode: 'bhg',
deliverer: '张三',
delivererTel: '156254577545',
+ certifications: '1',
}
// for (const item of menu) {
// item.searchFunc()
@@ -587,15 +589,26 @@
-
+
-
- {{ item.name }}
+
+ 证书监控
+
+
+ 检定记录
+
+
+ 检定证书
-
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue
index 663b571..799a420 100644
--- a/src/views/business/schedule/task/taskList.vue
+++ b/src/views/business/schedule/task/taskList.vue
@@ -5,6 +5,7 @@
import { ElLoading, ElMessage } from 'element-plus'
import type { ITaskList, ITaskQuery } from './task-interface'
import DistributeDialog from './components/distributeDialog.vue'
+import BarCodeBind from '@/components/BarCodeBind/index.vue'
import type { TableColumn } from '@/components/NormalTable/table_interface'
import { printJSON } from '@/utils/printUtils'
import { exportFile } from '@/utils/exportUtils'
@@ -13,6 +14,14 @@
import type { dictType } from '@/global'
const { proxy } = getCurrentInstance() as any
const $router = useRouter()
+// 右上角按钮
+const menus = [
+ { name: '待分发', value: 'sendState;0' },
+ { name: '检测中', value: 'sendState;1' },
+ { name: '检测完', value: 'sendState;2' },
+ { name: '超期样品', value: 'outState;1' },
+]
+const currentMenu = ref('sendState;0') // 当前选中状态
// 查询条件
const timeRange = ref<[DateModelType, DateModelType]>(['', ''])
const listQuery: Ref = ref({
@@ -25,6 +34,8 @@
sampleAttr: '', // 样品属性
startTime: '', // 应检完时间-开始
endTime: '', // 应检完时间-结束
+ sendState: '', // 分发状态
+ outState: '', // 超期状态
formId: 'jlglsygfsp', // 任务分发formId
offset: 1,
limit: 20,
@@ -33,7 +44,7 @@
const sampleAttrList = ref([]) // 样品属性列表
function getDict() {
// 获取样品属性
- getDictByCode('sampleAttr').then((response) => {
+ getDictByCode('sampleBelong').then((response) => {
sampleAttrList.value = response.data
})
}
@@ -53,7 +64,6 @@
{ text: '样品属性', value: 'sampleAttrName', align: 'center' },
{ text: '当前检定环节', value: 'currentMeasureStateName', align: 'center' },
{ text: '证书出具', value: 'certificationState', align: 'center', filter: (row: ITaskList) => { return `${row.currentCertifications}/${row.requireCertifications}` } },
- { text: '标签信息', value: 'labelBind', align: 'center' },
{ text: '分发性质', value: 'distributeState', align: 'center', width: '90px' },
])
// 表格数据
@@ -78,6 +88,7 @@
{ orderId: '1', sampleNo: '1yp123457', sampleName: '压力表', orderNo: 'wtd123456', customerNo: 'kh123456', customerName: '北京无线电测量研究所', isUrgent: '0', sampleAttr: '1', sampleAttrName: '客户样品', sampleModel: 'JBT-011', manufacturingNo: '24432231124', requireOverTime: '2023-02-01', sampleId: '1', currentMeasureState: '1', currentMeasureStateName: '待分配', currentCertifications: 0, requireCertifications: 0, labelBind: '', distributeState: '2', distributeStateName: '退回分发' },
]
loadingTable.value = false
+ console.log(listQuery.value)
// getTaskList(listQuery.value).then((response) => {
// list.value = response.data.rows
// total.value = parseInt(response.data.total)
@@ -89,17 +100,6 @@
checkoutList.value = e.map((item: { id: string }) => item.id)
}
-// 点击详情
-const handleDetail = (row: ITaskList) => {
- $router.push(`/schedule/task/distribute/${row.sampleId}`)
-}
-
-// 点击分发, 弹窗
-const distributeDialogRef = ref()
-const handleDistribute = (row: ITaskList) => {
- distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
-}
-
// 点击搜索
const searchList = () => {
fetchData(true)
@@ -115,11 +115,31 @@
isUrgent: '', // 是否加急
sampleAttr: '', // 样品属性
formId: 'jlglsygfsp',
+ sendState: '1', // 分发状态
+ outState: '', // 超期状态
offset: 1,
limit: 20,
}
}
+// 点击详情
+const handleDetail = (row: ITaskList) => {
+ $router.push(`/schedule/task/distribute/${row.sampleId}`)
+}
+// 点击分发, 弹窗
+const distributeDialogRef = ref()
+const handleDistribute = (row: ITaskList) => {
+ distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
+}
+// 点击标签绑定
+const barCodeBind = ref()
+const bindLabel = (row: ITaskList) => {
+ barCodeBind.value.initDialog(row.sampleId)
+}
+// 标签绑定完成
+const bindLabelOver = () => {
+ searchList()
+}
// 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写
const changePage = (val: { size?: number; page?: number }) => {
if (val && val.size) {
@@ -178,11 +198,30 @@
}
}
-fetchData(true)
+// 选择按钮变更
+watch(currentMenu, (val: string) => {
+ const vals = val.split(';')
+ if (vals.length > 1) {
+ listQuery.value.sendState = ''
+ listQuery.value.outState = ''
+ listQuery.value[vals[0] as 'sendState' | 'outState'] = vals[1]
+ }
+ fetchData(false)
+})
+
+fetchData(false)
+
+
+
+
+ {{ item.name }}
+
+
+
详情
-
+
标签绑定
-
+
分发
+
+
+
diff --git a/src/views/customer/advice/adviceEdit.vue b/src/views/customer/advice/adviceEdit.vue
index 71da364..a5411c1 100644
--- a/src/views/customer/advice/adviceEdit.vue
+++ b/src/views/customer/advice/adviceEdit.vue
@@ -8,8 +8,6 @@
import type { FormInstance } from 'element-plus'
import type { IAdvice, SimpleCompany } from './advice_interface'
import { addAdvice, getAdviceDetail, updateAdvice } from '@/api/customer/advice'
-import { SCHEDULE } from '@/utils/scheduleDict'
-import type { IAddress } from '@/components/AddressSelect/address-interface'
import { getDictByCode } from '@/api/system/dict'
const loading = ref(false) // 表单加载状态
const infoId = ref('') // id
diff --git a/src/views/customer/advice/advice_interface.ts b/src/views/customer/advice/advice_interface.ts
index 48f6314..b08f85b 100644
--- a/src/views/customer/advice/advice_interface.ts
+++ b/src/views/customer/advice/advice_interface.ts
@@ -14,9 +14,9 @@
id: string // 主键id(列表、更新接口参数)
adviceNo: string // 投诉编号
adviceClass: string // 投诉类型
- adviceClassName: string // 投诉类型
+ adviceClassName?: string // 投诉类型
adviceType: string // 投诉类别
- adviceTypeName: string // 投诉类别
+ adviceTypeName?: string // 投诉类别
advicePerson: string // 投诉人-名称
adviceTime: string // 投诉时间
personPhone: string // 投诉人联系方式
diff --git a/src/api/business/task.ts b/src/api/business/task.ts
index a337c7f..80d91b7 100644
--- a/src/api/business/task.ts
+++ b/src/api/business/task.ts
@@ -1,5 +1,5 @@
/**
- * 任务分发
+ * 任务分发,实验室检测
*/
import request from '../index'
import type { ITaskQuery } from '@/views/business/schedule/task/task-interface'
@@ -25,7 +25,52 @@
}
// 检测流程配置
-export function interchangeListTake(data: { id: string; scheduleId: string }) {
+export function setMeasureProcess(data: { id: string; scheduleId: string }) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 退回
+export function rollbackTask(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 实验室收入样品
+export function takeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量收入样品
+export function batchTakeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 检完样品
+export function overSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量检完样品
+export function batchOverSample(data) {
return request({
url: `${prefix}/schedule/task/setSchedule`,
method: 'post',
diff --git a/src/api/device/standard.ts b/src/api/device/standard.ts
index 6e6fdfa..064780f 100644
--- a/src/api/device/standard.ts
+++ b/src/api/device/standard.ts
@@ -73,6 +73,15 @@
})
}
+// 删除申请列表信息
+export function getOperateDelete(data: object) {
+ return request({
+ url: '/standard/approval/operate/delete',
+ method: 'post',
+ data,
+ })
+}
+
// 新建申请列表信息
export function getStandardLisAdd(data: object) {
return request({
@@ -127,3 +136,86 @@
})
}
+// 批量添加标准装置底部计量人员
+export function setBatchAdd(data: object) {
+ return request({
+ url: '/meter/standard/user/batchAdd',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-计量人员列表(分页)
+export function getuserListPage(data: object) {
+ return request({
+ url: '/meter/standard/user/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-删除计量人员
+export function getuserDelete(data: object) {
+ return request({
+ url: '/meter/standard/user/delete',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-配套设备列表(分页)
+export function getEquipmentListPage(data: object) {
+ return request({
+ url: '/meter/standard/equipment/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加标准配套设备
+export function getEquipmenteAdd(data: object) {
+ return request({
+ url: '/meter/standard/equipment/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加检定规程
+export function getRegulationAdd(data: object) {
+ return request({
+ url: '/meter/standard/regulation/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-检定规程列表(分页)
+export function getRegulationListPage(data: object) {
+ return request({
+ url: '/meter/standard/regulation/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置导出
+export function getExportExcel(data: object) {
+ return request({
+ url: '/meter/standard/exportExcel',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
+// 标准装置申请导出
+export function getExportList(data: object) {
+ return request({
+ url: '/standard/exportList',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts
index 8bfe87e..50cf032 100644
--- a/src/api/measure/person.ts
+++ b/src/api/measure/person.ts
@@ -9,6 +9,14 @@
data,
})
}
+// 计量人员列表-不分页
+export function getStaffListAll(data: { deptId: string; name: string }) {
+ return request({
+ url: '/staff/getUserList',
+ method: 'post',
+ data,
+ })
+}
// 人员详细信息
export function getStaffDetail(data: object) {
return request({
diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg
new file mode 100644
index 0000000..f39dba8
--- /dev/null
+++ b/src/assets/icons/icon-scan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png
new file mode 100644
index 0000000..a56bf3e
--- /dev/null
+++ b/src/assets/images/scan.png
Binary files differ
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 67d321f..01d46ac 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -136,3 +136,10 @@
// cursor: text;
// }
}
+
+.float-radio-buttons {
+ position: fixed;
+ top: 67px;
+ right: 15px;
+ z-index: 999;
+}
diff --git a/src/components.d.ts b/src/components.d.ts
index 0ca1396..227585d 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -18,8 +18,11 @@
AuthAll: typeof import('./components/AuthAll/index.vue')['default']
BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default']
BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default']
+ BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default']
BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default']
BenchCol: typeof import('./components/benchCol/index.vue')['default']
+ CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default']
+ CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default']
ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default']
CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default']
Copyright: typeof import('./components/Copyright/index.vue')['default']
@@ -36,6 +39,7 @@
ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default']
ImageUpload: typeof import('./components/ImageUpload/index.vue')['default']
LineChart: typeof import('./components/Echart/LineChart.vue')['default']
+ MeasureRecords: typeof import('./components/Sample/measureRecords.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']
@@ -47,11 +51,13 @@
QrDialog: typeof import('./components/QrDialog/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
+ ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default']
SearchArea: typeof import('./components/SearchArea/index.vue')['default']
SearchBar: typeof import('./components/SearchBar/index.vue')['default']
SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default']
SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default']
SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default']
+ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default']
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue
new file mode 100644
index 0000000..0b7d7e8
--- /dev/null
+++ b/src/components/BarCodeBind/index.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个条码{{ list.length > 1 ? ',请选择要绑定的条码。' : '' }}
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue
new file mode 100644
index 0000000..16c1311
--- /dev/null
+++ b/src/components/Sample/certificationMonitor.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue
new file mode 100644
index 0000000..a694ce6
--- /dev/null
+++ b/src/components/Sample/certificationRecords.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue
new file mode 100644
index 0000000..b88e552
--- /dev/null
+++ b/src/components/Sample/measureRecords.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue
new file mode 100644
index 0000000..4e160a5
--- /dev/null
+++ b/src/components/ScanSampleDialog/index.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个样品{{ list.length > 1 ? ',请移除不需要绑定的样品。' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts
new file mode 100644
index 0000000..1c3aa33
--- /dev/null
+++ b/src/components/ScanSampleDialog/scan-interface.ts
@@ -0,0 +1,12 @@
+export interface ISampleScan {
+ sampleId?: string // 样品id
+ sampleNo: string // 样品编号
+ sampleName: string // 样品名称
+ sampleModel: string // 样品型号
+ manufacturingNo: string // 出厂编号
+ customerNo: string // 委托方代码
+ customerName: string // 委托方名称
+ orderId: string // 委托书id
+ orderNo: string // 委托书编号
+ labelBind: string // 标签绑定
+}
diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue
new file mode 100644
index 0000000..be9415b
--- /dev/null
+++ b/src/components/dialog/selectStaffDialog.vue
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (listQuery.offset - 1) * listQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
+
+
diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts
index a2fd12e..6a14d78 100644
--- a/src/router/modules/business.ts
+++ b/src/router/modules/business.ts
@@ -96,7 +96,7 @@
{
path: 'receipt/:type/:id?',
name: 'InterchangeReceiptDetail',
- component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'),
+ component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'),
meta: {
title: '设备交接单详情',
icon: 'ep:key',
@@ -196,6 +196,60 @@
activeMenu: '/lab/deptMeasureList',
},
},
+ {
+ path: 'reportOnCredentialsApproval',
+ name: 'ReportOnCredentialsApproval',
+ component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'),
+ meta: {
+ title: '证书报告',
+ icon: 'ep:key',
+ auth: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'reportOnCredentialsApproval/:type/:id?',
+ name: 'reportOnCredentialsAdd',
+ component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'),
+ meta: {
+ title: '证书报告详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'primitiveLogList',
+ name: 'PrimitiveLogList',
+ component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'),
+ meta: {
+ title: '原始记录',
+ icon: 'ep:key',
+ auth: '/lab/primitiveLogList',
+ },
+ },
+ {
+ path: 'environmentalList',
+ name: 'EnvironmentalList',
+ component: () => import('@/views/business/lab/environmental/environmentalList.vue'),
+ meta: {
+ title: '环境记录单',
+ icon: 'ep:key',
+ auth: '/lab/environmentalList',
+ },
+ },
+ {
+ path: 'environmentalList/:type/:id?',
+ name: 'EnvironmentalAdd',
+ component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'),
+ meta: {
+ title: '环境记录单详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/environmentalList',
+ },
+ },
],
},
]
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
index 993d66c..cbc5c47 100644
--- a/src/router/modules/device.ts
+++ b/src/router/modules/device.ts
@@ -238,7 +238,7 @@
},
},
{
- path: ':type/:id?',
+ path: 'Apply:type/:id?',
name: 'standardListAdd',
component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'),
meta: {
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 1264d2e..cfcbfaf 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -72,6 +72,7 @@
username: string
password: string
kaptcha: string
+ sid: string
}) {
return new Promise((resolve, reject) => {
doLogin(data).then((res) => {
diff --git a/src/views/business/bench/bench.vue b/src/views/business/bench/bench.vue
index 1f5af41..fad9269 100644
--- a/src/views/business/bench/bench.vue
+++ b/src/views/business/bench/bench.vue
@@ -243,7 +243,7 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+
+
+ 取消
+
+
+
+
+
+
diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue
index c129753..4d1b5c0 100644
--- a/src/views/business/lab/deptMeasure/deptMeasureList.vue
+++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue
@@ -1,13 +1,348 @@
-
- 部门检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 任务分发
+
+
+ 退回
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue
new file mode 100644
index 0000000..e572d09
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalAdd.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+ 提交
+
+
+ 打印
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue
new file mode 100644
index 0000000..98230be
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalList.vue
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 详情
+
+
+ 删除
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue
index 3ba89c5..800419d 100644
--- a/src/views/business/lab/myMeasure/myMeasureList.vue
+++ b/src/views/business/lab/myMeasure/myMeasureList.vue
@@ -1,13 +1,373 @@
-
- 我的检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 收入
+
+
+ 退回
+
+
+ 检测完成
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue
new file mode 100644
index 0000000..a598765
--- /dev/null
+++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 原始记录
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
new file mode 100644
index 0000000..97bea6f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
@@ -0,0 +1,664 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
new file mode 100644
index 0000000..da533b7
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
@@ -0,0 +1,1266 @@
+
+
+
+
+
+
+
+ {{ item }}
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 无
+
+
+ {{ formInline.minioFileName === '' ? '上传' : '更换附件' }}
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 审批人:{{ activity.name }}
+ 审批意见:{{ activity.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
new file mode 100644
index 0000000..5bf6f0f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
new file mode 100644
index 0000000..5c3eb39
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
@@ -0,0 +1,373 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue
index 3a3c09c..61ad34d 100644
--- a/src/views/business/schedule/task/components/chooseLab.vue
+++ b/src/views/business/schedule/task/components/chooseLab.vue
@@ -4,7 +4,7 @@
import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface'
import type { TableColumn } from '@/components/NormalTable/table_interface'
-const emits = defineEmits(['changeVisible', 'confirmCheckout'])
+const emits = defineEmits(['confirmCheckout'])
// 是否多选
const multi = ref(false)
const dialogVisible = ref(false)
diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue
index 39817f4..6cbdf10 100644
--- a/src/views/business/schedule/task/components/processNode.vue
+++ b/src/views/business/schedule/task/components/processNode.vue
@@ -149,7 +149,7 @@
-
+
diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts
index c9b3d63..7b538cf 100644
--- a/src/views/business/schedule/task/task-interface.ts
+++ b/src/views/business/schedule/task/task-interface.ts
@@ -9,7 +9,9 @@
customerName: string // 委托方名称
isUrgent: string // 是否加急
sampleAttr: string // 样品属性
- formId: string
+ sendState: string // 分发状态
+ outState: string // 超期状态
+ formId: string // formId
limit: number
offset: number
}
@@ -61,4 +63,5 @@
// 样品检测信息
export interface ISampleMeasure extends ISampleEdit {
orderId: string // 委托单id
+ certifications: string // 证书类别
}
diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue
index c8331c1..465b2e7 100644
--- a/src/views/business/schedule/task/taskEdit.vue
+++ b/src/views/business/schedule/task/taskEdit.vue
@@ -64,6 +64,7 @@
minioFileName: '', // 说明书
labelBind: '', // 标签绑定
mesureType: '', // 检定方式
+ certifications: '',
})
const ruleFormRef = ref
()
@@ -137,7 +138,7 @@
},
]
-const currentMenu = ref('检定记录')
+const currentMenu = ref('证书监控')
const currentMenuObj = computed(() => {
return menu.find(item => item.name === currentMenu.value)
})
@@ -224,6 +225,7 @@
measureResultCode: 'bhg',
deliverer: '张三',
delivererTel: '156254577545',
+ certifications: '1',
}
// for (const item of menu) {
// item.searchFunc()
@@ -587,15 +589,26 @@
-
+
-
- {{ item.name }}
+
+ 证书监控
+
+
+ 检定记录
+
+
+ 检定证书
-
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue
index 663b571..799a420 100644
--- a/src/views/business/schedule/task/taskList.vue
+++ b/src/views/business/schedule/task/taskList.vue
@@ -5,6 +5,7 @@
import { ElLoading, ElMessage } from 'element-plus'
import type { ITaskList, ITaskQuery } from './task-interface'
import DistributeDialog from './components/distributeDialog.vue'
+import BarCodeBind from '@/components/BarCodeBind/index.vue'
import type { TableColumn } from '@/components/NormalTable/table_interface'
import { printJSON } from '@/utils/printUtils'
import { exportFile } from '@/utils/exportUtils'
@@ -13,6 +14,14 @@
import type { dictType } from '@/global'
const { proxy } = getCurrentInstance() as any
const $router = useRouter()
+// 右上角按钮
+const menus = [
+ { name: '待分发', value: 'sendState;0' },
+ { name: '检测中', value: 'sendState;1' },
+ { name: '检测完', value: 'sendState;2' },
+ { name: '超期样品', value: 'outState;1' },
+]
+const currentMenu = ref('sendState;0') // 当前选中状态
// 查询条件
const timeRange = ref<[DateModelType, DateModelType]>(['', ''])
const listQuery: Ref = ref({
@@ -25,6 +34,8 @@
sampleAttr: '', // 样品属性
startTime: '', // 应检完时间-开始
endTime: '', // 应检完时间-结束
+ sendState: '', // 分发状态
+ outState: '', // 超期状态
formId: 'jlglsygfsp', // 任务分发formId
offset: 1,
limit: 20,
@@ -33,7 +44,7 @@
const sampleAttrList = ref([]) // 样品属性列表
function getDict() {
// 获取样品属性
- getDictByCode('sampleAttr').then((response) => {
+ getDictByCode('sampleBelong').then((response) => {
sampleAttrList.value = response.data
})
}
@@ -53,7 +64,6 @@
{ text: '样品属性', value: 'sampleAttrName', align: 'center' },
{ text: '当前检定环节', value: 'currentMeasureStateName', align: 'center' },
{ text: '证书出具', value: 'certificationState', align: 'center', filter: (row: ITaskList) => { return `${row.currentCertifications}/${row.requireCertifications}` } },
- { text: '标签信息', value: 'labelBind', align: 'center' },
{ text: '分发性质', value: 'distributeState', align: 'center', width: '90px' },
])
// 表格数据
@@ -78,6 +88,7 @@
{ orderId: '1', sampleNo: '1yp123457', sampleName: '压力表', orderNo: 'wtd123456', customerNo: 'kh123456', customerName: '北京无线电测量研究所', isUrgent: '0', sampleAttr: '1', sampleAttrName: '客户样品', sampleModel: 'JBT-011', manufacturingNo: '24432231124', requireOverTime: '2023-02-01', sampleId: '1', currentMeasureState: '1', currentMeasureStateName: '待分配', currentCertifications: 0, requireCertifications: 0, labelBind: '', distributeState: '2', distributeStateName: '退回分发' },
]
loadingTable.value = false
+ console.log(listQuery.value)
// getTaskList(listQuery.value).then((response) => {
// list.value = response.data.rows
// total.value = parseInt(response.data.total)
@@ -89,17 +100,6 @@
checkoutList.value = e.map((item: { id: string }) => item.id)
}
-// 点击详情
-const handleDetail = (row: ITaskList) => {
- $router.push(`/schedule/task/distribute/${row.sampleId}`)
-}
-
-// 点击分发, 弹窗
-const distributeDialogRef = ref()
-const handleDistribute = (row: ITaskList) => {
- distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
-}
-
// 点击搜索
const searchList = () => {
fetchData(true)
@@ -115,11 +115,31 @@
isUrgent: '', // 是否加急
sampleAttr: '', // 样品属性
formId: 'jlglsygfsp',
+ sendState: '1', // 分发状态
+ outState: '', // 超期状态
offset: 1,
limit: 20,
}
}
+// 点击详情
+const handleDetail = (row: ITaskList) => {
+ $router.push(`/schedule/task/distribute/${row.sampleId}`)
+}
+// 点击分发, 弹窗
+const distributeDialogRef = ref()
+const handleDistribute = (row: ITaskList) => {
+ distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
+}
+// 点击标签绑定
+const barCodeBind = ref()
+const bindLabel = (row: ITaskList) => {
+ barCodeBind.value.initDialog(row.sampleId)
+}
+// 标签绑定完成
+const bindLabelOver = () => {
+ searchList()
+}
// 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写
const changePage = (val: { size?: number; page?: number }) => {
if (val && val.size) {
@@ -178,11 +198,30 @@
}
}
-fetchData(true)
+// 选择按钮变更
+watch(currentMenu, (val: string) => {
+ const vals = val.split(';')
+ if (vals.length > 1) {
+ listQuery.value.sendState = ''
+ listQuery.value.outState = ''
+ listQuery.value[vals[0] as 'sendState' | 'outState'] = vals[1]
+ }
+ fetchData(false)
+})
+
+fetchData(false)
+
+
+
+
+ {{ item.name }}
+
+
+
详情
-
+
标签绑定
-
+
分发
+
+
+
diff --git a/src/views/customer/advice/adviceEdit.vue b/src/views/customer/advice/adviceEdit.vue
index 71da364..a5411c1 100644
--- a/src/views/customer/advice/adviceEdit.vue
+++ b/src/views/customer/advice/adviceEdit.vue
@@ -8,8 +8,6 @@
import type { FormInstance } from 'element-plus'
import type { IAdvice, SimpleCompany } from './advice_interface'
import { addAdvice, getAdviceDetail, updateAdvice } from '@/api/customer/advice'
-import { SCHEDULE } from '@/utils/scheduleDict'
-import type { IAddress } from '@/components/AddressSelect/address-interface'
import { getDictByCode } from '@/api/system/dict'
const loading = ref(false) // 表单加载状态
const infoId = ref('') // id
diff --git a/src/views/customer/advice/advice_interface.ts b/src/views/customer/advice/advice_interface.ts
index 48f6314..b08f85b 100644
--- a/src/views/customer/advice/advice_interface.ts
+++ b/src/views/customer/advice/advice_interface.ts
@@ -14,9 +14,9 @@
id: string // 主键id(列表、更新接口参数)
adviceNo: string // 投诉编号
adviceClass: string // 投诉类型
- adviceClassName: string // 投诉类型
+ adviceClassName?: string // 投诉类型
adviceType: string // 投诉类别
- adviceTypeName: string // 投诉类别
+ adviceTypeName?: string // 投诉类别
advicePerson: string // 投诉人-名称
adviceTime: string // 投诉时间
personPhone: string // 投诉人联系方式
diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue
index 0046fa3..f3024cf 100644
--- a/src/views/device/deviceMaintenance/components/checkList.vue
+++ b/src/views/device/deviceMaintenance/components/checkList.vue
@@ -17,7 +17,7 @@
applyName: '',
applyNo: '',
applyPerson: '',
- applyType: '7',
+ applyType: '8',
applyUnit: '',
businessKeys: [],
createUser: '',
@@ -35,49 +35,32 @@
const columns = ref([
{
text: '检修申请编号',
- value: 'checkApplyNo',
- width: '120',
- align: 'center',
- },
- {
- text: '检修申请名称',
- value: 'checkApplyName',
- width: '120',
- align: 'center',
- },
- {
- text: '设备编号',
value: 'applyNo',
align: 'center',
},
{
- text: '设备名称',
+ text: '检修申请名称',
value: 'applyName',
align: 'center',
},
{
- text: '出厂编号',
- value: 'overhaulPerson',
+ text: '申请单位',
+ value: 'applyUnitName',
align: 'center',
},
{
- text: '设备型号',
- value: 'createTime',
+ text: '申请人',
+ value: 'applyPersonName',
align: 'center',
},
{
- text: '送修单位',
- value: 'createTime',
+ text: '检修时间',
+ value: 'time',
align: 'center',
},
{
- text: '送修人',
- value: 'createTime',
- align: 'center',
- },
- {
- text: '申请日期',
- value: 'createTime',
+ text: '备注',
+ value: 'remark',
align: 'center',
},
{
@@ -118,7 +101,7 @@
applyName: '',
applyNo: '',
applyPerson: '',
- applyType: '7',
+ applyType: '8',
applyUnit: '',
businessKeys: [],
createUser: '',
diff --git a/src/api/business/task.ts b/src/api/business/task.ts
index a337c7f..80d91b7 100644
--- a/src/api/business/task.ts
+++ b/src/api/business/task.ts
@@ -1,5 +1,5 @@
/**
- * 任务分发
+ * 任务分发,实验室检测
*/
import request from '../index'
import type { ITaskQuery } from '@/views/business/schedule/task/task-interface'
@@ -25,7 +25,52 @@
}
// 检测流程配置
-export function interchangeListTake(data: { id: string; scheduleId: string }) {
+export function setMeasureProcess(data: { id: string; scheduleId: string }) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 退回
+export function rollbackTask(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 实验室收入样品
+export function takeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量收入样品
+export function batchTakeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 检完样品
+export function overSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量检完样品
+export function batchOverSample(data) {
return request({
url: `${prefix}/schedule/task/setSchedule`,
method: 'post',
diff --git a/src/api/device/standard.ts b/src/api/device/standard.ts
index 6e6fdfa..064780f 100644
--- a/src/api/device/standard.ts
+++ b/src/api/device/standard.ts
@@ -73,6 +73,15 @@
})
}
+// 删除申请列表信息
+export function getOperateDelete(data: object) {
+ return request({
+ url: '/standard/approval/operate/delete',
+ method: 'post',
+ data,
+ })
+}
+
// 新建申请列表信息
export function getStandardLisAdd(data: object) {
return request({
@@ -127,3 +136,86 @@
})
}
+// 批量添加标准装置底部计量人员
+export function setBatchAdd(data: object) {
+ return request({
+ url: '/meter/standard/user/batchAdd',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-计量人员列表(分页)
+export function getuserListPage(data: object) {
+ return request({
+ url: '/meter/standard/user/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-删除计量人员
+export function getuserDelete(data: object) {
+ return request({
+ url: '/meter/standard/user/delete',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-配套设备列表(分页)
+export function getEquipmentListPage(data: object) {
+ return request({
+ url: '/meter/standard/equipment/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加标准配套设备
+export function getEquipmenteAdd(data: object) {
+ return request({
+ url: '/meter/standard/equipment/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加检定规程
+export function getRegulationAdd(data: object) {
+ return request({
+ url: '/meter/standard/regulation/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-检定规程列表(分页)
+export function getRegulationListPage(data: object) {
+ return request({
+ url: '/meter/standard/regulation/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置导出
+export function getExportExcel(data: object) {
+ return request({
+ url: '/meter/standard/exportExcel',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
+// 标准装置申请导出
+export function getExportList(data: object) {
+ return request({
+ url: '/standard/exportList',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts
index 8bfe87e..50cf032 100644
--- a/src/api/measure/person.ts
+++ b/src/api/measure/person.ts
@@ -9,6 +9,14 @@
data,
})
}
+// 计量人员列表-不分页
+export function getStaffListAll(data: { deptId: string; name: string }) {
+ return request({
+ url: '/staff/getUserList',
+ method: 'post',
+ data,
+ })
+}
// 人员详细信息
export function getStaffDetail(data: object) {
return request({
diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg
new file mode 100644
index 0000000..f39dba8
--- /dev/null
+++ b/src/assets/icons/icon-scan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png
new file mode 100644
index 0000000..a56bf3e
--- /dev/null
+++ b/src/assets/images/scan.png
Binary files differ
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 67d321f..01d46ac 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -136,3 +136,10 @@
// cursor: text;
// }
}
+
+.float-radio-buttons {
+ position: fixed;
+ top: 67px;
+ right: 15px;
+ z-index: 999;
+}
diff --git a/src/components.d.ts b/src/components.d.ts
index 0ca1396..227585d 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -18,8 +18,11 @@
AuthAll: typeof import('./components/AuthAll/index.vue')['default']
BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default']
BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default']
+ BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default']
BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default']
BenchCol: typeof import('./components/benchCol/index.vue')['default']
+ CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default']
+ CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default']
ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default']
CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default']
Copyright: typeof import('./components/Copyright/index.vue')['default']
@@ -36,6 +39,7 @@
ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default']
ImageUpload: typeof import('./components/ImageUpload/index.vue')['default']
LineChart: typeof import('./components/Echart/LineChart.vue')['default']
+ MeasureRecords: typeof import('./components/Sample/measureRecords.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']
@@ -47,11 +51,13 @@
QrDialog: typeof import('./components/QrDialog/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
+ ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default']
SearchArea: typeof import('./components/SearchArea/index.vue')['default']
SearchBar: typeof import('./components/SearchBar/index.vue')['default']
SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default']
SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default']
SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default']
+ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default']
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue
new file mode 100644
index 0000000..0b7d7e8
--- /dev/null
+++ b/src/components/BarCodeBind/index.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个条码{{ list.length > 1 ? ',请选择要绑定的条码。' : '' }}
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue
new file mode 100644
index 0000000..16c1311
--- /dev/null
+++ b/src/components/Sample/certificationMonitor.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue
new file mode 100644
index 0000000..a694ce6
--- /dev/null
+++ b/src/components/Sample/certificationRecords.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue
new file mode 100644
index 0000000..b88e552
--- /dev/null
+++ b/src/components/Sample/measureRecords.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue
new file mode 100644
index 0000000..4e160a5
--- /dev/null
+++ b/src/components/ScanSampleDialog/index.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个样品{{ list.length > 1 ? ',请移除不需要绑定的样品。' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts
new file mode 100644
index 0000000..1c3aa33
--- /dev/null
+++ b/src/components/ScanSampleDialog/scan-interface.ts
@@ -0,0 +1,12 @@
+export interface ISampleScan {
+ sampleId?: string // 样品id
+ sampleNo: string // 样品编号
+ sampleName: string // 样品名称
+ sampleModel: string // 样品型号
+ manufacturingNo: string // 出厂编号
+ customerNo: string // 委托方代码
+ customerName: string // 委托方名称
+ orderId: string // 委托书id
+ orderNo: string // 委托书编号
+ labelBind: string // 标签绑定
+}
diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue
new file mode 100644
index 0000000..be9415b
--- /dev/null
+++ b/src/components/dialog/selectStaffDialog.vue
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (listQuery.offset - 1) * listQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
+
+
diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts
index a2fd12e..6a14d78 100644
--- a/src/router/modules/business.ts
+++ b/src/router/modules/business.ts
@@ -96,7 +96,7 @@
{
path: 'receipt/:type/:id?',
name: 'InterchangeReceiptDetail',
- component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'),
+ component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'),
meta: {
title: '设备交接单详情',
icon: 'ep:key',
@@ -196,6 +196,60 @@
activeMenu: '/lab/deptMeasureList',
},
},
+ {
+ path: 'reportOnCredentialsApproval',
+ name: 'ReportOnCredentialsApproval',
+ component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'),
+ meta: {
+ title: '证书报告',
+ icon: 'ep:key',
+ auth: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'reportOnCredentialsApproval/:type/:id?',
+ name: 'reportOnCredentialsAdd',
+ component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'),
+ meta: {
+ title: '证书报告详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'primitiveLogList',
+ name: 'PrimitiveLogList',
+ component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'),
+ meta: {
+ title: '原始记录',
+ icon: 'ep:key',
+ auth: '/lab/primitiveLogList',
+ },
+ },
+ {
+ path: 'environmentalList',
+ name: 'EnvironmentalList',
+ component: () => import('@/views/business/lab/environmental/environmentalList.vue'),
+ meta: {
+ title: '环境记录单',
+ icon: 'ep:key',
+ auth: '/lab/environmentalList',
+ },
+ },
+ {
+ path: 'environmentalList/:type/:id?',
+ name: 'EnvironmentalAdd',
+ component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'),
+ meta: {
+ title: '环境记录单详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/environmentalList',
+ },
+ },
],
},
]
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
index 993d66c..cbc5c47 100644
--- a/src/router/modules/device.ts
+++ b/src/router/modules/device.ts
@@ -238,7 +238,7 @@
},
},
{
- path: ':type/:id?',
+ path: 'Apply:type/:id?',
name: 'standardListAdd',
component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'),
meta: {
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 1264d2e..cfcbfaf 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -72,6 +72,7 @@
username: string
password: string
kaptcha: string
+ sid: string
}) {
return new Promise((resolve, reject) => {
doLogin(data).then((res) => {
diff --git a/src/views/business/bench/bench.vue b/src/views/business/bench/bench.vue
index 1f5af41..fad9269 100644
--- a/src/views/business/bench/bench.vue
+++ b/src/views/business/bench/bench.vue
@@ -243,7 +243,7 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+
+
+ 取消
+
+
+
+
+
+
diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue
index c129753..4d1b5c0 100644
--- a/src/views/business/lab/deptMeasure/deptMeasureList.vue
+++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue
@@ -1,13 +1,348 @@
-
- 部门检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 任务分发
+
+
+ 退回
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue
new file mode 100644
index 0000000..e572d09
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalAdd.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+ 提交
+
+
+ 打印
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue
new file mode 100644
index 0000000..98230be
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalList.vue
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 详情
+
+
+ 删除
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue
index 3ba89c5..800419d 100644
--- a/src/views/business/lab/myMeasure/myMeasureList.vue
+++ b/src/views/business/lab/myMeasure/myMeasureList.vue
@@ -1,13 +1,373 @@
-
- 我的检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 收入
+
+
+ 退回
+
+
+ 检测完成
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue
new file mode 100644
index 0000000..a598765
--- /dev/null
+++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 原始记录
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
new file mode 100644
index 0000000..97bea6f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
@@ -0,0 +1,664 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
new file mode 100644
index 0000000..da533b7
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
@@ -0,0 +1,1266 @@
+
+
+
+
+
+
+
+ {{ item }}
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 无
+
+
+ {{ formInline.minioFileName === '' ? '上传' : '更换附件' }}
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 审批人:{{ activity.name }}
+ 审批意见:{{ activity.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
new file mode 100644
index 0000000..5bf6f0f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
new file mode 100644
index 0000000..5c3eb39
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
@@ -0,0 +1,373 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue
index 3a3c09c..61ad34d 100644
--- a/src/views/business/schedule/task/components/chooseLab.vue
+++ b/src/views/business/schedule/task/components/chooseLab.vue
@@ -4,7 +4,7 @@
import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface'
import type { TableColumn } from '@/components/NormalTable/table_interface'
-const emits = defineEmits(['changeVisible', 'confirmCheckout'])
+const emits = defineEmits(['confirmCheckout'])
// 是否多选
const multi = ref(false)
const dialogVisible = ref(false)
diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue
index 39817f4..6cbdf10 100644
--- a/src/views/business/schedule/task/components/processNode.vue
+++ b/src/views/business/schedule/task/components/processNode.vue
@@ -149,7 +149,7 @@
-
+
diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts
index c9b3d63..7b538cf 100644
--- a/src/views/business/schedule/task/task-interface.ts
+++ b/src/views/business/schedule/task/task-interface.ts
@@ -9,7 +9,9 @@
customerName: string // 委托方名称
isUrgent: string // 是否加急
sampleAttr: string // 样品属性
- formId: string
+ sendState: string // 分发状态
+ outState: string // 超期状态
+ formId: string // formId
limit: number
offset: number
}
@@ -61,4 +63,5 @@
// 样品检测信息
export interface ISampleMeasure extends ISampleEdit {
orderId: string // 委托单id
+ certifications: string // 证书类别
}
diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue
index c8331c1..465b2e7 100644
--- a/src/views/business/schedule/task/taskEdit.vue
+++ b/src/views/business/schedule/task/taskEdit.vue
@@ -64,6 +64,7 @@
minioFileName: '', // 说明书
labelBind: '', // 标签绑定
mesureType: '', // 检定方式
+ certifications: '',
})
const ruleFormRef = ref
()
@@ -137,7 +138,7 @@
},
]
-const currentMenu = ref('检定记录')
+const currentMenu = ref('证书监控')
const currentMenuObj = computed(() => {
return menu.find(item => item.name === currentMenu.value)
})
@@ -224,6 +225,7 @@
measureResultCode: 'bhg',
deliverer: '张三',
delivererTel: '156254577545',
+ certifications: '1',
}
// for (const item of menu) {
// item.searchFunc()
@@ -587,15 +589,26 @@
-
+
-
- {{ item.name }}
+
+ 证书监控
+
+
+ 检定记录
+
+
+ 检定证书
-
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue
index 663b571..799a420 100644
--- a/src/views/business/schedule/task/taskList.vue
+++ b/src/views/business/schedule/task/taskList.vue
@@ -5,6 +5,7 @@
import { ElLoading, ElMessage } from 'element-plus'
import type { ITaskList, ITaskQuery } from './task-interface'
import DistributeDialog from './components/distributeDialog.vue'
+import BarCodeBind from '@/components/BarCodeBind/index.vue'
import type { TableColumn } from '@/components/NormalTable/table_interface'
import { printJSON } from '@/utils/printUtils'
import { exportFile } from '@/utils/exportUtils'
@@ -13,6 +14,14 @@
import type { dictType } from '@/global'
const { proxy } = getCurrentInstance() as any
const $router = useRouter()
+// 右上角按钮
+const menus = [
+ { name: '待分发', value: 'sendState;0' },
+ { name: '检测中', value: 'sendState;1' },
+ { name: '检测完', value: 'sendState;2' },
+ { name: '超期样品', value: 'outState;1' },
+]
+const currentMenu = ref('sendState;0') // 当前选中状态
// 查询条件
const timeRange = ref<[DateModelType, DateModelType]>(['', ''])
const listQuery: Ref = ref({
@@ -25,6 +34,8 @@
sampleAttr: '', // 样品属性
startTime: '', // 应检完时间-开始
endTime: '', // 应检完时间-结束
+ sendState: '', // 分发状态
+ outState: '', // 超期状态
formId: 'jlglsygfsp', // 任务分发formId
offset: 1,
limit: 20,
@@ -33,7 +44,7 @@
const sampleAttrList = ref([]) // 样品属性列表
function getDict() {
// 获取样品属性
- getDictByCode('sampleAttr').then((response) => {
+ getDictByCode('sampleBelong').then((response) => {
sampleAttrList.value = response.data
})
}
@@ -53,7 +64,6 @@
{ text: '样品属性', value: 'sampleAttrName', align: 'center' },
{ text: '当前检定环节', value: 'currentMeasureStateName', align: 'center' },
{ text: '证书出具', value: 'certificationState', align: 'center', filter: (row: ITaskList) => { return `${row.currentCertifications}/${row.requireCertifications}` } },
- { text: '标签信息', value: 'labelBind', align: 'center' },
{ text: '分发性质', value: 'distributeState', align: 'center', width: '90px' },
])
// 表格数据
@@ -78,6 +88,7 @@
{ orderId: '1', sampleNo: '1yp123457', sampleName: '压力表', orderNo: 'wtd123456', customerNo: 'kh123456', customerName: '北京无线电测量研究所', isUrgent: '0', sampleAttr: '1', sampleAttrName: '客户样品', sampleModel: 'JBT-011', manufacturingNo: '24432231124', requireOverTime: '2023-02-01', sampleId: '1', currentMeasureState: '1', currentMeasureStateName: '待分配', currentCertifications: 0, requireCertifications: 0, labelBind: '', distributeState: '2', distributeStateName: '退回分发' },
]
loadingTable.value = false
+ console.log(listQuery.value)
// getTaskList(listQuery.value).then((response) => {
// list.value = response.data.rows
// total.value = parseInt(response.data.total)
@@ -89,17 +100,6 @@
checkoutList.value = e.map((item: { id: string }) => item.id)
}
-// 点击详情
-const handleDetail = (row: ITaskList) => {
- $router.push(`/schedule/task/distribute/${row.sampleId}`)
-}
-
-// 点击分发, 弹窗
-const distributeDialogRef = ref()
-const handleDistribute = (row: ITaskList) => {
- distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
-}
-
// 点击搜索
const searchList = () => {
fetchData(true)
@@ -115,11 +115,31 @@
isUrgent: '', // 是否加急
sampleAttr: '', // 样品属性
formId: 'jlglsygfsp',
+ sendState: '1', // 分发状态
+ outState: '', // 超期状态
offset: 1,
limit: 20,
}
}
+// 点击详情
+const handleDetail = (row: ITaskList) => {
+ $router.push(`/schedule/task/distribute/${row.sampleId}`)
+}
+// 点击分发, 弹窗
+const distributeDialogRef = ref()
+const handleDistribute = (row: ITaskList) => {
+ distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
+}
+// 点击标签绑定
+const barCodeBind = ref()
+const bindLabel = (row: ITaskList) => {
+ barCodeBind.value.initDialog(row.sampleId)
+}
+// 标签绑定完成
+const bindLabelOver = () => {
+ searchList()
+}
// 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写
const changePage = (val: { size?: number; page?: number }) => {
if (val && val.size) {
@@ -178,11 +198,30 @@
}
}
-fetchData(true)
+// 选择按钮变更
+watch(currentMenu, (val: string) => {
+ const vals = val.split(';')
+ if (vals.length > 1) {
+ listQuery.value.sendState = ''
+ listQuery.value.outState = ''
+ listQuery.value[vals[0] as 'sendState' | 'outState'] = vals[1]
+ }
+ fetchData(false)
+})
+
+fetchData(false)
+
+
+
+
+ {{ item.name }}
+
+
+
详情
-
+
标签绑定
-
+
分发
+
+
+
diff --git a/src/views/customer/advice/adviceEdit.vue b/src/views/customer/advice/adviceEdit.vue
index 71da364..a5411c1 100644
--- a/src/views/customer/advice/adviceEdit.vue
+++ b/src/views/customer/advice/adviceEdit.vue
@@ -8,8 +8,6 @@
import type { FormInstance } from 'element-plus'
import type { IAdvice, SimpleCompany } from './advice_interface'
import { addAdvice, getAdviceDetail, updateAdvice } from '@/api/customer/advice'
-import { SCHEDULE } from '@/utils/scheduleDict'
-import type { IAddress } from '@/components/AddressSelect/address-interface'
import { getDictByCode } from '@/api/system/dict'
const loading = ref(false) // 表单加载状态
const infoId = ref('') // id
diff --git a/src/views/customer/advice/advice_interface.ts b/src/views/customer/advice/advice_interface.ts
index 48f6314..b08f85b 100644
--- a/src/views/customer/advice/advice_interface.ts
+++ b/src/views/customer/advice/advice_interface.ts
@@ -14,9 +14,9 @@
id: string // 主键id(列表、更新接口参数)
adviceNo: string // 投诉编号
adviceClass: string // 投诉类型
- adviceClassName: string // 投诉类型
+ adviceClassName?: string // 投诉类型
adviceType: string // 投诉类别
- adviceTypeName: string // 投诉类别
+ adviceTypeName?: string // 投诉类别
advicePerson: string // 投诉人-名称
adviceTime: string // 投诉时间
personPhone: string // 投诉人联系方式
diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue
index 0046fa3..f3024cf 100644
--- a/src/views/device/deviceMaintenance/components/checkList.vue
+++ b/src/views/device/deviceMaintenance/components/checkList.vue
@@ -17,7 +17,7 @@
applyName: '',
applyNo: '',
applyPerson: '',
- applyType: '7',
+ applyType: '8',
applyUnit: '',
businessKeys: [],
createUser: '',
@@ -35,49 +35,32 @@
const columns = ref([
{
text: '检修申请编号',
- value: 'checkApplyNo',
- width: '120',
- align: 'center',
- },
- {
- text: '检修申请名称',
- value: 'checkApplyName',
- width: '120',
- align: 'center',
- },
- {
- text: '设备编号',
value: 'applyNo',
align: 'center',
},
{
- text: '设备名称',
+ text: '检修申请名称',
value: 'applyName',
align: 'center',
},
{
- text: '出厂编号',
- value: 'overhaulPerson',
+ text: '申请单位',
+ value: 'applyUnitName',
align: 'center',
},
{
- text: '设备型号',
- value: 'createTime',
+ text: '申请人',
+ value: 'applyPersonName',
align: 'center',
},
{
- text: '送修单位',
- value: 'createTime',
+ text: '检修时间',
+ value: 'time',
align: 'center',
},
{
- text: '送修人',
- value: 'createTime',
- align: 'center',
- },
- {
- text: '申请日期',
- value: 'createTime',
+ text: '备注',
+ value: 'remark',
align: 'center',
},
{
@@ -118,7 +101,7 @@
applyName: '',
applyNo: '',
applyPerson: '',
- applyType: '7',
+ applyType: '8',
applyUnit: '',
businessKeys: [],
createUser: '',
diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue
index 8fec470..bd296f1 100644
--- a/src/views/device/deviceMaintenance/components/listApproval.vue
+++ b/src/views/device/deviceMaintenance/components/listApproval.vue
@@ -37,7 +37,7 @@
formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE,
applyName: '',
applyNo: '',
- applyType: '',
+ applyType: '9',
businessKeys: [],
checkApplyNo: '',
checkEndDate: '',
diff --git a/src/api/business/task.ts b/src/api/business/task.ts
index a337c7f..80d91b7 100644
--- a/src/api/business/task.ts
+++ b/src/api/business/task.ts
@@ -1,5 +1,5 @@
/**
- * 任务分发
+ * 任务分发,实验室检测
*/
import request from '../index'
import type { ITaskQuery } from '@/views/business/schedule/task/task-interface'
@@ -25,7 +25,52 @@
}
// 检测流程配置
-export function interchangeListTake(data: { id: string; scheduleId: string }) {
+export function setMeasureProcess(data: { id: string; scheduleId: string }) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 退回
+export function rollbackTask(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 实验室收入样品
+export function takeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量收入样品
+export function batchTakeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 检完样品
+export function overSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量检完样品
+export function batchOverSample(data) {
return request({
url: `${prefix}/schedule/task/setSchedule`,
method: 'post',
diff --git a/src/api/device/standard.ts b/src/api/device/standard.ts
index 6e6fdfa..064780f 100644
--- a/src/api/device/standard.ts
+++ b/src/api/device/standard.ts
@@ -73,6 +73,15 @@
})
}
+// 删除申请列表信息
+export function getOperateDelete(data: object) {
+ return request({
+ url: '/standard/approval/operate/delete',
+ method: 'post',
+ data,
+ })
+}
+
// 新建申请列表信息
export function getStandardLisAdd(data: object) {
return request({
@@ -127,3 +136,86 @@
})
}
+// 批量添加标准装置底部计量人员
+export function setBatchAdd(data: object) {
+ return request({
+ url: '/meter/standard/user/batchAdd',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-计量人员列表(分页)
+export function getuserListPage(data: object) {
+ return request({
+ url: '/meter/standard/user/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-删除计量人员
+export function getuserDelete(data: object) {
+ return request({
+ url: '/meter/standard/user/delete',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-配套设备列表(分页)
+export function getEquipmentListPage(data: object) {
+ return request({
+ url: '/meter/standard/equipment/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加标准配套设备
+export function getEquipmenteAdd(data: object) {
+ return request({
+ url: '/meter/standard/equipment/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加检定规程
+export function getRegulationAdd(data: object) {
+ return request({
+ url: '/meter/standard/regulation/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-检定规程列表(分页)
+export function getRegulationListPage(data: object) {
+ return request({
+ url: '/meter/standard/regulation/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置导出
+export function getExportExcel(data: object) {
+ return request({
+ url: '/meter/standard/exportExcel',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
+// 标准装置申请导出
+export function getExportList(data: object) {
+ return request({
+ url: '/standard/exportList',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts
index 8bfe87e..50cf032 100644
--- a/src/api/measure/person.ts
+++ b/src/api/measure/person.ts
@@ -9,6 +9,14 @@
data,
})
}
+// 计量人员列表-不分页
+export function getStaffListAll(data: { deptId: string; name: string }) {
+ return request({
+ url: '/staff/getUserList',
+ method: 'post',
+ data,
+ })
+}
// 人员详细信息
export function getStaffDetail(data: object) {
return request({
diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg
new file mode 100644
index 0000000..f39dba8
--- /dev/null
+++ b/src/assets/icons/icon-scan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png
new file mode 100644
index 0000000..a56bf3e
--- /dev/null
+++ b/src/assets/images/scan.png
Binary files differ
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 67d321f..01d46ac 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -136,3 +136,10 @@
// cursor: text;
// }
}
+
+.float-radio-buttons {
+ position: fixed;
+ top: 67px;
+ right: 15px;
+ z-index: 999;
+}
diff --git a/src/components.d.ts b/src/components.d.ts
index 0ca1396..227585d 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -18,8 +18,11 @@
AuthAll: typeof import('./components/AuthAll/index.vue')['default']
BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default']
BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default']
+ BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default']
BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default']
BenchCol: typeof import('./components/benchCol/index.vue')['default']
+ CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default']
+ CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default']
ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default']
CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default']
Copyright: typeof import('./components/Copyright/index.vue')['default']
@@ -36,6 +39,7 @@
ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default']
ImageUpload: typeof import('./components/ImageUpload/index.vue')['default']
LineChart: typeof import('./components/Echart/LineChart.vue')['default']
+ MeasureRecords: typeof import('./components/Sample/measureRecords.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']
@@ -47,11 +51,13 @@
QrDialog: typeof import('./components/QrDialog/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
+ ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default']
SearchArea: typeof import('./components/SearchArea/index.vue')['default']
SearchBar: typeof import('./components/SearchBar/index.vue')['default']
SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default']
SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default']
SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default']
+ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default']
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue
new file mode 100644
index 0000000..0b7d7e8
--- /dev/null
+++ b/src/components/BarCodeBind/index.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个条码{{ list.length > 1 ? ',请选择要绑定的条码。' : '' }}
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue
new file mode 100644
index 0000000..16c1311
--- /dev/null
+++ b/src/components/Sample/certificationMonitor.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue
new file mode 100644
index 0000000..a694ce6
--- /dev/null
+++ b/src/components/Sample/certificationRecords.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue
new file mode 100644
index 0000000..b88e552
--- /dev/null
+++ b/src/components/Sample/measureRecords.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue
new file mode 100644
index 0000000..4e160a5
--- /dev/null
+++ b/src/components/ScanSampleDialog/index.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个样品{{ list.length > 1 ? ',请移除不需要绑定的样品。' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts
new file mode 100644
index 0000000..1c3aa33
--- /dev/null
+++ b/src/components/ScanSampleDialog/scan-interface.ts
@@ -0,0 +1,12 @@
+export interface ISampleScan {
+ sampleId?: string // 样品id
+ sampleNo: string // 样品编号
+ sampleName: string // 样品名称
+ sampleModel: string // 样品型号
+ manufacturingNo: string // 出厂编号
+ customerNo: string // 委托方代码
+ customerName: string // 委托方名称
+ orderId: string // 委托书id
+ orderNo: string // 委托书编号
+ labelBind: string // 标签绑定
+}
diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue
new file mode 100644
index 0000000..be9415b
--- /dev/null
+++ b/src/components/dialog/selectStaffDialog.vue
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (listQuery.offset - 1) * listQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
+
+
diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts
index a2fd12e..6a14d78 100644
--- a/src/router/modules/business.ts
+++ b/src/router/modules/business.ts
@@ -96,7 +96,7 @@
{
path: 'receipt/:type/:id?',
name: 'InterchangeReceiptDetail',
- component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'),
+ component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'),
meta: {
title: '设备交接单详情',
icon: 'ep:key',
@@ -196,6 +196,60 @@
activeMenu: '/lab/deptMeasureList',
},
},
+ {
+ path: 'reportOnCredentialsApproval',
+ name: 'ReportOnCredentialsApproval',
+ component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'),
+ meta: {
+ title: '证书报告',
+ icon: 'ep:key',
+ auth: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'reportOnCredentialsApproval/:type/:id?',
+ name: 'reportOnCredentialsAdd',
+ component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'),
+ meta: {
+ title: '证书报告详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'primitiveLogList',
+ name: 'PrimitiveLogList',
+ component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'),
+ meta: {
+ title: '原始记录',
+ icon: 'ep:key',
+ auth: '/lab/primitiveLogList',
+ },
+ },
+ {
+ path: 'environmentalList',
+ name: 'EnvironmentalList',
+ component: () => import('@/views/business/lab/environmental/environmentalList.vue'),
+ meta: {
+ title: '环境记录单',
+ icon: 'ep:key',
+ auth: '/lab/environmentalList',
+ },
+ },
+ {
+ path: 'environmentalList/:type/:id?',
+ name: 'EnvironmentalAdd',
+ component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'),
+ meta: {
+ title: '环境记录单详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/environmentalList',
+ },
+ },
],
},
]
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
index 993d66c..cbc5c47 100644
--- a/src/router/modules/device.ts
+++ b/src/router/modules/device.ts
@@ -238,7 +238,7 @@
},
},
{
- path: ':type/:id?',
+ path: 'Apply:type/:id?',
name: 'standardListAdd',
component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'),
meta: {
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 1264d2e..cfcbfaf 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -72,6 +72,7 @@
username: string
password: string
kaptcha: string
+ sid: string
}) {
return new Promise((resolve, reject) => {
doLogin(data).then((res) => {
diff --git a/src/views/business/bench/bench.vue b/src/views/business/bench/bench.vue
index 1f5af41..fad9269 100644
--- a/src/views/business/bench/bench.vue
+++ b/src/views/business/bench/bench.vue
@@ -243,7 +243,7 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+
+
+ 取消
+
+
+
+
+
+
diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue
index c129753..4d1b5c0 100644
--- a/src/views/business/lab/deptMeasure/deptMeasureList.vue
+++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue
@@ -1,13 +1,348 @@
-
- 部门检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 任务分发
+
+
+ 退回
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue
new file mode 100644
index 0000000..e572d09
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalAdd.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+ 提交
+
+
+ 打印
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue
new file mode 100644
index 0000000..98230be
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalList.vue
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 详情
+
+
+ 删除
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue
index 3ba89c5..800419d 100644
--- a/src/views/business/lab/myMeasure/myMeasureList.vue
+++ b/src/views/business/lab/myMeasure/myMeasureList.vue
@@ -1,13 +1,373 @@
-
- 我的检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 收入
+
+
+ 退回
+
+
+ 检测完成
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue
new file mode 100644
index 0000000..a598765
--- /dev/null
+++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 原始记录
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
new file mode 100644
index 0000000..97bea6f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
@@ -0,0 +1,664 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
new file mode 100644
index 0000000..da533b7
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
@@ -0,0 +1,1266 @@
+
+
+
+
+
+
+
+ {{ item }}
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 无
+
+
+ {{ formInline.minioFileName === '' ? '上传' : '更换附件' }}
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 审批人:{{ activity.name }}
+ 审批意见:{{ activity.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
new file mode 100644
index 0000000..5bf6f0f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
new file mode 100644
index 0000000..5c3eb39
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
@@ -0,0 +1,373 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue
index 3a3c09c..61ad34d 100644
--- a/src/views/business/schedule/task/components/chooseLab.vue
+++ b/src/views/business/schedule/task/components/chooseLab.vue
@@ -4,7 +4,7 @@
import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface'
import type { TableColumn } from '@/components/NormalTable/table_interface'
-const emits = defineEmits(['changeVisible', 'confirmCheckout'])
+const emits = defineEmits(['confirmCheckout'])
// 是否多选
const multi = ref(false)
const dialogVisible = ref(false)
diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue
index 39817f4..6cbdf10 100644
--- a/src/views/business/schedule/task/components/processNode.vue
+++ b/src/views/business/schedule/task/components/processNode.vue
@@ -149,7 +149,7 @@
-
+
diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts
index c9b3d63..7b538cf 100644
--- a/src/views/business/schedule/task/task-interface.ts
+++ b/src/views/business/schedule/task/task-interface.ts
@@ -9,7 +9,9 @@
customerName: string // 委托方名称
isUrgent: string // 是否加急
sampleAttr: string // 样品属性
- formId: string
+ sendState: string // 分发状态
+ outState: string // 超期状态
+ formId: string // formId
limit: number
offset: number
}
@@ -61,4 +63,5 @@
// 样品检测信息
export interface ISampleMeasure extends ISampleEdit {
orderId: string // 委托单id
+ certifications: string // 证书类别
}
diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue
index c8331c1..465b2e7 100644
--- a/src/views/business/schedule/task/taskEdit.vue
+++ b/src/views/business/schedule/task/taskEdit.vue
@@ -64,6 +64,7 @@
minioFileName: '', // 说明书
labelBind: '', // 标签绑定
mesureType: '', // 检定方式
+ certifications: '',
})
const ruleFormRef = ref
()
@@ -137,7 +138,7 @@
},
]
-const currentMenu = ref('检定记录')
+const currentMenu = ref('证书监控')
const currentMenuObj = computed(() => {
return menu.find(item => item.name === currentMenu.value)
})
@@ -224,6 +225,7 @@
measureResultCode: 'bhg',
deliverer: '张三',
delivererTel: '156254577545',
+ certifications: '1',
}
// for (const item of menu) {
// item.searchFunc()
@@ -587,15 +589,26 @@
-
+
-
- {{ item.name }}
+
+ 证书监控
+
+
+ 检定记录
+
+
+ 检定证书
-
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue
index 663b571..799a420 100644
--- a/src/views/business/schedule/task/taskList.vue
+++ b/src/views/business/schedule/task/taskList.vue
@@ -5,6 +5,7 @@
import { ElLoading, ElMessage } from 'element-plus'
import type { ITaskList, ITaskQuery } from './task-interface'
import DistributeDialog from './components/distributeDialog.vue'
+import BarCodeBind from '@/components/BarCodeBind/index.vue'
import type { TableColumn } from '@/components/NormalTable/table_interface'
import { printJSON } from '@/utils/printUtils'
import { exportFile } from '@/utils/exportUtils'
@@ -13,6 +14,14 @@
import type { dictType } from '@/global'
const { proxy } = getCurrentInstance() as any
const $router = useRouter()
+// 右上角按钮
+const menus = [
+ { name: '待分发', value: 'sendState;0' },
+ { name: '检测中', value: 'sendState;1' },
+ { name: '检测完', value: 'sendState;2' },
+ { name: '超期样品', value: 'outState;1' },
+]
+const currentMenu = ref('sendState;0') // 当前选中状态
// 查询条件
const timeRange = ref<[DateModelType, DateModelType]>(['', ''])
const listQuery: Ref = ref({
@@ -25,6 +34,8 @@
sampleAttr: '', // 样品属性
startTime: '', // 应检完时间-开始
endTime: '', // 应检完时间-结束
+ sendState: '', // 分发状态
+ outState: '', // 超期状态
formId: 'jlglsygfsp', // 任务分发formId
offset: 1,
limit: 20,
@@ -33,7 +44,7 @@
const sampleAttrList = ref([]) // 样品属性列表
function getDict() {
// 获取样品属性
- getDictByCode('sampleAttr').then((response) => {
+ getDictByCode('sampleBelong').then((response) => {
sampleAttrList.value = response.data
})
}
@@ -53,7 +64,6 @@
{ text: '样品属性', value: 'sampleAttrName', align: 'center' },
{ text: '当前检定环节', value: 'currentMeasureStateName', align: 'center' },
{ text: '证书出具', value: 'certificationState', align: 'center', filter: (row: ITaskList) => { return `${row.currentCertifications}/${row.requireCertifications}` } },
- { text: '标签信息', value: 'labelBind', align: 'center' },
{ text: '分发性质', value: 'distributeState', align: 'center', width: '90px' },
])
// 表格数据
@@ -78,6 +88,7 @@
{ orderId: '1', sampleNo: '1yp123457', sampleName: '压力表', orderNo: 'wtd123456', customerNo: 'kh123456', customerName: '北京无线电测量研究所', isUrgent: '0', sampleAttr: '1', sampleAttrName: '客户样品', sampleModel: 'JBT-011', manufacturingNo: '24432231124', requireOverTime: '2023-02-01', sampleId: '1', currentMeasureState: '1', currentMeasureStateName: '待分配', currentCertifications: 0, requireCertifications: 0, labelBind: '', distributeState: '2', distributeStateName: '退回分发' },
]
loadingTable.value = false
+ console.log(listQuery.value)
// getTaskList(listQuery.value).then((response) => {
// list.value = response.data.rows
// total.value = parseInt(response.data.total)
@@ -89,17 +100,6 @@
checkoutList.value = e.map((item: { id: string }) => item.id)
}
-// 点击详情
-const handleDetail = (row: ITaskList) => {
- $router.push(`/schedule/task/distribute/${row.sampleId}`)
-}
-
-// 点击分发, 弹窗
-const distributeDialogRef = ref()
-const handleDistribute = (row: ITaskList) => {
- distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
-}
-
// 点击搜索
const searchList = () => {
fetchData(true)
@@ -115,11 +115,31 @@
isUrgent: '', // 是否加急
sampleAttr: '', // 样品属性
formId: 'jlglsygfsp',
+ sendState: '1', // 分发状态
+ outState: '', // 超期状态
offset: 1,
limit: 20,
}
}
+// 点击详情
+const handleDetail = (row: ITaskList) => {
+ $router.push(`/schedule/task/distribute/${row.sampleId}`)
+}
+// 点击分发, 弹窗
+const distributeDialogRef = ref()
+const handleDistribute = (row: ITaskList) => {
+ distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
+}
+// 点击标签绑定
+const barCodeBind = ref()
+const bindLabel = (row: ITaskList) => {
+ barCodeBind.value.initDialog(row.sampleId)
+}
+// 标签绑定完成
+const bindLabelOver = () => {
+ searchList()
+}
// 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写
const changePage = (val: { size?: number; page?: number }) => {
if (val && val.size) {
@@ -178,11 +198,30 @@
}
}
-fetchData(true)
+// 选择按钮变更
+watch(currentMenu, (val: string) => {
+ const vals = val.split(';')
+ if (vals.length > 1) {
+ listQuery.value.sendState = ''
+ listQuery.value.outState = ''
+ listQuery.value[vals[0] as 'sendState' | 'outState'] = vals[1]
+ }
+ fetchData(false)
+})
+
+fetchData(false)
+
+
+
+
+ {{ item.name }}
+
+
+
详情
-
+
标签绑定
-
+
分发
+
+
+
diff --git a/src/views/customer/advice/adviceEdit.vue b/src/views/customer/advice/adviceEdit.vue
index 71da364..a5411c1 100644
--- a/src/views/customer/advice/adviceEdit.vue
+++ b/src/views/customer/advice/adviceEdit.vue
@@ -8,8 +8,6 @@
import type { FormInstance } from 'element-plus'
import type { IAdvice, SimpleCompany } from './advice_interface'
import { addAdvice, getAdviceDetail, updateAdvice } from '@/api/customer/advice'
-import { SCHEDULE } from '@/utils/scheduleDict'
-import type { IAddress } from '@/components/AddressSelect/address-interface'
import { getDictByCode } from '@/api/system/dict'
const loading = ref(false) // 表单加载状态
const infoId = ref('') // id
diff --git a/src/views/customer/advice/advice_interface.ts b/src/views/customer/advice/advice_interface.ts
index 48f6314..b08f85b 100644
--- a/src/views/customer/advice/advice_interface.ts
+++ b/src/views/customer/advice/advice_interface.ts
@@ -14,9 +14,9 @@
id: string // 主键id(列表、更新接口参数)
adviceNo: string // 投诉编号
adviceClass: string // 投诉类型
- adviceClassName: string // 投诉类型
+ adviceClassName?: string // 投诉类型
adviceType: string // 投诉类别
- adviceTypeName: string // 投诉类别
+ adviceTypeName?: string // 投诉类别
advicePerson: string // 投诉人-名称
adviceTime: string // 投诉时间
personPhone: string // 投诉人联系方式
diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue
index 0046fa3..f3024cf 100644
--- a/src/views/device/deviceMaintenance/components/checkList.vue
+++ b/src/views/device/deviceMaintenance/components/checkList.vue
@@ -17,7 +17,7 @@
applyName: '',
applyNo: '',
applyPerson: '',
- applyType: '7',
+ applyType: '8',
applyUnit: '',
businessKeys: [],
createUser: '',
@@ -35,49 +35,32 @@
const columns = ref([
{
text: '检修申请编号',
- value: 'checkApplyNo',
- width: '120',
- align: 'center',
- },
- {
- text: '检修申请名称',
- value: 'checkApplyName',
- width: '120',
- align: 'center',
- },
- {
- text: '设备编号',
value: 'applyNo',
align: 'center',
},
{
- text: '设备名称',
+ text: '检修申请名称',
value: 'applyName',
align: 'center',
},
{
- text: '出厂编号',
- value: 'overhaulPerson',
+ text: '申请单位',
+ value: 'applyUnitName',
align: 'center',
},
{
- text: '设备型号',
- value: 'createTime',
+ text: '申请人',
+ value: 'applyPersonName',
align: 'center',
},
{
- text: '送修单位',
- value: 'createTime',
+ text: '检修时间',
+ value: 'time',
align: 'center',
},
{
- text: '送修人',
- value: 'createTime',
- align: 'center',
- },
- {
- text: '申请日期',
- value: 'createTime',
+ text: '备注',
+ value: 'remark',
align: 'center',
},
{
@@ -118,7 +101,7 @@
applyName: '',
applyNo: '',
applyPerson: '',
- applyType: '7',
+ applyType: '8',
applyUnit: '',
businessKeys: [],
createUser: '',
diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue
index 8fec470..bd296f1 100644
--- a/src/views/device/deviceMaintenance/components/listApproval.vue
+++ b/src/views/device/deviceMaintenance/components/listApproval.vue
@@ -37,7 +37,7 @@
formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE,
applyName: '',
applyNo: '',
- applyType: '',
+ applyType: '9',
businessKeys: [],
checkApplyNo: '',
checkEndDate: '',
diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue
index a8e1295..9c8bb99 100644
--- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue
+++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue
@@ -30,10 +30,10 @@
buttonArray.value = ['同意', '驳回', '拒绝']
}
else if (pageType.value === 'edit') {
- buttonArray.value = ['保存', '提交']
+ buttonArray.value = ['提交', '保存']
}
else {
- buttonArray.value = ['保存', '提交']
+ buttonArray.value = ['提交', '保存']
}
if ($route.params.id) {
infoId.value = $route.params.id as string
@@ -402,7 +402,6 @@
res.data.equipmentInfoList.map((item: objectReturn) => {
if (item.id) {
item.equipmentId = item.id
- item.id = ''
}
// 如果选择的没有id则就让装置数组置空
else {
@@ -443,7 +442,6 @@
@@ -463,7 +461,7 @@
@@ -472,7 +470,7 @@
@@ -491,7 +489,7 @@
@@ -502,7 +500,7 @@
@@ -515,10 +513,10 @@
@@ -529,8 +527,7 @@
@@ -552,7 +549,7 @@
@@ -562,7 +559,7 @@
*{{ item.text }}
-
+
-
+
diff --git a/src/api/business/task.ts b/src/api/business/task.ts
index a337c7f..80d91b7 100644
--- a/src/api/business/task.ts
+++ b/src/api/business/task.ts
@@ -1,5 +1,5 @@
/**
- * 任务分发
+ * 任务分发,实验室检测
*/
import request from '../index'
import type { ITaskQuery } from '@/views/business/schedule/task/task-interface'
@@ -25,7 +25,52 @@
}
// 检测流程配置
-export function interchangeListTake(data: { id: string; scheduleId: string }) {
+export function setMeasureProcess(data: { id: string; scheduleId: string }) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 退回
+export function rollbackTask(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 实验室收入样品
+export function takeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量收入样品
+export function batchTakeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 检完样品
+export function overSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量检完样品
+export function batchOverSample(data) {
return request({
url: `${prefix}/schedule/task/setSchedule`,
method: 'post',
diff --git a/src/api/device/standard.ts b/src/api/device/standard.ts
index 6e6fdfa..064780f 100644
--- a/src/api/device/standard.ts
+++ b/src/api/device/standard.ts
@@ -73,6 +73,15 @@
})
}
+// 删除申请列表信息
+export function getOperateDelete(data: object) {
+ return request({
+ url: '/standard/approval/operate/delete',
+ method: 'post',
+ data,
+ })
+}
+
// 新建申请列表信息
export function getStandardLisAdd(data: object) {
return request({
@@ -127,3 +136,86 @@
})
}
+// 批量添加标准装置底部计量人员
+export function setBatchAdd(data: object) {
+ return request({
+ url: '/meter/standard/user/batchAdd',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-计量人员列表(分页)
+export function getuserListPage(data: object) {
+ return request({
+ url: '/meter/standard/user/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-删除计量人员
+export function getuserDelete(data: object) {
+ return request({
+ url: '/meter/standard/user/delete',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-配套设备列表(分页)
+export function getEquipmentListPage(data: object) {
+ return request({
+ url: '/meter/standard/equipment/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加标准配套设备
+export function getEquipmenteAdd(data: object) {
+ return request({
+ url: '/meter/standard/equipment/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加检定规程
+export function getRegulationAdd(data: object) {
+ return request({
+ url: '/meter/standard/regulation/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-检定规程列表(分页)
+export function getRegulationListPage(data: object) {
+ return request({
+ url: '/meter/standard/regulation/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置导出
+export function getExportExcel(data: object) {
+ return request({
+ url: '/meter/standard/exportExcel',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
+// 标准装置申请导出
+export function getExportList(data: object) {
+ return request({
+ url: '/standard/exportList',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts
index 8bfe87e..50cf032 100644
--- a/src/api/measure/person.ts
+++ b/src/api/measure/person.ts
@@ -9,6 +9,14 @@
data,
})
}
+// 计量人员列表-不分页
+export function getStaffListAll(data: { deptId: string; name: string }) {
+ return request({
+ url: '/staff/getUserList',
+ method: 'post',
+ data,
+ })
+}
// 人员详细信息
export function getStaffDetail(data: object) {
return request({
diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg
new file mode 100644
index 0000000..f39dba8
--- /dev/null
+++ b/src/assets/icons/icon-scan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png
new file mode 100644
index 0000000..a56bf3e
--- /dev/null
+++ b/src/assets/images/scan.png
Binary files differ
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 67d321f..01d46ac 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -136,3 +136,10 @@
// cursor: text;
// }
}
+
+.float-radio-buttons {
+ position: fixed;
+ top: 67px;
+ right: 15px;
+ z-index: 999;
+}
diff --git a/src/components.d.ts b/src/components.d.ts
index 0ca1396..227585d 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -18,8 +18,11 @@
AuthAll: typeof import('./components/AuthAll/index.vue')['default']
BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default']
BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default']
+ BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default']
BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default']
BenchCol: typeof import('./components/benchCol/index.vue')['default']
+ CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default']
+ CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default']
ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default']
CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default']
Copyright: typeof import('./components/Copyright/index.vue')['default']
@@ -36,6 +39,7 @@
ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default']
ImageUpload: typeof import('./components/ImageUpload/index.vue')['default']
LineChart: typeof import('./components/Echart/LineChart.vue')['default']
+ MeasureRecords: typeof import('./components/Sample/measureRecords.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']
@@ -47,11 +51,13 @@
QrDialog: typeof import('./components/QrDialog/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
+ ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default']
SearchArea: typeof import('./components/SearchArea/index.vue')['default']
SearchBar: typeof import('./components/SearchBar/index.vue')['default']
SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default']
SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default']
SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default']
+ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default']
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue
new file mode 100644
index 0000000..0b7d7e8
--- /dev/null
+++ b/src/components/BarCodeBind/index.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个条码{{ list.length > 1 ? ',请选择要绑定的条码。' : '' }}
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue
new file mode 100644
index 0000000..16c1311
--- /dev/null
+++ b/src/components/Sample/certificationMonitor.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue
new file mode 100644
index 0000000..a694ce6
--- /dev/null
+++ b/src/components/Sample/certificationRecords.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue
new file mode 100644
index 0000000..b88e552
--- /dev/null
+++ b/src/components/Sample/measureRecords.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue
new file mode 100644
index 0000000..4e160a5
--- /dev/null
+++ b/src/components/ScanSampleDialog/index.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个样品{{ list.length > 1 ? ',请移除不需要绑定的样品。' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts
new file mode 100644
index 0000000..1c3aa33
--- /dev/null
+++ b/src/components/ScanSampleDialog/scan-interface.ts
@@ -0,0 +1,12 @@
+export interface ISampleScan {
+ sampleId?: string // 样品id
+ sampleNo: string // 样品编号
+ sampleName: string // 样品名称
+ sampleModel: string // 样品型号
+ manufacturingNo: string // 出厂编号
+ customerNo: string // 委托方代码
+ customerName: string // 委托方名称
+ orderId: string // 委托书id
+ orderNo: string // 委托书编号
+ labelBind: string // 标签绑定
+}
diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue
new file mode 100644
index 0000000..be9415b
--- /dev/null
+++ b/src/components/dialog/selectStaffDialog.vue
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (listQuery.offset - 1) * listQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
+
+
diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts
index a2fd12e..6a14d78 100644
--- a/src/router/modules/business.ts
+++ b/src/router/modules/business.ts
@@ -96,7 +96,7 @@
{
path: 'receipt/:type/:id?',
name: 'InterchangeReceiptDetail',
- component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'),
+ component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'),
meta: {
title: '设备交接单详情',
icon: 'ep:key',
@@ -196,6 +196,60 @@
activeMenu: '/lab/deptMeasureList',
},
},
+ {
+ path: 'reportOnCredentialsApproval',
+ name: 'ReportOnCredentialsApproval',
+ component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'),
+ meta: {
+ title: '证书报告',
+ icon: 'ep:key',
+ auth: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'reportOnCredentialsApproval/:type/:id?',
+ name: 'reportOnCredentialsAdd',
+ component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'),
+ meta: {
+ title: '证书报告详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'primitiveLogList',
+ name: 'PrimitiveLogList',
+ component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'),
+ meta: {
+ title: '原始记录',
+ icon: 'ep:key',
+ auth: '/lab/primitiveLogList',
+ },
+ },
+ {
+ path: 'environmentalList',
+ name: 'EnvironmentalList',
+ component: () => import('@/views/business/lab/environmental/environmentalList.vue'),
+ meta: {
+ title: '环境记录单',
+ icon: 'ep:key',
+ auth: '/lab/environmentalList',
+ },
+ },
+ {
+ path: 'environmentalList/:type/:id?',
+ name: 'EnvironmentalAdd',
+ component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'),
+ meta: {
+ title: '环境记录单详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/environmentalList',
+ },
+ },
],
},
]
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
index 993d66c..cbc5c47 100644
--- a/src/router/modules/device.ts
+++ b/src/router/modules/device.ts
@@ -238,7 +238,7 @@
},
},
{
- path: ':type/:id?',
+ path: 'Apply:type/:id?',
name: 'standardListAdd',
component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'),
meta: {
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 1264d2e..cfcbfaf 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -72,6 +72,7 @@
username: string
password: string
kaptcha: string
+ sid: string
}) {
return new Promise((resolve, reject) => {
doLogin(data).then((res) => {
diff --git a/src/views/business/bench/bench.vue b/src/views/business/bench/bench.vue
index 1f5af41..fad9269 100644
--- a/src/views/business/bench/bench.vue
+++ b/src/views/business/bench/bench.vue
@@ -243,7 +243,7 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+
+
+ 取消
+
+
+
+
+
+
diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue
index c129753..4d1b5c0 100644
--- a/src/views/business/lab/deptMeasure/deptMeasureList.vue
+++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue
@@ -1,13 +1,348 @@
-
- 部门检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 任务分发
+
+
+ 退回
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue
new file mode 100644
index 0000000..e572d09
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalAdd.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+ 提交
+
+
+ 打印
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue
new file mode 100644
index 0000000..98230be
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalList.vue
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 详情
+
+
+ 删除
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue
index 3ba89c5..800419d 100644
--- a/src/views/business/lab/myMeasure/myMeasureList.vue
+++ b/src/views/business/lab/myMeasure/myMeasureList.vue
@@ -1,13 +1,373 @@
-
- 我的检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 收入
+
+
+ 退回
+
+
+ 检测完成
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue
new file mode 100644
index 0000000..a598765
--- /dev/null
+++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 原始记录
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
new file mode 100644
index 0000000..97bea6f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
@@ -0,0 +1,664 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
new file mode 100644
index 0000000..da533b7
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
@@ -0,0 +1,1266 @@
+
+
+
+
+
+
+
+ {{ item }}
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 无
+
+
+ {{ formInline.minioFileName === '' ? '上传' : '更换附件' }}
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 审批人:{{ activity.name }}
+ 审批意见:{{ activity.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
new file mode 100644
index 0000000..5bf6f0f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
new file mode 100644
index 0000000..5c3eb39
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
@@ -0,0 +1,373 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue
index 3a3c09c..61ad34d 100644
--- a/src/views/business/schedule/task/components/chooseLab.vue
+++ b/src/views/business/schedule/task/components/chooseLab.vue
@@ -4,7 +4,7 @@
import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface'
import type { TableColumn } from '@/components/NormalTable/table_interface'
-const emits = defineEmits(['changeVisible', 'confirmCheckout'])
+const emits = defineEmits(['confirmCheckout'])
// 是否多选
const multi = ref(false)
const dialogVisible = ref(false)
diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue
index 39817f4..6cbdf10 100644
--- a/src/views/business/schedule/task/components/processNode.vue
+++ b/src/views/business/schedule/task/components/processNode.vue
@@ -149,7 +149,7 @@
-
+
diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts
index c9b3d63..7b538cf 100644
--- a/src/views/business/schedule/task/task-interface.ts
+++ b/src/views/business/schedule/task/task-interface.ts
@@ -9,7 +9,9 @@
customerName: string // 委托方名称
isUrgent: string // 是否加急
sampleAttr: string // 样品属性
- formId: string
+ sendState: string // 分发状态
+ outState: string // 超期状态
+ formId: string // formId
limit: number
offset: number
}
@@ -61,4 +63,5 @@
// 样品检测信息
export interface ISampleMeasure extends ISampleEdit {
orderId: string // 委托单id
+ certifications: string // 证书类别
}
diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue
index c8331c1..465b2e7 100644
--- a/src/views/business/schedule/task/taskEdit.vue
+++ b/src/views/business/schedule/task/taskEdit.vue
@@ -64,6 +64,7 @@
minioFileName: '', // 说明书
labelBind: '', // 标签绑定
mesureType: '', // 检定方式
+ certifications: '',
})
const ruleFormRef = ref
()
@@ -137,7 +138,7 @@
},
]
-const currentMenu = ref('检定记录')
+const currentMenu = ref('证书监控')
const currentMenuObj = computed(() => {
return menu.find(item => item.name === currentMenu.value)
})
@@ -224,6 +225,7 @@
measureResultCode: 'bhg',
deliverer: '张三',
delivererTel: '156254577545',
+ certifications: '1',
}
// for (const item of menu) {
// item.searchFunc()
@@ -587,15 +589,26 @@
-
+
-
- {{ item.name }}
+
+ 证书监控
+
+
+ 检定记录
+
+
+ 检定证书
-
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue
index 663b571..799a420 100644
--- a/src/views/business/schedule/task/taskList.vue
+++ b/src/views/business/schedule/task/taskList.vue
@@ -5,6 +5,7 @@
import { ElLoading, ElMessage } from 'element-plus'
import type { ITaskList, ITaskQuery } from './task-interface'
import DistributeDialog from './components/distributeDialog.vue'
+import BarCodeBind from '@/components/BarCodeBind/index.vue'
import type { TableColumn } from '@/components/NormalTable/table_interface'
import { printJSON } from '@/utils/printUtils'
import { exportFile } from '@/utils/exportUtils'
@@ -13,6 +14,14 @@
import type { dictType } from '@/global'
const { proxy } = getCurrentInstance() as any
const $router = useRouter()
+// 右上角按钮
+const menus = [
+ { name: '待分发', value: 'sendState;0' },
+ { name: '检测中', value: 'sendState;1' },
+ { name: '检测完', value: 'sendState;2' },
+ { name: '超期样品', value: 'outState;1' },
+]
+const currentMenu = ref('sendState;0') // 当前选中状态
// 查询条件
const timeRange = ref<[DateModelType, DateModelType]>(['', ''])
const listQuery: Ref = ref({
@@ -25,6 +34,8 @@
sampleAttr: '', // 样品属性
startTime: '', // 应检完时间-开始
endTime: '', // 应检完时间-结束
+ sendState: '', // 分发状态
+ outState: '', // 超期状态
formId: 'jlglsygfsp', // 任务分发formId
offset: 1,
limit: 20,
@@ -33,7 +44,7 @@
const sampleAttrList = ref([]) // 样品属性列表
function getDict() {
// 获取样品属性
- getDictByCode('sampleAttr').then((response) => {
+ getDictByCode('sampleBelong').then((response) => {
sampleAttrList.value = response.data
})
}
@@ -53,7 +64,6 @@
{ text: '样品属性', value: 'sampleAttrName', align: 'center' },
{ text: '当前检定环节', value: 'currentMeasureStateName', align: 'center' },
{ text: '证书出具', value: 'certificationState', align: 'center', filter: (row: ITaskList) => { return `${row.currentCertifications}/${row.requireCertifications}` } },
- { text: '标签信息', value: 'labelBind', align: 'center' },
{ text: '分发性质', value: 'distributeState', align: 'center', width: '90px' },
])
// 表格数据
@@ -78,6 +88,7 @@
{ orderId: '1', sampleNo: '1yp123457', sampleName: '压力表', orderNo: 'wtd123456', customerNo: 'kh123456', customerName: '北京无线电测量研究所', isUrgent: '0', sampleAttr: '1', sampleAttrName: '客户样品', sampleModel: 'JBT-011', manufacturingNo: '24432231124', requireOverTime: '2023-02-01', sampleId: '1', currentMeasureState: '1', currentMeasureStateName: '待分配', currentCertifications: 0, requireCertifications: 0, labelBind: '', distributeState: '2', distributeStateName: '退回分发' },
]
loadingTable.value = false
+ console.log(listQuery.value)
// getTaskList(listQuery.value).then((response) => {
// list.value = response.data.rows
// total.value = parseInt(response.data.total)
@@ -89,17 +100,6 @@
checkoutList.value = e.map((item: { id: string }) => item.id)
}
-// 点击详情
-const handleDetail = (row: ITaskList) => {
- $router.push(`/schedule/task/distribute/${row.sampleId}`)
-}
-
-// 点击分发, 弹窗
-const distributeDialogRef = ref()
-const handleDistribute = (row: ITaskList) => {
- distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
-}
-
// 点击搜索
const searchList = () => {
fetchData(true)
@@ -115,11 +115,31 @@
isUrgent: '', // 是否加急
sampleAttr: '', // 样品属性
formId: 'jlglsygfsp',
+ sendState: '1', // 分发状态
+ outState: '', // 超期状态
offset: 1,
limit: 20,
}
}
+// 点击详情
+const handleDetail = (row: ITaskList) => {
+ $router.push(`/schedule/task/distribute/${row.sampleId}`)
+}
+// 点击分发, 弹窗
+const distributeDialogRef = ref()
+const handleDistribute = (row: ITaskList) => {
+ distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
+}
+// 点击标签绑定
+const barCodeBind = ref()
+const bindLabel = (row: ITaskList) => {
+ barCodeBind.value.initDialog(row.sampleId)
+}
+// 标签绑定完成
+const bindLabelOver = () => {
+ searchList()
+}
// 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写
const changePage = (val: { size?: number; page?: number }) => {
if (val && val.size) {
@@ -178,11 +198,30 @@
}
}
-fetchData(true)
+// 选择按钮变更
+watch(currentMenu, (val: string) => {
+ const vals = val.split(';')
+ if (vals.length > 1) {
+ listQuery.value.sendState = ''
+ listQuery.value.outState = ''
+ listQuery.value[vals[0] as 'sendState' | 'outState'] = vals[1]
+ }
+ fetchData(false)
+})
+
+fetchData(false)
+
+
+
+
+ {{ item.name }}
+
+
+
详情
-
+
标签绑定
-
+
分发
+
+
+
diff --git a/src/views/customer/advice/adviceEdit.vue b/src/views/customer/advice/adviceEdit.vue
index 71da364..a5411c1 100644
--- a/src/views/customer/advice/adviceEdit.vue
+++ b/src/views/customer/advice/adviceEdit.vue
@@ -8,8 +8,6 @@
import type { FormInstance } from 'element-plus'
import type { IAdvice, SimpleCompany } from './advice_interface'
import { addAdvice, getAdviceDetail, updateAdvice } from '@/api/customer/advice'
-import { SCHEDULE } from '@/utils/scheduleDict'
-import type { IAddress } from '@/components/AddressSelect/address-interface'
import { getDictByCode } from '@/api/system/dict'
const loading = ref(false) // 表单加载状态
const infoId = ref('') // id
diff --git a/src/views/customer/advice/advice_interface.ts b/src/views/customer/advice/advice_interface.ts
index 48f6314..b08f85b 100644
--- a/src/views/customer/advice/advice_interface.ts
+++ b/src/views/customer/advice/advice_interface.ts
@@ -14,9 +14,9 @@
id: string // 主键id(列表、更新接口参数)
adviceNo: string // 投诉编号
adviceClass: string // 投诉类型
- adviceClassName: string // 投诉类型
+ adviceClassName?: string // 投诉类型
adviceType: string // 投诉类别
- adviceTypeName: string // 投诉类别
+ adviceTypeName?: string // 投诉类别
advicePerson: string // 投诉人-名称
adviceTime: string // 投诉时间
personPhone: string // 投诉人联系方式
diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue
index 0046fa3..f3024cf 100644
--- a/src/views/device/deviceMaintenance/components/checkList.vue
+++ b/src/views/device/deviceMaintenance/components/checkList.vue
@@ -17,7 +17,7 @@
applyName: '',
applyNo: '',
applyPerson: '',
- applyType: '7',
+ applyType: '8',
applyUnit: '',
businessKeys: [],
createUser: '',
@@ -35,49 +35,32 @@
const columns = ref([
{
text: '检修申请编号',
- value: 'checkApplyNo',
- width: '120',
- align: 'center',
- },
- {
- text: '检修申请名称',
- value: 'checkApplyName',
- width: '120',
- align: 'center',
- },
- {
- text: '设备编号',
value: 'applyNo',
align: 'center',
},
{
- text: '设备名称',
+ text: '检修申请名称',
value: 'applyName',
align: 'center',
},
{
- text: '出厂编号',
- value: 'overhaulPerson',
+ text: '申请单位',
+ value: 'applyUnitName',
align: 'center',
},
{
- text: '设备型号',
- value: 'createTime',
+ text: '申请人',
+ value: 'applyPersonName',
align: 'center',
},
{
- text: '送修单位',
- value: 'createTime',
+ text: '检修时间',
+ value: 'time',
align: 'center',
},
{
- text: '送修人',
- value: 'createTime',
- align: 'center',
- },
- {
- text: '申请日期',
- value: 'createTime',
+ text: '备注',
+ value: 'remark',
align: 'center',
},
{
@@ -118,7 +101,7 @@
applyName: '',
applyNo: '',
applyPerson: '',
- applyType: '7',
+ applyType: '8',
applyUnit: '',
businessKeys: [],
createUser: '',
diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue
index 8fec470..bd296f1 100644
--- a/src/views/device/deviceMaintenance/components/listApproval.vue
+++ b/src/views/device/deviceMaintenance/components/listApproval.vue
@@ -37,7 +37,7 @@
formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE,
applyName: '',
applyNo: '',
- applyType: '',
+ applyType: '9',
businessKeys: [],
checkApplyNo: '',
checkEndDate: '',
diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue
index a8e1295..9c8bb99 100644
--- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue
+++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue
@@ -30,10 +30,10 @@
buttonArray.value = ['同意', '驳回', '拒绝']
}
else if (pageType.value === 'edit') {
- buttonArray.value = ['保存', '提交']
+ buttonArray.value = ['提交', '保存']
}
else {
- buttonArray.value = ['保存', '提交']
+ buttonArray.value = ['提交', '保存']
}
if ($route.params.id) {
infoId.value = $route.params.id as string
@@ -402,7 +402,6 @@
res.data.equipmentInfoList.map((item: objectReturn) => {
if (item.id) {
item.equipmentId = item.id
- item.id = ''
}
// 如果选择的没有id则就让装置数组置空
else {
@@ -443,7 +442,6 @@
@@ -463,7 +461,7 @@
@@ -472,7 +470,7 @@
@@ -491,7 +489,7 @@
@@ -502,7 +500,7 @@
@@ -515,10 +513,10 @@
@@ -529,8 +527,7 @@
@@ -552,7 +549,7 @@
@@ -562,7 +559,7 @@
*{{ item.text }}
-
+
-
+
diff --git a/src/views/device/deviceMaintenance/components/listMaintenanceApproval.vue b/src/views/device/deviceMaintenance/components/listMaintenanceApproval.vue
index 4ff3806..37248bd 100644
--- a/src/views/device/deviceMaintenance/components/listMaintenanceApproval.vue
+++ b/src/views/device/deviceMaintenance/components/listMaintenanceApproval.vue
@@ -38,7 +38,7 @@
applyName: '',
applyNo: '',
applyPerson: '',
- applyType: '7',
+ applyType: '8',
applyUnit: '',
businessKeys: [],
createUser: '',
@@ -59,49 +59,32 @@
const columns = ref([
{
text: '检修申请编号',
- value: 'checkApplyNo',
- width: '120',
- align: 'center',
- },
- {
- text: '检修申请名称',
- value: 'checkApplyName',
- width: '120',
- align: 'center',
- },
- {
- text: '设备编号',
value: 'applyNo',
align: 'center',
},
{
- text: '设备名称',
+ text: '检修申请名称',
value: 'applyName',
align: 'center',
},
{
- text: '出厂编号',
- value: 'overhaulPerson',
+ text: '申请单位',
+ value: 'applyUnitName',
align: 'center',
},
{
- text: '设备型号',
- value: 'createTime',
+ text: '申请人',
+ value: 'applyPersonName',
align: 'center',
},
{
- text: '送修单位',
- value: 'createTime',
+ text: '检修时间',
+ value: 'time',
align: 'center',
},
{
- text: '送修人',
- value: 'createTime',
- align: 'center',
- },
- {
- text: '申请日期',
- value: 'createTime',
+ text: '备注',
+ value: 'remark',
align: 'center',
},
{
diff --git a/src/api/business/task.ts b/src/api/business/task.ts
index a337c7f..80d91b7 100644
--- a/src/api/business/task.ts
+++ b/src/api/business/task.ts
@@ -1,5 +1,5 @@
/**
- * 任务分发
+ * 任务分发,实验室检测
*/
import request from '../index'
import type { ITaskQuery } from '@/views/business/schedule/task/task-interface'
@@ -25,7 +25,52 @@
}
// 检测流程配置
-export function interchangeListTake(data: { id: string; scheduleId: string }) {
+export function setMeasureProcess(data: { id: string; scheduleId: string }) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 退回
+export function rollbackTask(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 实验室收入样品
+export function takeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量收入样品
+export function batchTakeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 检完样品
+export function overSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量检完样品
+export function batchOverSample(data) {
return request({
url: `${prefix}/schedule/task/setSchedule`,
method: 'post',
diff --git a/src/api/device/standard.ts b/src/api/device/standard.ts
index 6e6fdfa..064780f 100644
--- a/src/api/device/standard.ts
+++ b/src/api/device/standard.ts
@@ -73,6 +73,15 @@
})
}
+// 删除申请列表信息
+export function getOperateDelete(data: object) {
+ return request({
+ url: '/standard/approval/operate/delete',
+ method: 'post',
+ data,
+ })
+}
+
// 新建申请列表信息
export function getStandardLisAdd(data: object) {
return request({
@@ -127,3 +136,86 @@
})
}
+// 批量添加标准装置底部计量人员
+export function setBatchAdd(data: object) {
+ return request({
+ url: '/meter/standard/user/batchAdd',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-计量人员列表(分页)
+export function getuserListPage(data: object) {
+ return request({
+ url: '/meter/standard/user/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-删除计量人员
+export function getuserDelete(data: object) {
+ return request({
+ url: '/meter/standard/user/delete',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-配套设备列表(分页)
+export function getEquipmentListPage(data: object) {
+ return request({
+ url: '/meter/standard/equipment/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加标准配套设备
+export function getEquipmenteAdd(data: object) {
+ return request({
+ url: '/meter/standard/equipment/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加检定规程
+export function getRegulationAdd(data: object) {
+ return request({
+ url: '/meter/standard/regulation/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-检定规程列表(分页)
+export function getRegulationListPage(data: object) {
+ return request({
+ url: '/meter/standard/regulation/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置导出
+export function getExportExcel(data: object) {
+ return request({
+ url: '/meter/standard/exportExcel',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
+// 标准装置申请导出
+export function getExportList(data: object) {
+ return request({
+ url: '/standard/exportList',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts
index 8bfe87e..50cf032 100644
--- a/src/api/measure/person.ts
+++ b/src/api/measure/person.ts
@@ -9,6 +9,14 @@
data,
})
}
+// 计量人员列表-不分页
+export function getStaffListAll(data: { deptId: string; name: string }) {
+ return request({
+ url: '/staff/getUserList',
+ method: 'post',
+ data,
+ })
+}
// 人员详细信息
export function getStaffDetail(data: object) {
return request({
diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg
new file mode 100644
index 0000000..f39dba8
--- /dev/null
+++ b/src/assets/icons/icon-scan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png
new file mode 100644
index 0000000..a56bf3e
--- /dev/null
+++ b/src/assets/images/scan.png
Binary files differ
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 67d321f..01d46ac 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -136,3 +136,10 @@
// cursor: text;
// }
}
+
+.float-radio-buttons {
+ position: fixed;
+ top: 67px;
+ right: 15px;
+ z-index: 999;
+}
diff --git a/src/components.d.ts b/src/components.d.ts
index 0ca1396..227585d 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -18,8 +18,11 @@
AuthAll: typeof import('./components/AuthAll/index.vue')['default']
BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default']
BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default']
+ BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default']
BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default']
BenchCol: typeof import('./components/benchCol/index.vue')['default']
+ CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default']
+ CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default']
ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default']
CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default']
Copyright: typeof import('./components/Copyright/index.vue')['default']
@@ -36,6 +39,7 @@
ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default']
ImageUpload: typeof import('./components/ImageUpload/index.vue')['default']
LineChart: typeof import('./components/Echart/LineChart.vue')['default']
+ MeasureRecords: typeof import('./components/Sample/measureRecords.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']
@@ -47,11 +51,13 @@
QrDialog: typeof import('./components/QrDialog/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
+ ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default']
SearchArea: typeof import('./components/SearchArea/index.vue')['default']
SearchBar: typeof import('./components/SearchBar/index.vue')['default']
SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default']
SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default']
SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default']
+ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default']
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue
new file mode 100644
index 0000000..0b7d7e8
--- /dev/null
+++ b/src/components/BarCodeBind/index.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个条码{{ list.length > 1 ? ',请选择要绑定的条码。' : '' }}
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue
new file mode 100644
index 0000000..16c1311
--- /dev/null
+++ b/src/components/Sample/certificationMonitor.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue
new file mode 100644
index 0000000..a694ce6
--- /dev/null
+++ b/src/components/Sample/certificationRecords.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue
new file mode 100644
index 0000000..b88e552
--- /dev/null
+++ b/src/components/Sample/measureRecords.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue
new file mode 100644
index 0000000..4e160a5
--- /dev/null
+++ b/src/components/ScanSampleDialog/index.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个样品{{ list.length > 1 ? ',请移除不需要绑定的样品。' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts
new file mode 100644
index 0000000..1c3aa33
--- /dev/null
+++ b/src/components/ScanSampleDialog/scan-interface.ts
@@ -0,0 +1,12 @@
+export interface ISampleScan {
+ sampleId?: string // 样品id
+ sampleNo: string // 样品编号
+ sampleName: string // 样品名称
+ sampleModel: string // 样品型号
+ manufacturingNo: string // 出厂编号
+ customerNo: string // 委托方代码
+ customerName: string // 委托方名称
+ orderId: string // 委托书id
+ orderNo: string // 委托书编号
+ labelBind: string // 标签绑定
+}
diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue
new file mode 100644
index 0000000..be9415b
--- /dev/null
+++ b/src/components/dialog/selectStaffDialog.vue
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (listQuery.offset - 1) * listQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
+
+
diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts
index a2fd12e..6a14d78 100644
--- a/src/router/modules/business.ts
+++ b/src/router/modules/business.ts
@@ -96,7 +96,7 @@
{
path: 'receipt/:type/:id?',
name: 'InterchangeReceiptDetail',
- component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'),
+ component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'),
meta: {
title: '设备交接单详情',
icon: 'ep:key',
@@ -196,6 +196,60 @@
activeMenu: '/lab/deptMeasureList',
},
},
+ {
+ path: 'reportOnCredentialsApproval',
+ name: 'ReportOnCredentialsApproval',
+ component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'),
+ meta: {
+ title: '证书报告',
+ icon: 'ep:key',
+ auth: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'reportOnCredentialsApproval/:type/:id?',
+ name: 'reportOnCredentialsAdd',
+ component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'),
+ meta: {
+ title: '证书报告详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'primitiveLogList',
+ name: 'PrimitiveLogList',
+ component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'),
+ meta: {
+ title: '原始记录',
+ icon: 'ep:key',
+ auth: '/lab/primitiveLogList',
+ },
+ },
+ {
+ path: 'environmentalList',
+ name: 'EnvironmentalList',
+ component: () => import('@/views/business/lab/environmental/environmentalList.vue'),
+ meta: {
+ title: '环境记录单',
+ icon: 'ep:key',
+ auth: '/lab/environmentalList',
+ },
+ },
+ {
+ path: 'environmentalList/:type/:id?',
+ name: 'EnvironmentalAdd',
+ component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'),
+ meta: {
+ title: '环境记录单详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/environmentalList',
+ },
+ },
],
},
]
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
index 993d66c..cbc5c47 100644
--- a/src/router/modules/device.ts
+++ b/src/router/modules/device.ts
@@ -238,7 +238,7 @@
},
},
{
- path: ':type/:id?',
+ path: 'Apply:type/:id?',
name: 'standardListAdd',
component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'),
meta: {
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 1264d2e..cfcbfaf 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -72,6 +72,7 @@
username: string
password: string
kaptcha: string
+ sid: string
}) {
return new Promise((resolve, reject) => {
doLogin(data).then((res) => {
diff --git a/src/views/business/bench/bench.vue b/src/views/business/bench/bench.vue
index 1f5af41..fad9269 100644
--- a/src/views/business/bench/bench.vue
+++ b/src/views/business/bench/bench.vue
@@ -243,7 +243,7 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+
+
+ 取消
+
+
+
+
+
+
diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue
index c129753..4d1b5c0 100644
--- a/src/views/business/lab/deptMeasure/deptMeasureList.vue
+++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue
@@ -1,13 +1,348 @@
-
- 部门检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 任务分发
+
+
+ 退回
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue
new file mode 100644
index 0000000..e572d09
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalAdd.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+ 提交
+
+
+ 打印
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue
new file mode 100644
index 0000000..98230be
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalList.vue
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 详情
+
+
+ 删除
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue
index 3ba89c5..800419d 100644
--- a/src/views/business/lab/myMeasure/myMeasureList.vue
+++ b/src/views/business/lab/myMeasure/myMeasureList.vue
@@ -1,13 +1,373 @@
-
- 我的检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 收入
+
+
+ 退回
+
+
+ 检测完成
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue
new file mode 100644
index 0000000..a598765
--- /dev/null
+++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 原始记录
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
new file mode 100644
index 0000000..97bea6f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
@@ -0,0 +1,664 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
new file mode 100644
index 0000000..da533b7
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
@@ -0,0 +1,1266 @@
+
+
+
+
+
+
+
+ {{ item }}
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 无
+
+
+ {{ formInline.minioFileName === '' ? '上传' : '更换附件' }}
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 审批人:{{ activity.name }}
+ 审批意见:{{ activity.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
new file mode 100644
index 0000000..5bf6f0f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
new file mode 100644
index 0000000..5c3eb39
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
@@ -0,0 +1,373 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue
index 3a3c09c..61ad34d 100644
--- a/src/views/business/schedule/task/components/chooseLab.vue
+++ b/src/views/business/schedule/task/components/chooseLab.vue
@@ -4,7 +4,7 @@
import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface'
import type { TableColumn } from '@/components/NormalTable/table_interface'
-const emits = defineEmits(['changeVisible', 'confirmCheckout'])
+const emits = defineEmits(['confirmCheckout'])
// 是否多选
const multi = ref(false)
const dialogVisible = ref(false)
diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue
index 39817f4..6cbdf10 100644
--- a/src/views/business/schedule/task/components/processNode.vue
+++ b/src/views/business/schedule/task/components/processNode.vue
@@ -149,7 +149,7 @@
-
+
diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts
index c9b3d63..7b538cf 100644
--- a/src/views/business/schedule/task/task-interface.ts
+++ b/src/views/business/schedule/task/task-interface.ts
@@ -9,7 +9,9 @@
customerName: string // 委托方名称
isUrgent: string // 是否加急
sampleAttr: string // 样品属性
- formId: string
+ sendState: string // 分发状态
+ outState: string // 超期状态
+ formId: string // formId
limit: number
offset: number
}
@@ -61,4 +63,5 @@
// 样品检测信息
export interface ISampleMeasure extends ISampleEdit {
orderId: string // 委托单id
+ certifications: string // 证书类别
}
diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue
index c8331c1..465b2e7 100644
--- a/src/views/business/schedule/task/taskEdit.vue
+++ b/src/views/business/schedule/task/taskEdit.vue
@@ -64,6 +64,7 @@
minioFileName: '', // 说明书
labelBind: '', // 标签绑定
mesureType: '', // 检定方式
+ certifications: '',
})
const ruleFormRef = ref
()
@@ -137,7 +138,7 @@
},
]
-const currentMenu = ref('检定记录')
+const currentMenu = ref('证书监控')
const currentMenuObj = computed(() => {
return menu.find(item => item.name === currentMenu.value)
})
@@ -224,6 +225,7 @@
measureResultCode: 'bhg',
deliverer: '张三',
delivererTel: '156254577545',
+ certifications: '1',
}
// for (const item of menu) {
// item.searchFunc()
@@ -587,15 +589,26 @@
-
+
-
- {{ item.name }}
+
+ 证书监控
+
+
+ 检定记录
+
+
+ 检定证书
-
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue
index 663b571..799a420 100644
--- a/src/views/business/schedule/task/taskList.vue
+++ b/src/views/business/schedule/task/taskList.vue
@@ -5,6 +5,7 @@
import { ElLoading, ElMessage } from 'element-plus'
import type { ITaskList, ITaskQuery } from './task-interface'
import DistributeDialog from './components/distributeDialog.vue'
+import BarCodeBind from '@/components/BarCodeBind/index.vue'
import type { TableColumn } from '@/components/NormalTable/table_interface'
import { printJSON } from '@/utils/printUtils'
import { exportFile } from '@/utils/exportUtils'
@@ -13,6 +14,14 @@
import type { dictType } from '@/global'
const { proxy } = getCurrentInstance() as any
const $router = useRouter()
+// 右上角按钮
+const menus = [
+ { name: '待分发', value: 'sendState;0' },
+ { name: '检测中', value: 'sendState;1' },
+ { name: '检测完', value: 'sendState;2' },
+ { name: '超期样品', value: 'outState;1' },
+]
+const currentMenu = ref('sendState;0') // 当前选中状态
// 查询条件
const timeRange = ref<[DateModelType, DateModelType]>(['', ''])
const listQuery: Ref = ref({
@@ -25,6 +34,8 @@
sampleAttr: '', // 样品属性
startTime: '', // 应检完时间-开始
endTime: '', // 应检完时间-结束
+ sendState: '', // 分发状态
+ outState: '', // 超期状态
formId: 'jlglsygfsp', // 任务分发formId
offset: 1,
limit: 20,
@@ -33,7 +44,7 @@
const sampleAttrList = ref([]) // 样品属性列表
function getDict() {
// 获取样品属性
- getDictByCode('sampleAttr').then((response) => {
+ getDictByCode('sampleBelong').then((response) => {
sampleAttrList.value = response.data
})
}
@@ -53,7 +64,6 @@
{ text: '样品属性', value: 'sampleAttrName', align: 'center' },
{ text: '当前检定环节', value: 'currentMeasureStateName', align: 'center' },
{ text: '证书出具', value: 'certificationState', align: 'center', filter: (row: ITaskList) => { return `${row.currentCertifications}/${row.requireCertifications}` } },
- { text: '标签信息', value: 'labelBind', align: 'center' },
{ text: '分发性质', value: 'distributeState', align: 'center', width: '90px' },
])
// 表格数据
@@ -78,6 +88,7 @@
{ orderId: '1', sampleNo: '1yp123457', sampleName: '压力表', orderNo: 'wtd123456', customerNo: 'kh123456', customerName: '北京无线电测量研究所', isUrgent: '0', sampleAttr: '1', sampleAttrName: '客户样品', sampleModel: 'JBT-011', manufacturingNo: '24432231124', requireOverTime: '2023-02-01', sampleId: '1', currentMeasureState: '1', currentMeasureStateName: '待分配', currentCertifications: 0, requireCertifications: 0, labelBind: '', distributeState: '2', distributeStateName: '退回分发' },
]
loadingTable.value = false
+ console.log(listQuery.value)
// getTaskList(listQuery.value).then((response) => {
// list.value = response.data.rows
// total.value = parseInt(response.data.total)
@@ -89,17 +100,6 @@
checkoutList.value = e.map((item: { id: string }) => item.id)
}
-// 点击详情
-const handleDetail = (row: ITaskList) => {
- $router.push(`/schedule/task/distribute/${row.sampleId}`)
-}
-
-// 点击分发, 弹窗
-const distributeDialogRef = ref()
-const handleDistribute = (row: ITaskList) => {
- distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
-}
-
// 点击搜索
const searchList = () => {
fetchData(true)
@@ -115,11 +115,31 @@
isUrgent: '', // 是否加急
sampleAttr: '', // 样品属性
formId: 'jlglsygfsp',
+ sendState: '1', // 分发状态
+ outState: '', // 超期状态
offset: 1,
limit: 20,
}
}
+// 点击详情
+const handleDetail = (row: ITaskList) => {
+ $router.push(`/schedule/task/distribute/${row.sampleId}`)
+}
+// 点击分发, 弹窗
+const distributeDialogRef = ref()
+const handleDistribute = (row: ITaskList) => {
+ distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
+}
+// 点击标签绑定
+const barCodeBind = ref()
+const bindLabel = (row: ITaskList) => {
+ barCodeBind.value.initDialog(row.sampleId)
+}
+// 标签绑定完成
+const bindLabelOver = () => {
+ searchList()
+}
// 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写
const changePage = (val: { size?: number; page?: number }) => {
if (val && val.size) {
@@ -178,11 +198,30 @@
}
}
-fetchData(true)
+// 选择按钮变更
+watch(currentMenu, (val: string) => {
+ const vals = val.split(';')
+ if (vals.length > 1) {
+ listQuery.value.sendState = ''
+ listQuery.value.outState = ''
+ listQuery.value[vals[0] as 'sendState' | 'outState'] = vals[1]
+ }
+ fetchData(false)
+})
+
+fetchData(false)
+
+
+
+
+ {{ item.name }}
+
+
+
详情
-
+
标签绑定
-
+
分发
+
+
+
diff --git a/src/views/customer/advice/adviceEdit.vue b/src/views/customer/advice/adviceEdit.vue
index 71da364..a5411c1 100644
--- a/src/views/customer/advice/adviceEdit.vue
+++ b/src/views/customer/advice/adviceEdit.vue
@@ -8,8 +8,6 @@
import type { FormInstance } from 'element-plus'
import type { IAdvice, SimpleCompany } from './advice_interface'
import { addAdvice, getAdviceDetail, updateAdvice } from '@/api/customer/advice'
-import { SCHEDULE } from '@/utils/scheduleDict'
-import type { IAddress } from '@/components/AddressSelect/address-interface'
import { getDictByCode } from '@/api/system/dict'
const loading = ref(false) // 表单加载状态
const infoId = ref('') // id
diff --git a/src/views/customer/advice/advice_interface.ts b/src/views/customer/advice/advice_interface.ts
index 48f6314..b08f85b 100644
--- a/src/views/customer/advice/advice_interface.ts
+++ b/src/views/customer/advice/advice_interface.ts
@@ -14,9 +14,9 @@
id: string // 主键id(列表、更新接口参数)
adviceNo: string // 投诉编号
adviceClass: string // 投诉类型
- adviceClassName: string // 投诉类型
+ adviceClassName?: string // 投诉类型
adviceType: string // 投诉类别
- adviceTypeName: string // 投诉类别
+ adviceTypeName?: string // 投诉类别
advicePerson: string // 投诉人-名称
adviceTime: string // 投诉时间
personPhone: string // 投诉人联系方式
diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue
index 0046fa3..f3024cf 100644
--- a/src/views/device/deviceMaintenance/components/checkList.vue
+++ b/src/views/device/deviceMaintenance/components/checkList.vue
@@ -17,7 +17,7 @@
applyName: '',
applyNo: '',
applyPerson: '',
- applyType: '7',
+ applyType: '8',
applyUnit: '',
businessKeys: [],
createUser: '',
@@ -35,49 +35,32 @@
const columns = ref([
{
text: '检修申请编号',
- value: 'checkApplyNo',
- width: '120',
- align: 'center',
- },
- {
- text: '检修申请名称',
- value: 'checkApplyName',
- width: '120',
- align: 'center',
- },
- {
- text: '设备编号',
value: 'applyNo',
align: 'center',
},
{
- text: '设备名称',
+ text: '检修申请名称',
value: 'applyName',
align: 'center',
},
{
- text: '出厂编号',
- value: 'overhaulPerson',
+ text: '申请单位',
+ value: 'applyUnitName',
align: 'center',
},
{
- text: '设备型号',
- value: 'createTime',
+ text: '申请人',
+ value: 'applyPersonName',
align: 'center',
},
{
- text: '送修单位',
- value: 'createTime',
+ text: '检修时间',
+ value: 'time',
align: 'center',
},
{
- text: '送修人',
- value: 'createTime',
- align: 'center',
- },
- {
- text: '申请日期',
- value: 'createTime',
+ text: '备注',
+ value: 'remark',
align: 'center',
},
{
@@ -118,7 +101,7 @@
applyName: '',
applyNo: '',
applyPerson: '',
- applyType: '7',
+ applyType: '8',
applyUnit: '',
businessKeys: [],
createUser: '',
diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue
index 8fec470..bd296f1 100644
--- a/src/views/device/deviceMaintenance/components/listApproval.vue
+++ b/src/views/device/deviceMaintenance/components/listApproval.vue
@@ -37,7 +37,7 @@
formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE,
applyName: '',
applyNo: '',
- applyType: '',
+ applyType: '9',
businessKeys: [],
checkApplyNo: '',
checkEndDate: '',
diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue
index a8e1295..9c8bb99 100644
--- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue
+++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue
@@ -30,10 +30,10 @@
buttonArray.value = ['同意', '驳回', '拒绝']
}
else if (pageType.value === 'edit') {
- buttonArray.value = ['保存', '提交']
+ buttonArray.value = ['提交', '保存']
}
else {
- buttonArray.value = ['保存', '提交']
+ buttonArray.value = ['提交', '保存']
}
if ($route.params.id) {
infoId.value = $route.params.id as string
@@ -402,7 +402,6 @@
res.data.equipmentInfoList.map((item: objectReturn) => {
if (item.id) {
item.equipmentId = item.id
- item.id = ''
}
// 如果选择的没有id则就让装置数组置空
else {
@@ -443,7 +442,6 @@
@@ -463,7 +461,7 @@
@@ -472,7 +470,7 @@
@@ -491,7 +489,7 @@
@@ -502,7 +500,7 @@
@@ -515,10 +513,10 @@
@@ -529,8 +527,7 @@
@@ -552,7 +549,7 @@
@@ -562,7 +559,7 @@
*{{ item.text }}
-
+
-
+
diff --git a/src/views/device/deviceMaintenance/components/listMaintenanceApproval.vue b/src/views/device/deviceMaintenance/components/listMaintenanceApproval.vue
index 4ff3806..37248bd 100644
--- a/src/views/device/deviceMaintenance/components/listMaintenanceApproval.vue
+++ b/src/views/device/deviceMaintenance/components/listMaintenanceApproval.vue
@@ -38,7 +38,7 @@
applyName: '',
applyNo: '',
applyPerson: '',
- applyType: '7',
+ applyType: '8',
applyUnit: '',
businessKeys: [],
createUser: '',
@@ -59,49 +59,32 @@
const columns = ref([
{
text: '检修申请编号',
- value: 'checkApplyNo',
- width: '120',
- align: 'center',
- },
- {
- text: '检修申请名称',
- value: 'checkApplyName',
- width: '120',
- align: 'center',
- },
- {
- text: '设备编号',
value: 'applyNo',
align: 'center',
},
{
- text: '设备名称',
+ text: '检修申请名称',
value: 'applyName',
align: 'center',
},
{
- text: '出厂编号',
- value: 'overhaulPerson',
+ text: '申请单位',
+ value: 'applyUnitName',
align: 'center',
},
{
- text: '设备型号',
- value: 'createTime',
+ text: '申请人',
+ value: 'applyPersonName',
align: 'center',
},
{
- text: '送修单位',
- value: 'createTime',
+ text: '检修时间',
+ value: 'time',
align: 'center',
},
{
- text: '送修人',
- value: 'createTime',
- align: 'center',
- },
- {
- text: '申请日期',
- value: 'createTime',
+ text: '备注',
+ value: 'remark',
align: 'center',
},
{
diff --git a/src/views/device/deviceMaintenance/components/listPageAdd.vue b/src/views/device/deviceMaintenance/components/listPageAdd.vue
index 0a3dd34..9f04b8b 100644
--- a/src/views/device/deviceMaintenance/components/listPageAdd.vue
+++ b/src/views/device/deviceMaintenance/components/listPageAdd.vue
@@ -35,10 +35,10 @@
buttonArray.value = ['同意', '驳回', '拒绝']
}
else if (pageType.value === 'edit') {
- buttonArray.value = ['保存', '提交']
+ buttonArray.value = ['提交', '保存']
}
else {
- buttonArray.value = ['保存', '提交']
+ buttonArray.value = ['提交', '保存']
}
if ($route.params.id) {
infoId.value = $route.params.id as string
@@ -55,7 +55,7 @@
applyNo: '',
applyPerson: '',
applyPersonName: '',
- applyType: '7',
+ applyType: '8',
applyTypeName: '',
applyUnit: '',
applyUnitName: '',
@@ -65,19 +65,6 @@
createUser: '',
equipmentInfoList: [],
equipmentList: [],
- fileList: [
- {
- applyId: null,
- createTime: '',
- createUser: null,
- fileName: '',
- id: null,
- isDel: null,
- minioFileName: '',
- remark: '',
- updateTime: '',
- },
- ],
id: null,
isDel: null,
overhaulPerson: '',
@@ -372,7 +359,12 @@
// 点击增加行
const addRoow = () => {
// list.value.push(JSON.parse(JSON.stringify(addList.value)))
- addRowRef.value.initDialog({ title: '' })
+ if (formInline.value.equipmentList.length >= 1 && formInline.value.equipmentList[formInline.value.equipmentList.length - 1].equipmentId === '') {
+ ElMessage.warning('请完善上一条设备信息')
+ }
+ else {
+ addRowRef.value.initDialog({ title: '' })
+ }
}
// 标准配套设备更换表格删除行
@@ -450,7 +442,6 @@
@@ -470,7 +461,7 @@
@@ -480,7 +471,7 @@
@@ -489,7 +480,7 @@
@@ -510,7 +501,7 @@
v-model="formInline.time"
type="datetime"
style="width: 100%;"
- placeholder="请选择检修时间"
+ :placeholder="pageType === 'detail' ? '' : '请选择检修时间'"
format="YYYY/MM/DD HH:mm"
value-format="YYYY-MM-DD h:m"
:disabled="pageType === 'detail'"
@@ -523,8 +514,7 @@
@@ -563,29 +553,10 @@
*{{ item.text }}
-
-
-
-
-
+
diff --git a/src/api/business/task.ts b/src/api/business/task.ts
index a337c7f..80d91b7 100644
--- a/src/api/business/task.ts
+++ b/src/api/business/task.ts
@@ -1,5 +1,5 @@
/**
- * 任务分发
+ * 任务分发,实验室检测
*/
import request from '../index'
import type { ITaskQuery } from '@/views/business/schedule/task/task-interface'
@@ -25,7 +25,52 @@
}
// 检测流程配置
-export function interchangeListTake(data: { id: string; scheduleId: string }) {
+export function setMeasureProcess(data: { id: string; scheduleId: string }) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 退回
+export function rollbackTask(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 实验室收入样品
+export function takeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量收入样品
+export function batchTakeInSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 检完样品
+export function overSample(data) {
+ return request({
+ url: `${prefix}/schedule/task/setSchedule`,
+ method: 'post',
+ data,
+ })
+}
+
+// 批量检完样品
+export function batchOverSample(data) {
return request({
url: `${prefix}/schedule/task/setSchedule`,
method: 'post',
diff --git a/src/api/device/standard.ts b/src/api/device/standard.ts
index 6e6fdfa..064780f 100644
--- a/src/api/device/standard.ts
+++ b/src/api/device/standard.ts
@@ -73,6 +73,15 @@
})
}
+// 删除申请列表信息
+export function getOperateDelete(data: object) {
+ return request({
+ url: '/standard/approval/operate/delete',
+ method: 'post',
+ data,
+ })
+}
+
// 新建申请列表信息
export function getStandardLisAdd(data: object) {
return request({
@@ -127,3 +136,86 @@
})
}
+// 批量添加标准装置底部计量人员
+export function setBatchAdd(data: object) {
+ return request({
+ url: '/meter/standard/user/batchAdd',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-计量人员列表(分页)
+export function getuserListPage(data: object) {
+ return request({
+ url: '/meter/standard/user/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-删除计量人员
+export function getuserDelete(data: object) {
+ return request({
+ url: '/meter/standard/user/delete',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-配套设备列表(分页)
+export function getEquipmentListPage(data: object) {
+ return request({
+ url: '/meter/standard/equipment/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加标准配套设备
+export function getEquipmenteAdd(data: object) {
+ return request({
+ url: '/meter/standard/equipment/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 添加检定规程
+export function getRegulationAdd(data: object) {
+ return request({
+ url: '/meter/standard/regulation/add',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置-检定规程列表(分页)
+export function getRegulationListPage(data: object) {
+ return request({
+ url: '/meter/standard/regulation/listPage',
+ method: 'post',
+ data,
+ })
+}
+
+// 标准装置导出
+export function getExportExcel(data: object) {
+ return request({
+ url: '/meter/standard/exportExcel',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
+// 标准装置申请导出
+export function getExportList(data: object) {
+ return request({
+ url: '/standard/exportList',
+ method: 'post',
+ responseType: 'blob',
+ data,
+ })
+}
+
diff --git a/src/api/measure/person.ts b/src/api/measure/person.ts
index 8bfe87e..50cf032 100644
--- a/src/api/measure/person.ts
+++ b/src/api/measure/person.ts
@@ -9,6 +9,14 @@
data,
})
}
+// 计量人员列表-不分页
+export function getStaffListAll(data: { deptId: string; name: string }) {
+ return request({
+ url: '/staff/getUserList',
+ method: 'post',
+ data,
+ })
+}
// 人员详细信息
export function getStaffDetail(data: object) {
return request({
diff --git a/src/assets/icons/icon-scan.svg b/src/assets/icons/icon-scan.svg
new file mode 100644
index 0000000..f39dba8
--- /dev/null
+++ b/src/assets/icons/icon-scan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png
new file mode 100644
index 0000000..a56bf3e
--- /dev/null
+++ b/src/assets/images/scan.png
Binary files differ
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 67d321f..01d46ac 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -136,3 +136,10 @@
// cursor: text;
// }
}
+
+.float-radio-buttons {
+ position: fixed;
+ top: 67px;
+ right: 15px;
+ z-index: 999;
+}
diff --git a/src/components.d.ts b/src/components.d.ts
index 0ca1396..227585d 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -18,8 +18,11 @@
AuthAll: typeof import('./components/AuthAll/index.vue')['default']
BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default']
BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default']
+ BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default']
BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default']
BenchCol: typeof import('./components/benchCol/index.vue')['default']
+ CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default']
+ CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default']
ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default']
CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default']
Copyright: typeof import('./components/Copyright/index.vue')['default']
@@ -36,6 +39,7 @@
ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default']
ImageUpload: typeof import('./components/ImageUpload/index.vue')['default']
LineChart: typeof import('./components/Echart/LineChart.vue')['default']
+ MeasureRecords: typeof import('./components/Sample/measureRecords.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']
@@ -47,11 +51,13 @@
QrDialog: typeof import('./components/QrDialog/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
+ ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default']
SearchArea: typeof import('./components/SearchArea/index.vue')['default']
SearchBar: typeof import('./components/SearchBar/index.vue')['default']
SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default']
SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default']
SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default']
+ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default']
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue
new file mode 100644
index 0000000..0b7d7e8
--- /dev/null
+++ b/src/components/BarCodeBind/index.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个条码{{ list.length > 1 ? ',请选择要绑定的条码。' : '' }}
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue
new file mode 100644
index 0000000..16c1311
--- /dev/null
+++ b/src/components/Sample/certificationMonitor.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue
new file mode 100644
index 0000000..a694ce6
--- /dev/null
+++ b/src/components/Sample/certificationRecords.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue
new file mode 100644
index 0000000..b88e552
--- /dev/null
+++ b/src/components/Sample/measureRecords.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue
new file mode 100644
index 0000000..4e160a5
--- /dev/null
+++ b/src/components/ScanSampleDialog/index.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个样品{{ list.length > 1 ? ',请移除不需要绑定的样品。' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts
new file mode 100644
index 0000000..1c3aa33
--- /dev/null
+++ b/src/components/ScanSampleDialog/scan-interface.ts
@@ -0,0 +1,12 @@
+export interface ISampleScan {
+ sampleId?: string // 样品id
+ sampleNo: string // 样品编号
+ sampleName: string // 样品名称
+ sampleModel: string // 样品型号
+ manufacturingNo: string // 出厂编号
+ customerNo: string // 委托方代码
+ customerName: string // 委托方名称
+ orderId: string // 委托书id
+ orderNo: string // 委托书编号
+ labelBind: string // 标签绑定
+}
diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue
new file mode 100644
index 0000000..be9415b
--- /dev/null
+++ b/src/components/dialog/selectStaffDialog.vue
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (listQuery.offset - 1) * listQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
+
+
diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts
index a2fd12e..6a14d78 100644
--- a/src/router/modules/business.ts
+++ b/src/router/modules/business.ts
@@ -96,7 +96,7 @@
{
path: 'receipt/:type/:id?',
name: 'InterchangeReceiptDetail',
- component: () => import('@/views/business/schedule/interchangeRecepit/receiptEdit.vue'),
+ component: () => import('@/views/business/schedule/interchangeReceipt/receiptEdit.vue'),
meta: {
title: '设备交接单详情',
icon: 'ep:key',
@@ -196,6 +196,60 @@
activeMenu: '/lab/deptMeasureList',
},
},
+ {
+ path: 'reportOnCredentialsApproval',
+ name: 'ReportOnCredentialsApproval',
+ component: () => import('@/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue'),
+ meta: {
+ title: '证书报告',
+ icon: 'ep:key',
+ auth: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'reportOnCredentialsApproval/:type/:id?',
+ name: 'reportOnCredentialsAdd',
+ component: () => import('@/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue'),
+ meta: {
+ title: '证书报告详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/reportOnCredentialsApproval',
+ },
+ },
+ {
+ path: 'primitiveLogList',
+ name: 'PrimitiveLogList',
+ component: () => import('@/views/business/lab/primitiveLog/primitiveLogList.vue'),
+ meta: {
+ title: '原始记录',
+ icon: 'ep:key',
+ auth: '/lab/primitiveLogList',
+ },
+ },
+ {
+ path: 'environmentalList',
+ name: 'EnvironmentalList',
+ component: () => import('@/views/business/lab/environmental/environmentalList.vue'),
+ meta: {
+ title: '环境记录单',
+ icon: 'ep:key',
+ auth: '/lab/environmentalList',
+ },
+ },
+ {
+ path: 'environmentalList/:type/:id?',
+ name: 'EnvironmentalAdd',
+ component: () => import('@/views/business/lab/environmental/environmentalAdd.vue'),
+ meta: {
+ title: '环境记录单详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/lab/environmentalList',
+ },
+ },
],
},
]
diff --git a/src/router/modules/device.ts b/src/router/modules/device.ts
index 993d66c..cbc5c47 100644
--- a/src/router/modules/device.ts
+++ b/src/router/modules/device.ts
@@ -238,7 +238,7 @@
},
},
{
- path: ':type/:id?',
+ path: 'Apply:type/:id?',
name: 'standardListAdd',
component: () => import('@/views/device/standardEquipment/components/listApply/listPageAdd.vue'),
meta: {
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 1264d2e..cfcbfaf 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -72,6 +72,7 @@
username: string
password: string
kaptcha: string
+ sid: string
}) {
return new Promise((resolve, reject) => {
doLogin(data).then((res) => {
diff --git a/src/views/business/bench/bench.vue b/src/views/business/bench/bench.vue
index 1f5af41..fad9269 100644
--- a/src/views/business/bench/bench.vue
+++ b/src/views/business/bench/bench.vue
@@ -243,7 +243,7 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+
+
+ 取消
+
+
+
+
+
+
diff --git a/src/views/business/lab/deptMeasure/deptMeasureList.vue b/src/views/business/lab/deptMeasure/deptMeasureList.vue
index c129753..4d1b5c0 100644
--- a/src/views/business/lab/deptMeasure/deptMeasureList.vue
+++ b/src/views/business/lab/deptMeasure/deptMeasureList.vue
@@ -1,13 +1,348 @@
-
- 部门检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 任务分发
+
+
+ 退回
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalAdd.vue b/src/views/business/lab/environmental/environmentalAdd.vue
new file mode 100644
index 0000000..e572d09
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalAdd.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+ 提交
+
+
+ 打印
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/environmental/environmentalList.vue b/src/views/business/lab/environmental/environmentalList.vue
new file mode 100644
index 0000000..98230be
--- /dev/null
+++ b/src/views/business/lab/environmental/environmentalList.vue
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 详情
+
+
+ 删除
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/myMeasure/myMeasureList.vue b/src/views/business/lab/myMeasure/myMeasureList.vue
index 3ba89c5..800419d 100644
--- a/src/views/business/lab/myMeasure/myMeasureList.vue
+++ b/src/views/business/lab/myMeasure/myMeasureList.vue
@@ -1,13 +1,373 @@
-
- 我的检测
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 收入
+
+
+ 退回
+
+
+ 检测完成
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/primitiveLog/primitiveLogList.vue b/src/views/business/lab/primitiveLog/primitiveLogList.vue
new file mode 100644
index 0000000..a598765
--- /dev/null
+++ b/src/views/business/lab/primitiveLog/primitiveLogList.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 原始记录
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/baseInfo.vue b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
new file mode 100644
index 0000000..97bea6f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/baseInfo.vue
@@ -0,0 +1,664 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
new file mode 100644
index 0000000..da533b7
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/components/reportOnCredentialsAdd.vue
@@ -0,0 +1,1266 @@
+
+
+
+
+
+
+
+ {{ item }}
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 无
+
+
+ {{ formInline.minioFileName === '' ? '上传' : '更换附件' }}
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+ 增加行
+
+
+ 删除行
+
+
+
+
+
+
+
+ *{{ item.text }}
+
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 审批人:{{ activity.name }}
+ 审批意见:{{ activity.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
new file mode 100644
index 0000000..5bf6f0f
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsApproval.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
new file mode 100644
index 0000000..5c3eb39
--- /dev/null
+++ b/src/views/business/lab/reportOnCredentials/reportOnCredentialsList.vue
@@ -0,0 +1,373 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/components/chooseLab.vue b/src/views/business/schedule/task/components/chooseLab.vue
index 3a3c09c..61ad34d 100644
--- a/src/views/business/schedule/task/components/chooseLab.vue
+++ b/src/views/business/schedule/task/components/chooseLab.vue
@@ -4,7 +4,7 @@
import type { ILabList, ILabSearchQuery } from '@/views/business/schedule/task/components/lab-interface'
import type { TableColumn } from '@/components/NormalTable/table_interface'
-const emits = defineEmits(['changeVisible', 'confirmCheckout'])
+const emits = defineEmits(['confirmCheckout'])
// 是否多选
const multi = ref(false)
const dialogVisible = ref(false)
diff --git a/src/views/business/schedule/task/components/processNode.vue b/src/views/business/schedule/task/components/processNode.vue
index 39817f4..6cbdf10 100644
--- a/src/views/business/schedule/task/components/processNode.vue
+++ b/src/views/business/schedule/task/components/processNode.vue
@@ -149,7 +149,7 @@
-
+
diff --git a/src/views/business/schedule/task/task-interface.ts b/src/views/business/schedule/task/task-interface.ts
index c9b3d63..7b538cf 100644
--- a/src/views/business/schedule/task/task-interface.ts
+++ b/src/views/business/schedule/task/task-interface.ts
@@ -9,7 +9,9 @@
customerName: string // 委托方名称
isUrgent: string // 是否加急
sampleAttr: string // 样品属性
- formId: string
+ sendState: string // 分发状态
+ outState: string // 超期状态
+ formId: string // formId
limit: number
offset: number
}
@@ -61,4 +63,5 @@
// 样品检测信息
export interface ISampleMeasure extends ISampleEdit {
orderId: string // 委托单id
+ certifications: string // 证书类别
}
diff --git a/src/views/business/schedule/task/taskEdit.vue b/src/views/business/schedule/task/taskEdit.vue
index c8331c1..465b2e7 100644
--- a/src/views/business/schedule/task/taskEdit.vue
+++ b/src/views/business/schedule/task/taskEdit.vue
@@ -64,6 +64,7 @@
minioFileName: '', // 说明书
labelBind: '', // 标签绑定
mesureType: '', // 检定方式
+ certifications: '',
})
const ruleFormRef = ref
()
@@ -137,7 +138,7 @@
},
]
-const currentMenu = ref('检定记录')
+const currentMenu = ref('证书监控')
const currentMenuObj = computed(() => {
return menu.find(item => item.name === currentMenu.value)
})
@@ -224,6 +225,7 @@
measureResultCode: 'bhg',
deliverer: '张三',
delivererTel: '156254577545',
+ certifications: '1',
}
// for (const item of menu) {
// item.searchFunc()
@@ -587,15 +589,26 @@
-
+
-
- {{ item.name }}
+
+ 证书监控
+
+
+ 检定记录
+
+
+ 检定证书
-
+
+
+
+
+
+
diff --git a/src/views/business/schedule/task/taskList.vue b/src/views/business/schedule/task/taskList.vue
index 663b571..799a420 100644
--- a/src/views/business/schedule/task/taskList.vue
+++ b/src/views/business/schedule/task/taskList.vue
@@ -5,6 +5,7 @@
import { ElLoading, ElMessage } from 'element-plus'
import type { ITaskList, ITaskQuery } from './task-interface'
import DistributeDialog from './components/distributeDialog.vue'
+import BarCodeBind from '@/components/BarCodeBind/index.vue'
import type { TableColumn } from '@/components/NormalTable/table_interface'
import { printJSON } from '@/utils/printUtils'
import { exportFile } from '@/utils/exportUtils'
@@ -13,6 +14,14 @@
import type { dictType } from '@/global'
const { proxy } = getCurrentInstance() as any
const $router = useRouter()
+// 右上角按钮
+const menus = [
+ { name: '待分发', value: 'sendState;0' },
+ { name: '检测中', value: 'sendState;1' },
+ { name: '检测完', value: 'sendState;2' },
+ { name: '超期样品', value: 'outState;1' },
+]
+const currentMenu = ref('sendState;0') // 当前选中状态
// 查询条件
const timeRange = ref<[DateModelType, DateModelType]>(['', ''])
const listQuery: Ref = ref({
@@ -25,6 +34,8 @@
sampleAttr: '', // 样品属性
startTime: '', // 应检完时间-开始
endTime: '', // 应检完时间-结束
+ sendState: '', // 分发状态
+ outState: '', // 超期状态
formId: 'jlglsygfsp', // 任务分发formId
offset: 1,
limit: 20,
@@ -33,7 +44,7 @@
const sampleAttrList = ref([]) // 样品属性列表
function getDict() {
// 获取样品属性
- getDictByCode('sampleAttr').then((response) => {
+ getDictByCode('sampleBelong').then((response) => {
sampleAttrList.value = response.data
})
}
@@ -53,7 +64,6 @@
{ text: '样品属性', value: 'sampleAttrName', align: 'center' },
{ text: '当前检定环节', value: 'currentMeasureStateName', align: 'center' },
{ text: '证书出具', value: 'certificationState', align: 'center', filter: (row: ITaskList) => { return `${row.currentCertifications}/${row.requireCertifications}` } },
- { text: '标签信息', value: 'labelBind', align: 'center' },
{ text: '分发性质', value: 'distributeState', align: 'center', width: '90px' },
])
// 表格数据
@@ -78,6 +88,7 @@
{ orderId: '1', sampleNo: '1yp123457', sampleName: '压力表', orderNo: 'wtd123456', customerNo: 'kh123456', customerName: '北京无线电测量研究所', isUrgent: '0', sampleAttr: '1', sampleAttrName: '客户样品', sampleModel: 'JBT-011', manufacturingNo: '24432231124', requireOverTime: '2023-02-01', sampleId: '1', currentMeasureState: '1', currentMeasureStateName: '待分配', currentCertifications: 0, requireCertifications: 0, labelBind: '', distributeState: '2', distributeStateName: '退回分发' },
]
loadingTable.value = false
+ console.log(listQuery.value)
// getTaskList(listQuery.value).then((response) => {
// list.value = response.data.rows
// total.value = parseInt(response.data.total)
@@ -89,17 +100,6 @@
checkoutList.value = e.map((item: { id: string }) => item.id)
}
-// 点击详情
-const handleDetail = (row: ITaskList) => {
- $router.push(`/schedule/task/distribute/${row.sampleId}`)
-}
-
-// 点击分发, 弹窗
-const distributeDialogRef = ref()
-const handleDistribute = (row: ITaskList) => {
- distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
-}
-
// 点击搜索
const searchList = () => {
fetchData(true)
@@ -115,11 +115,31 @@
isUrgent: '', // 是否加急
sampleAttr: '', // 样品属性
formId: 'jlglsygfsp',
+ sendState: '1', // 分发状态
+ outState: '', // 超期状态
offset: 1,
limit: 20,
}
}
+// 点击详情
+const handleDetail = (row: ITaskList) => {
+ $router.push(`/schedule/task/distribute/${row.sampleId}`)
+}
+// 点击分发, 弹窗
+const distributeDialogRef = ref()
+const handleDistribute = (row: ITaskList) => {
+ distributeDialogRef.value.initDialog(row.orderId, row.sampleId)
+}
+// 点击标签绑定
+const barCodeBind = ref()
+const bindLabel = (row: ITaskList) => {
+ barCodeBind.value.initDialog(row.sampleId)
+}
+// 标签绑定完成
+const bindLabelOver = () => {
+ searchList()
+}
// 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写
const changePage = (val: { size?: number; page?: number }) => {
if (val && val.size) {
@@ -178,11 +198,30 @@
}
}
-fetchData(true)
+// 选择按钮变更
+watch(currentMenu, (val: string) => {
+ const vals = val.split(';')
+ if (vals.length > 1) {
+ listQuery.value.sendState = ''
+ listQuery.value.outState = ''
+ listQuery.value[vals[0] as 'sendState' | 'outState'] = vals[1]
+ }
+ fetchData(false)
+})
+
+fetchData(false)
+
+
+
+
+ {{ item.name }}
+
+
+
详情
-
+
标签绑定
-
+
分发
+
+
+
diff --git a/src/views/customer/advice/adviceEdit.vue b/src/views/customer/advice/adviceEdit.vue
index 71da364..a5411c1 100644
--- a/src/views/customer/advice/adviceEdit.vue
+++ b/src/views/customer/advice/adviceEdit.vue
@@ -8,8 +8,6 @@
import type { FormInstance } from 'element-plus'
import type { IAdvice, SimpleCompany } from './advice_interface'
import { addAdvice, getAdviceDetail, updateAdvice } from '@/api/customer/advice'
-import { SCHEDULE } from '@/utils/scheduleDict'
-import type { IAddress } from '@/components/AddressSelect/address-interface'
import { getDictByCode } from '@/api/system/dict'
const loading = ref(false) // 表单加载状态
const infoId = ref('') // id
diff --git a/src/views/customer/advice/advice_interface.ts b/src/views/customer/advice/advice_interface.ts
index 48f6314..b08f85b 100644
--- a/src/views/customer/advice/advice_interface.ts
+++ b/src/views/customer/advice/advice_interface.ts
@@ -14,9 +14,9 @@
id: string // 主键id(列表、更新接口参数)
adviceNo: string // 投诉编号
adviceClass: string // 投诉类型
- adviceClassName: string // 投诉类型
+ adviceClassName?: string // 投诉类型
adviceType: string // 投诉类别
- adviceTypeName: string // 投诉类别
+ adviceTypeName?: string // 投诉类别
advicePerson: string // 投诉人-名称
adviceTime: string // 投诉时间
personPhone: string // 投诉人联系方式
diff --git a/src/views/device/deviceMaintenance/components/checkList.vue b/src/views/device/deviceMaintenance/components/checkList.vue
index 0046fa3..f3024cf 100644
--- a/src/views/device/deviceMaintenance/components/checkList.vue
+++ b/src/views/device/deviceMaintenance/components/checkList.vue
@@ -17,7 +17,7 @@
applyName: '',
applyNo: '',
applyPerson: '',
- applyType: '7',
+ applyType: '8',
applyUnit: '',
businessKeys: [],
createUser: '',
@@ -35,49 +35,32 @@
const columns = ref([
{
text: '检修申请编号',
- value: 'checkApplyNo',
- width: '120',
- align: 'center',
- },
- {
- text: '检修申请名称',
- value: 'checkApplyName',
- width: '120',
- align: 'center',
- },
- {
- text: '设备编号',
value: 'applyNo',
align: 'center',
},
{
- text: '设备名称',
+ text: '检修申请名称',
value: 'applyName',
align: 'center',
},
{
- text: '出厂编号',
- value: 'overhaulPerson',
+ text: '申请单位',
+ value: 'applyUnitName',
align: 'center',
},
{
- text: '设备型号',
- value: 'createTime',
+ text: '申请人',
+ value: 'applyPersonName',
align: 'center',
},
{
- text: '送修单位',
- value: 'createTime',
+ text: '检修时间',
+ value: 'time',
align: 'center',
},
{
- text: '送修人',
- value: 'createTime',
- align: 'center',
- },
- {
- text: '申请日期',
- value: 'createTime',
+ text: '备注',
+ value: 'remark',
align: 'center',
},
{
@@ -118,7 +101,7 @@
applyName: '',
applyNo: '',
applyPerson: '',
- applyType: '7',
+ applyType: '8',
applyUnit: '',
businessKeys: [],
createUser: '',
diff --git a/src/views/device/deviceMaintenance/components/listApproval.vue b/src/views/device/deviceMaintenance/components/listApproval.vue
index 8fec470..bd296f1 100644
--- a/src/views/device/deviceMaintenance/components/listApproval.vue
+++ b/src/views/device/deviceMaintenance/components/listApproval.vue
@@ -37,7 +37,7 @@
formId: SCHEDULE.DEVICE_FIX_ACCEPTANCE,
applyName: '',
applyNo: '',
- applyType: '',
+ applyType: '9',
businessKeys: [],
checkApplyNo: '',
checkEndDate: '',
diff --git a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue
index a8e1295..9c8bb99 100644
--- a/src/views/device/deviceMaintenance/components/listApprovalAdd.vue
+++ b/src/views/device/deviceMaintenance/components/listApprovalAdd.vue
@@ -30,10 +30,10 @@
buttonArray.value = ['同意', '驳回', '拒绝']
}
else if (pageType.value === 'edit') {
- buttonArray.value = ['保存', '提交']
+ buttonArray.value = ['提交', '保存']
}
else {
- buttonArray.value = ['保存', '提交']
+ buttonArray.value = ['提交', '保存']
}
if ($route.params.id) {
infoId.value = $route.params.id as string
@@ -402,7 +402,6 @@
res.data.equipmentInfoList.map((item: objectReturn) => {
if (item.id) {
item.equipmentId = item.id
- item.id = ''
}
// 如果选择的没有id则就让装置数组置空
else {
@@ -443,7 +442,6 @@
@@ -463,7 +461,7 @@
@@ -472,7 +470,7 @@
@@ -491,7 +489,7 @@
@@ -502,7 +500,7 @@
@@ -515,10 +513,10 @@
@@ -529,8 +527,7 @@
@@ -552,7 +549,7 @@
@@ -562,7 +559,7 @@
*{{ item.text }}
-
+
-
+
diff --git a/src/views/device/deviceMaintenance/components/listMaintenanceApproval.vue b/src/views/device/deviceMaintenance/components/listMaintenanceApproval.vue
index 4ff3806..37248bd 100644
--- a/src/views/device/deviceMaintenance/components/listMaintenanceApproval.vue
+++ b/src/views/device/deviceMaintenance/components/listMaintenanceApproval.vue
@@ -38,7 +38,7 @@
applyName: '',
applyNo: '',
applyPerson: '',
- applyType: '7',
+ applyType: '8',
applyUnit: '',
businessKeys: [],
createUser: '',
@@ -59,49 +59,32 @@
const columns = ref([
{
text: '检修申请编号',
- value: 'checkApplyNo',
- width: '120',
- align: 'center',
- },
- {
- text: '检修申请名称',
- value: 'checkApplyName',
- width: '120',
- align: 'center',
- },
- {
- text: '设备编号',
value: 'applyNo',
align: 'center',
},
{
- text: '设备名称',
+ text: '检修申请名称',
value: 'applyName',
align: 'center',
},
{
- text: '出厂编号',
- value: 'overhaulPerson',
+ text: '申请单位',
+ value: 'applyUnitName',
align: 'center',
},
{
- text: '设备型号',
- value: 'createTime',
+ text: '申请人',
+ value: 'applyPersonName',
align: 'center',
},
{
- text: '送修单位',
- value: 'createTime',
+ text: '检修时间',
+ value: 'time',
align: 'center',
},
{
- text: '送修人',
- value: 'createTime',
- align: 'center',
- },
- {
- text: '申请日期',
- value: 'createTime',
+ text: '备注',
+ value: 'remark',
align: 'center',
},
{
diff --git a/src/views/device/deviceMaintenance/components/listPageAdd.vue b/src/views/device/deviceMaintenance/components/listPageAdd.vue
index 0a3dd34..9f04b8b 100644
--- a/src/views/device/deviceMaintenance/components/listPageAdd.vue
+++ b/src/views/device/deviceMaintenance/components/listPageAdd.vue
@@ -35,10 +35,10 @@
buttonArray.value = ['同意', '驳回', '拒绝']
}
else if (pageType.value === 'edit') {
- buttonArray.value = ['保存', '提交']
+ buttonArray.value = ['提交', '保存']
}
else {
- buttonArray.value = ['保存', '提交']
+ buttonArray.value = ['提交', '保存']
}
if ($route.params.id) {
infoId.value = $route.params.id as string
@@ -55,7 +55,7 @@
applyNo: '',
applyPerson: '',
applyPersonName: '',
- applyType: '7',
+ applyType: '8',
applyTypeName: '',
applyUnit: '',
applyUnitName: '',
@@ -65,19 +65,6 @@
createUser: '',
equipmentInfoList: [],
equipmentList: [],
- fileList: [
- {
- applyId: null,
- createTime: '',
- createUser: null,
- fileName: '',
- id: null,
- isDel: null,
- minioFileName: '',
- remark: '',
- updateTime: '',
- },
- ],
id: null,
isDel: null,
overhaulPerson: '',
@@ -372,7 +359,12 @@
// 点击增加行
const addRoow = () => {
// list.value.push(JSON.parse(JSON.stringify(addList.value)))
- addRowRef.value.initDialog({ title: '' })
+ if (formInline.value.equipmentList.length >= 1 && formInline.value.equipmentList[formInline.value.equipmentList.length - 1].equipmentId === '') {
+ ElMessage.warning('请完善上一条设备信息')
+ }
+ else {
+ addRowRef.value.initDialog({ title: '' })
+ }
}
// 标准配套设备更换表格删除行
@@ -450,7 +442,6 @@
@@ -470,7 +461,7 @@
@@ -480,7 +471,7 @@
@@ -489,7 +480,7 @@
@@ -510,7 +501,7 @@
v-model="formInline.time"
type="datetime"
style="width: 100%;"
- placeholder="请选择检修时间"
+ :placeholder="pageType === 'detail' ? '' : '请选择检修时间'"
format="YYYY/MM/DD HH:mm"
value-format="YYYY-MM-DD h:m"
:disabled="pageType === 'detail'"
@@ -523,8 +514,7 @@
@@ -563,29 +553,10 @@
*{{ item.text }}
-
-
-
-
-
+
diff --git a/src/views/device/deviceMaintenance/components/manageAdd.vue b/src/views/device/deviceMaintenance/components/manageAdd.vue
index 6f1ff1a..0557531 100644
--- a/src/views/device/deviceMaintenance/components/manageAdd.vue
+++ b/src/views/device/deviceMaintenance/components/manageAdd.vue
@@ -198,7 +198,7 @@
@@ -218,11 +218,11 @@
@@ -256,7 +256,7 @@
\ No newline at end of file
diff --git a/src/assets/images/scan.png b/src/assets/images/scan.png
new file mode 100644
index 0000000..a56bf3e
--- /dev/null
+++ b/src/assets/images/scan.png
Binary files differ
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
index 67d321f..01d46ac 100644
--- a/src/assets/styles/globals.scss
+++ b/src/assets/styles/globals.scss
@@ -136,3 +136,10 @@
// cursor: text;
// }
}
+
+.float-radio-buttons {
+ position: fixed;
+ top: 67px;
+ right: 15px;
+ z-index: 999;
+}
diff --git a/src/components.d.ts b/src/components.d.ts
index 0ca1396..227585d 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -18,8 +18,11 @@
AuthAll: typeof import('./components/AuthAll/index.vue')['default']
BarChartHorizontal: typeof import('./components/Echart/BarChartHorizontal.vue')['default']
BarChartVertical: typeof import('./components/Echart/BarChartVertical.vue')['default']
+ BarCodeBind: typeof import('./components/BarCodeBind/index.vue')['default']
BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default']
BenchCol: typeof import('./components/benchCol/index.vue')['default']
+ CertificationMonitor: typeof import('./components/Sample/certificationMonitor.vue')['default']
+ CertificationRecords: typeof import('./components/Sample/certificationRecords.vue')['default']
ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default']
CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default']
Copyright: typeof import('./components/Copyright/index.vue')['default']
@@ -36,6 +39,7 @@
ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default']
ImageUpload: typeof import('./components/ImageUpload/index.vue')['default']
LineChart: typeof import('./components/Echart/LineChart.vue')['default']
+ MeasureRecords: typeof import('./components/Sample/measureRecords.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']
@@ -47,11 +51,13 @@
QrDialog: typeof import('./components/QrDialog/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
+ ScanSampleDialog: typeof import('./components/ScanSampleDialog/index.vue')['default']
SearchArea: typeof import('./components/SearchArea/index.vue')['default']
SearchBar: typeof import('./components/SearchBar/index.vue')['default']
SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default']
SelectEmployeesDialog: typeof import('./components/dialog/selectEmployeesDialog.vue')['default']
SelectRoleDialog: typeof import('./components/dialog/selectRoleDialog.vue')['default']
+ SelectStaffDialog: typeof import('./components/dialog/selectStaffDialog.vue')['default']
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
diff --git a/src/components/BarCodeBind/index.vue b/src/components/BarCodeBind/index.vue
new file mode 100644
index 0000000..0b7d7e8
--- /dev/null
+++ b/src/components/BarCodeBind/index.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个条码{{ list.length > 1 ? ',请选择要绑定的条码。' : '' }}
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationMonitor.vue b/src/components/Sample/certificationMonitor.vue
new file mode 100644
index 0000000..16c1311
--- /dev/null
+++ b/src/components/Sample/certificationMonitor.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/certificationRecords.vue b/src/components/Sample/certificationRecords.vue
new file mode 100644
index 0000000..a694ce6
--- /dev/null
+++ b/src/components/Sample/certificationRecords.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Sample/measureRecords.vue b/src/components/Sample/measureRecords.vue
new file mode 100644
index 0000000..b88e552
--- /dev/null
+++ b/src/components/Sample/measureRecords.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/index.vue b/src/components/ScanSampleDialog/index.vue
new file mode 100644
index 0000000..4e160a5
--- /dev/null
+++ b/src/components/ScanSampleDialog/index.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+ 扫描到 {{ list.length }} 个样品{{ list.length > 1 ? ',请移除不需要绑定的样品。' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+ 重新扫描
+
+
+ 取 消
+
+
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/components/ScanSampleDialog/scan-interface.ts b/src/components/ScanSampleDialog/scan-interface.ts
new file mode 100644
index 0000000..1c3aa33
--- /dev/null
+++ b/src/components/ScanSampleDialog/scan-interface.ts
@@ -0,0 +1,12 @@
+export interface ISampleScan {
+ sampleId?: string // 样品id
+ sampleNo: string // 样品编号
+ sampleName: string // 样品名称
+ sampleModel: string // 样品型号
+ manufacturingNo: string // 出厂编号
+ customerNo: string // 委托方代码
+ customerName: string // 委托方名称
+ orderId: string // 委托书id
+ orderNo: string // 委托书编号
+ labelBind: string // 标签绑定
+}
diff --git a/src/components/dialog/selectStaffDialog.vue b/src/components/dialog/selectStaffDialog.vue
new file mode 100644
index 0000000..be9415b
--- /dev/null
+++ b/src/components/dialog/selectStaffDialog.vue
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+