diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/views/measure/file/components/addDialog.vue b/src/views/measure/file/components/addDialog.vue index 75e6394..3ba91e3 100644 --- a/src/views/measure/file/components/addDialog.vue +++ b/src/views/measure/file/components/addDialog.vue @@ -137,7 +137,7 @@ // // type: file.file.type, // }) // 重置当前验证 - ruleFormRef.value?.validateField('minioFileName') + ruleFormRef.value?.clearValidate('minioFileName') ElMessage.success('文件上传成功') } }) @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - {{ fileTypeName }} + @@ -226,7 +226,7 @@ - {{ effectiveStatusName }} + @@ -311,4 +311,13 @@ .marg { margin-top: 20px; } + +.isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } +} diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/views/measure/file/components/addDialog.vue b/src/views/measure/file/components/addDialog.vue index 75e6394..3ba91e3 100644 --- a/src/views/measure/file/components/addDialog.vue +++ b/src/views/measure/file/components/addDialog.vue @@ -137,7 +137,7 @@ // // type: file.file.type, // }) // 重置当前验证 - ruleFormRef.value?.validateField('minioFileName') + ruleFormRef.value?.clearValidate('minioFileName') ElMessage.success('文件上传成功') } }) @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - {{ fileTypeName }} + @@ -226,7 +226,7 @@ - {{ effectiveStatusName }} + @@ -311,4 +311,13 @@ .marg { margin-top: 20px; } + +.isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } +} diff --git a/src/views/measure/file/components/approve/templatePage.vue b/src/views/measure/file/components/approve/templatePage.vue index 9373e53..7b54fb0 100644 --- a/src/views/measure/file/components/approve/templatePage.vue +++ b/src/views/measure/file/components/approve/templatePage.vue @@ -268,7 +268,7 @@ - + diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/views/measure/file/components/addDialog.vue b/src/views/measure/file/components/addDialog.vue index 75e6394..3ba91e3 100644 --- a/src/views/measure/file/components/addDialog.vue +++ b/src/views/measure/file/components/addDialog.vue @@ -137,7 +137,7 @@ // // type: file.file.type, // }) // 重置当前验证 - ruleFormRef.value?.validateField('minioFileName') + ruleFormRef.value?.clearValidate('minioFileName') ElMessage.success('文件上传成功') } }) @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - {{ fileTypeName }} + @@ -226,7 +226,7 @@ - {{ effectiveStatusName }} + @@ -311,4 +311,13 @@ .marg { margin-top: 20px; } + +.isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } +} diff --git a/src/views/measure/file/components/approve/templatePage.vue b/src/views/measure/file/components/approve/templatePage.vue index 9373e53..7b54fb0 100644 --- a/src/views/measure/file/components/approve/templatePage.vue +++ b/src/views/measure/file/components/approve/templatePage.vue @@ -268,7 +268,7 @@ - + diff --git a/src/views/measure/file/components/templatePage.vue b/src/views/measure/file/components/templatePage.vue index c4ebf51..71b5d8b 100644 --- a/src/views/measure/file/components/templatePage.vue +++ b/src/views/measure/file/components/templatePage.vue @@ -1,13 +1,13 @@ + diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/views/measure/file/components/addDialog.vue b/src/views/measure/file/components/addDialog.vue index 75e6394..3ba91e3 100644 --- a/src/views/measure/file/components/addDialog.vue +++ b/src/views/measure/file/components/addDialog.vue @@ -137,7 +137,7 @@ // // type: file.file.type, // }) // 重置当前验证 - ruleFormRef.value?.validateField('minioFileName') + ruleFormRef.value?.clearValidate('minioFileName') ElMessage.success('文件上传成功') } }) @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - {{ fileTypeName }} + @@ -226,7 +226,7 @@ - {{ effectiveStatusName }} + @@ -311,4 +311,13 @@ .marg { margin-top: 20px; } + +.isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } +} diff --git a/src/views/measure/file/components/approve/templatePage.vue b/src/views/measure/file/components/approve/templatePage.vue index 9373e53..7b54fb0 100644 --- a/src/views/measure/file/components/approve/templatePage.vue +++ b/src/views/measure/file/components/approve/templatePage.vue @@ -268,7 +268,7 @@ - + diff --git a/src/views/measure/file/components/templatePage.vue b/src/views/measure/file/components/templatePage.vue index c4ebf51..71b5d8b 100644 --- a/src/views/measure/file/components/templatePage.vue +++ b/src/views/measure/file/components/templatePage.vue @@ -1,13 +1,13 @@ + diff --git a/src/views/measure/measureDept/components/addDialog.vue b/src/views/measure/measureDept/components/addDialog.vue new file mode 100644 index 0000000..c23b993 --- /dev/null +++ b/src/views/measure/measureDept/components/addDialog.vue @@ -0,0 +1,525 @@ + + + + + + diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/views/measure/file/components/addDialog.vue b/src/views/measure/file/components/addDialog.vue index 75e6394..3ba91e3 100644 --- a/src/views/measure/file/components/addDialog.vue +++ b/src/views/measure/file/components/addDialog.vue @@ -137,7 +137,7 @@ // // type: file.file.type, // }) // 重置当前验证 - ruleFormRef.value?.validateField('minioFileName') + ruleFormRef.value?.clearValidate('minioFileName') ElMessage.success('文件上传成功') } }) @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - {{ fileTypeName }} + @@ -226,7 +226,7 @@ - {{ effectiveStatusName }} + @@ -311,4 +311,13 @@ .marg { margin-top: 20px; } + +.isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } +} diff --git a/src/views/measure/file/components/approve/templatePage.vue b/src/views/measure/file/components/approve/templatePage.vue index 9373e53..7b54fb0 100644 --- a/src/views/measure/file/components/approve/templatePage.vue +++ b/src/views/measure/file/components/approve/templatePage.vue @@ -268,7 +268,7 @@ - + diff --git a/src/views/measure/file/components/templatePage.vue b/src/views/measure/file/components/templatePage.vue index c4ebf51..71b5d8b 100644 --- a/src/views/measure/file/components/templatePage.vue +++ b/src/views/measure/file/components/templatePage.vue @@ -1,13 +1,13 @@ + diff --git a/src/views/measure/measureDept/components/addDialog.vue b/src/views/measure/measureDept/components/addDialog.vue new file mode 100644 index 0000000..c23b993 --- /dev/null +++ b/src/views/measure/measureDept/components/addDialog.vue @@ -0,0 +1,525 @@ + + + + + + diff --git a/src/views/measure/measureDept/components/rowAddDialog.vue b/src/views/measure/measureDept/components/rowAddDialog.vue new file mode 100644 index 0000000..547e11a --- /dev/null +++ b/src/views/measure/measureDept/components/rowAddDialog.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/views/measure/file/components/addDialog.vue b/src/views/measure/file/components/addDialog.vue index 75e6394..3ba91e3 100644 --- a/src/views/measure/file/components/addDialog.vue +++ b/src/views/measure/file/components/addDialog.vue @@ -137,7 +137,7 @@ // // type: file.file.type, // }) // 重置当前验证 - ruleFormRef.value?.validateField('minioFileName') + ruleFormRef.value?.clearValidate('minioFileName') ElMessage.success('文件上传成功') } }) @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - {{ fileTypeName }} + @@ -226,7 +226,7 @@ - {{ effectiveStatusName }} + @@ -311,4 +311,13 @@ .marg { margin-top: 20px; } + +.isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } +} diff --git a/src/views/measure/file/components/approve/templatePage.vue b/src/views/measure/file/components/approve/templatePage.vue index 9373e53..7b54fb0 100644 --- a/src/views/measure/file/components/approve/templatePage.vue +++ b/src/views/measure/file/components/approve/templatePage.vue @@ -268,7 +268,7 @@ - + diff --git a/src/views/measure/file/components/templatePage.vue b/src/views/measure/file/components/templatePage.vue index c4ebf51..71b5d8b 100644 --- a/src/views/measure/file/components/templatePage.vue +++ b/src/views/measure/file/components/templatePage.vue @@ -1,13 +1,13 @@ + diff --git a/src/views/measure/measureDept/components/addDialog.vue b/src/views/measure/measureDept/components/addDialog.vue new file mode 100644 index 0000000..c23b993 --- /dev/null +++ b/src/views/measure/measureDept/components/addDialog.vue @@ -0,0 +1,525 @@ + + + + + + diff --git a/src/views/measure/measureDept/components/rowAddDialog.vue b/src/views/measure/measureDept/components/rowAddDialog.vue new file mode 100644 index 0000000..547e11a --- /dev/null +++ b/src/views/measure/measureDept/components/rowAddDialog.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/views/measure/measureDept/components/templatePage.vue b/src/views/measure/measureDept/components/templatePage.vue new file mode 100644 index 0000000..d4f7b42 --- /dev/null +++ b/src/views/measure/measureDept/components/templatePage.vue @@ -0,0 +1,275 @@ + + + + + + diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/views/measure/file/components/addDialog.vue b/src/views/measure/file/components/addDialog.vue index 75e6394..3ba91e3 100644 --- a/src/views/measure/file/components/addDialog.vue +++ b/src/views/measure/file/components/addDialog.vue @@ -137,7 +137,7 @@ // // type: file.file.type, // }) // 重置当前验证 - ruleFormRef.value?.validateField('minioFileName') + ruleFormRef.value?.clearValidate('minioFileName') ElMessage.success('文件上传成功') } }) @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - {{ fileTypeName }} + @@ -226,7 +226,7 @@ - {{ effectiveStatusName }} + @@ -311,4 +311,13 @@ .marg { margin-top: 20px; } + +.isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } +} diff --git a/src/views/measure/file/components/approve/templatePage.vue b/src/views/measure/file/components/approve/templatePage.vue index 9373e53..7b54fb0 100644 --- a/src/views/measure/file/components/approve/templatePage.vue +++ b/src/views/measure/file/components/approve/templatePage.vue @@ -268,7 +268,7 @@ - + diff --git a/src/views/measure/file/components/templatePage.vue b/src/views/measure/file/components/templatePage.vue index c4ebf51..71b5d8b 100644 --- a/src/views/measure/file/components/templatePage.vue +++ b/src/views/measure/file/components/templatePage.vue @@ -1,13 +1,13 @@ + diff --git a/src/views/measure/measureDept/components/addDialog.vue b/src/views/measure/measureDept/components/addDialog.vue new file mode 100644 index 0000000..c23b993 --- /dev/null +++ b/src/views/measure/measureDept/components/addDialog.vue @@ -0,0 +1,525 @@ + + + + + + diff --git a/src/views/measure/measureDept/components/rowAddDialog.vue b/src/views/measure/measureDept/components/rowAddDialog.vue new file mode 100644 index 0000000..547e11a --- /dev/null +++ b/src/views/measure/measureDept/components/rowAddDialog.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/views/measure/measureDept/components/templatePage.vue b/src/views/measure/measureDept/components/templatePage.vue new file mode 100644 index 0000000..d4f7b42 --- /dev/null +++ b/src/views/measure/measureDept/components/templatePage.vue @@ -0,0 +1,275 @@ + + + + + + diff --git a/src/views/measure/measureDept/gcz.vue b/src/views/measure/measureDept/gcz.vue index 8fa4904..9114f25 100644 --- a/src/views/measure/measureDept/gcz.vue +++ b/src/views/measure/measureDept/gcz.vue @@ -1,3 +1,7 @@ + + diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/views/measure/file/components/addDialog.vue b/src/views/measure/file/components/addDialog.vue index 75e6394..3ba91e3 100644 --- a/src/views/measure/file/components/addDialog.vue +++ b/src/views/measure/file/components/addDialog.vue @@ -137,7 +137,7 @@ // // type: file.file.type, // }) // 重置当前验证 - ruleFormRef.value?.validateField('minioFileName') + ruleFormRef.value?.clearValidate('minioFileName') ElMessage.success('文件上传成功') } }) @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - {{ fileTypeName }} + @@ -226,7 +226,7 @@ - {{ effectiveStatusName }} + @@ -311,4 +311,13 @@ .marg { margin-top: 20px; } + +.isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } +} diff --git a/src/views/measure/file/components/approve/templatePage.vue b/src/views/measure/file/components/approve/templatePage.vue index 9373e53..7b54fb0 100644 --- a/src/views/measure/file/components/approve/templatePage.vue +++ b/src/views/measure/file/components/approve/templatePage.vue @@ -268,7 +268,7 @@ - + diff --git a/src/views/measure/file/components/templatePage.vue b/src/views/measure/file/components/templatePage.vue index c4ebf51..71b5d8b 100644 --- a/src/views/measure/file/components/templatePage.vue +++ b/src/views/measure/file/components/templatePage.vue @@ -1,13 +1,13 @@ + diff --git a/src/views/measure/measureDept/components/addDialog.vue b/src/views/measure/measureDept/components/addDialog.vue new file mode 100644 index 0000000..c23b993 --- /dev/null +++ b/src/views/measure/measureDept/components/addDialog.vue @@ -0,0 +1,525 @@ + + + + + + diff --git a/src/views/measure/measureDept/components/rowAddDialog.vue b/src/views/measure/measureDept/components/rowAddDialog.vue new file mode 100644 index 0000000..547e11a --- /dev/null +++ b/src/views/measure/measureDept/components/rowAddDialog.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/views/measure/measureDept/components/templatePage.vue b/src/views/measure/measureDept/components/templatePage.vue new file mode 100644 index 0000000..d4f7b42 --- /dev/null +++ b/src/views/measure/measureDept/components/templatePage.vue @@ -0,0 +1,275 @@ + + + + + + diff --git a/src/views/measure/measureDept/gcz.vue b/src/views/measure/measureDept/gcz.vue index 8fa4904..9114f25 100644 --- a/src/views/measure/measureDept/gcz.vue +++ b/src/views/measure/measureDept/gcz.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/ks.vue b/src/views/measure/measureDept/ks.vue index 8c05053..c0dc1f5 100644 --- a/src/views/measure/measureDept/ks.vue +++ b/src/views/measure/measureDept/ks.vue @@ -1,3 +1,7 @@ + + diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/views/measure/file/components/addDialog.vue b/src/views/measure/file/components/addDialog.vue index 75e6394..3ba91e3 100644 --- a/src/views/measure/file/components/addDialog.vue +++ b/src/views/measure/file/components/addDialog.vue @@ -137,7 +137,7 @@ // // type: file.file.type, // }) // 重置当前验证 - ruleFormRef.value?.validateField('minioFileName') + ruleFormRef.value?.clearValidate('minioFileName') ElMessage.success('文件上传成功') } }) @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - {{ fileTypeName }} + @@ -226,7 +226,7 @@ - {{ effectiveStatusName }} + @@ -311,4 +311,13 @@ .marg { margin-top: 20px; } + +.isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } +} diff --git a/src/views/measure/file/components/approve/templatePage.vue b/src/views/measure/file/components/approve/templatePage.vue index 9373e53..7b54fb0 100644 --- a/src/views/measure/file/components/approve/templatePage.vue +++ b/src/views/measure/file/components/approve/templatePage.vue @@ -268,7 +268,7 @@ - + diff --git a/src/views/measure/file/components/templatePage.vue b/src/views/measure/file/components/templatePage.vue index c4ebf51..71b5d8b 100644 --- a/src/views/measure/file/components/templatePage.vue +++ b/src/views/measure/file/components/templatePage.vue @@ -1,13 +1,13 @@ + diff --git a/src/views/measure/measureDept/components/addDialog.vue b/src/views/measure/measureDept/components/addDialog.vue new file mode 100644 index 0000000..c23b993 --- /dev/null +++ b/src/views/measure/measureDept/components/addDialog.vue @@ -0,0 +1,525 @@ + + + + + + diff --git a/src/views/measure/measureDept/components/rowAddDialog.vue b/src/views/measure/measureDept/components/rowAddDialog.vue new file mode 100644 index 0000000..547e11a --- /dev/null +++ b/src/views/measure/measureDept/components/rowAddDialog.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/views/measure/measureDept/components/templatePage.vue b/src/views/measure/measureDept/components/templatePage.vue new file mode 100644 index 0000000..d4f7b42 --- /dev/null +++ b/src/views/measure/measureDept/components/templatePage.vue @@ -0,0 +1,275 @@ + + + + + + diff --git a/src/views/measure/measureDept/gcz.vue b/src/views/measure/measureDept/gcz.vue index 8fa4904..9114f25 100644 --- a/src/views/measure/measureDept/gcz.vue +++ b/src/views/measure/measureDept/gcz.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/ks.vue b/src/views/measure/measureDept/ks.vue index 8c05053..c0dc1f5 100644 --- a/src/views/measure/measureDept/ks.vue +++ b/src/views/measure/measureDept/ks.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/measureDept-interface.ts b/src/views/measure/measureDept/measureDept-interface.ts new file mode 100644 index 0000000..dfdb50f --- /dev/null +++ b/src/views/measure/measureDept/measureDept-interface.ts @@ -0,0 +1,23 @@ +// 查询参数类型 +export interface searchQueryType { + organizeNo: string // 组织编号 + organizeName: string // 名称 + limit: number + offset: number + organizeType: string // 类型 + createTime: string // 创建时间 + director: string // 负责人 + meterMajor: string // 专业 + pDeptId: string // 所属科室 +} + +export interface columnType { + label: string + data: string +} +// 详情表格数据类型 +export interface detailType { + name: string + data: any[] + column: columnType[] +} diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/views/measure/file/components/addDialog.vue b/src/views/measure/file/components/addDialog.vue index 75e6394..3ba91e3 100644 --- a/src/views/measure/file/components/addDialog.vue +++ b/src/views/measure/file/components/addDialog.vue @@ -137,7 +137,7 @@ // // type: file.file.type, // }) // 重置当前验证 - ruleFormRef.value?.validateField('minioFileName') + ruleFormRef.value?.clearValidate('minioFileName') ElMessage.success('文件上传成功') } }) @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - {{ fileTypeName }} + @@ -226,7 +226,7 @@ - {{ effectiveStatusName }} + @@ -311,4 +311,13 @@ .marg { margin-top: 20px; } + +.isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } +} diff --git a/src/views/measure/file/components/approve/templatePage.vue b/src/views/measure/file/components/approve/templatePage.vue index 9373e53..7b54fb0 100644 --- a/src/views/measure/file/components/approve/templatePage.vue +++ b/src/views/measure/file/components/approve/templatePage.vue @@ -268,7 +268,7 @@ - + diff --git a/src/views/measure/file/components/templatePage.vue b/src/views/measure/file/components/templatePage.vue index c4ebf51..71b5d8b 100644 --- a/src/views/measure/file/components/templatePage.vue +++ b/src/views/measure/file/components/templatePage.vue @@ -1,13 +1,13 @@ + diff --git a/src/views/measure/measureDept/components/addDialog.vue b/src/views/measure/measureDept/components/addDialog.vue new file mode 100644 index 0000000..c23b993 --- /dev/null +++ b/src/views/measure/measureDept/components/addDialog.vue @@ -0,0 +1,525 @@ + + + + + + diff --git a/src/views/measure/measureDept/components/rowAddDialog.vue b/src/views/measure/measureDept/components/rowAddDialog.vue new file mode 100644 index 0000000..547e11a --- /dev/null +++ b/src/views/measure/measureDept/components/rowAddDialog.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/views/measure/measureDept/components/templatePage.vue b/src/views/measure/measureDept/components/templatePage.vue new file mode 100644 index 0000000..d4f7b42 --- /dev/null +++ b/src/views/measure/measureDept/components/templatePage.vue @@ -0,0 +1,275 @@ + + + + + + diff --git a/src/views/measure/measureDept/gcz.vue b/src/views/measure/measureDept/gcz.vue index 8fa4904..9114f25 100644 --- a/src/views/measure/measureDept/gcz.vue +++ b/src/views/measure/measureDept/gcz.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/ks.vue b/src/views/measure/measureDept/ks.vue index 8c05053..c0dc1f5 100644 --- a/src/views/measure/measureDept/ks.vue +++ b/src/views/measure/measureDept/ks.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/measureDept-interface.ts b/src/views/measure/measureDept/measureDept-interface.ts new file mode 100644 index 0000000..dfdb50f --- /dev/null +++ b/src/views/measure/measureDept/measureDept-interface.ts @@ -0,0 +1,23 @@ +// 查询参数类型 +export interface searchQueryType { + organizeNo: string // 组织编号 + organizeName: string // 名称 + limit: number + offset: number + organizeType: string // 类型 + createTime: string // 创建时间 + director: string // 负责人 + meterMajor: string // 专业 + pDeptId: string // 所属科室 +} + +export interface columnType { + label: string + data: string +} +// 详情表格数据类型 +export interface detailType { + name: string + data: any[] + column: columnType[] +} diff --git a/src/views/measure/person/components/addPerson.vue b/src/views/measure/person/components/addPerson.vue index 4b52d2f..18f379d 100644 --- a/src/views/measure/person/components/addPerson.vue +++ b/src/views/measure/person/components/addPerson.vue @@ -9,8 +9,10 @@ import { getUserList } from '@/api/system/user' import { getDeptTreeList } from '@/api/system/dept' import { UploadFile } from '@/api/measure/file' +import { toTreeList } from '@/utils/structure' import type { userType } from '@/views/system/user/user-interface' import { getDictByCode } from '@/api/system/dict' +import comTreeSelect from '@/views/system/user/selecTree.vue' import { getStaffAdd, getStaffDetail, getStaffupdate } from '@/api/measure/person' const emits = defineEmits(['resetData']) const ruleFormRef = ref() // from组件 @@ -36,10 +38,37 @@ }) // 表单 const multipleTableRef = ref>() const title = ref('') -const rules = ref({ - // fileName: [{ required: true, message: '名称不能为空', trigger: 'blur' }], +// 身份证号码验证规则 +const validateIDcard = (rule: any, value: any, callback: any) => { + const rr = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[X])$)$/ + if (rr.test(value)) { + callback() + } + else { + callback(new Error('验证失败')) + } +} +const rules = ref({ + name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }], + minioFileName: [{ required: true, message: '头像不能为空', trigger: 'blur' }], + idCard: [{ required: true, message: '身份证号码不符合规范', trigger: 'blur', validator: validateIDcard }], + sex: [{ required: true, message: '性别不能为空', trigger: 'blur' }], + mainExaminer: [{ required: true, message: '请先选择', trigger: 'blur' }], + specialOperator: [{ required: true, message: '请先选择', trigger: 'blur' }], + technologyExam: [{ required: true, message: '请先选择', trigger: 'blur' }], + deptId: [{ required: true, message: '请先选择', trigger: 'blur' }], + major: [{ required: true, message: '请先输入', trigger: 'blur' }], }) // 表单验证规则 - +// 根据身份证得到生日 +const getBirthday = () => { + ruleFormRef.value?.validateField('idCard').then((res) => { + // 获取生日 + const IdCard = ruleForm.value.idCard + const birthday = `${IdCard.substring(6, 10)}-${IdCard.substring(10, 12)}-${IdCard.substring(12, 14)}` + ruleForm.value.birthday = birthday + console.log(ruleForm.value) + }) +} const dialogVisible = ref(false) // 弹窗显示 const userList = ref([]) // 可使用人列表 const getuser = () => { @@ -51,11 +80,15 @@ { name: '是', value: '0' }, { name: '否', value: '1' }, ]) -const PubList = ref([]) -// 获取发布单位列表 +const deptProps = reactive({ + parent: 'pid', value: 'id', label: 'name', children: 'children', +}) +const PubList = ref([]) +// 获取组织列表 const getPubList = () => { getDeptTreeList().then((res) => { - PubList.value = res.data + // 转成树结构 + PubList.value = toTreeList(res.data, '0', true) }) } const sexList = ref<{ id: string; value: string; name: string }[]>() @@ -72,6 +105,29 @@ educationList.value = response.data }) } +// 重置表单内容 +const resetFormData = () => { + ruleForm.value = { + name: '', // 姓名 + minioFileName: '', // 照片 + idCard: '', // 省份证号 + birthday: '', // 出生年月 + technologyJob: '', // 技术职务 + administrationJob: '', // 行政职务 + staffNo: '', // 人员编号 + sex: '', // 性别 + education: '', // 文化程度 + deptId: '', // 工作部门 科室 + major: '', // 计量专业 + workDate: '', // 从事日期 + mainExaminer: '', // 是否主考人 + specialOperator: '', // 是否特操人 + technologyExam: '', // 技术考核 + remark: '', // 备注 + certificateList: [], // 证书列表 + + } +} const technologyJobList = ref([]) // 获取技术职务列表 const getTechnologyJobList = () => { @@ -93,14 +149,15 @@ } // 保存选择人员信息 const confirmPerson = (row: userType) => { - console.log(row, '选择人员信息') ruleForm.value.name = row.name console.log(ruleForm.value) + ruleFormRef.value?.clearValidate('name') } // 上传请求 const uploadQuarterlyEvaluateFile = (file: File) => { UploadFile(file).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.value.minioFileName = res.data.fileId } }) @@ -210,6 +267,11 @@ type: 'warning', }, ).then(() => { + // for (const key in ruleForm.value) { + // if (ruleForm.value[key] === '') { + // ruleForm.value[key] = null + // } + // } (title.value === '新建' ? getStaffAdd : getStaffupdate) ({ ...ruleForm.value, certificateList: changeList.value[0].data }).then((res) => { @@ -217,6 +279,7 @@ formEl?.resetFields() ElMessage.success('提交成功') emits('resetData') + resetFormData() } }) }) @@ -228,13 +291,14 @@ formEl?.resetFields() changeList.value[0].data = [] emits('resetData') + resetFormData() } // 弹窗初始化 const initDialog = (row: any) => { - ruleFormRef.value?.resetFields() changeList.value[0].data = [] dialogVisible.value = true title.value = row.title + resetFormData() getuser() getPubList() getSexList() @@ -272,10 +336,10 @@ - + - + - + @@ -312,7 +376,7 @@ - + @@ -334,16 +398,15 @@ - + + + @@ -464,6 +527,15 @@ :deep(.el-radio__label) { display: none; } + + .isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } + } } .marg { diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/views/measure/file/components/addDialog.vue b/src/views/measure/file/components/addDialog.vue index 75e6394..3ba91e3 100644 --- a/src/views/measure/file/components/addDialog.vue +++ b/src/views/measure/file/components/addDialog.vue @@ -137,7 +137,7 @@ // // type: file.file.type, // }) // 重置当前验证 - ruleFormRef.value?.validateField('minioFileName') + ruleFormRef.value?.clearValidate('minioFileName') ElMessage.success('文件上传成功') } }) @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - {{ fileTypeName }} + @@ -226,7 +226,7 @@ - {{ effectiveStatusName }} + @@ -311,4 +311,13 @@ .marg { margin-top: 20px; } + +.isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } +} diff --git a/src/views/measure/file/components/approve/templatePage.vue b/src/views/measure/file/components/approve/templatePage.vue index 9373e53..7b54fb0 100644 --- a/src/views/measure/file/components/approve/templatePage.vue +++ b/src/views/measure/file/components/approve/templatePage.vue @@ -268,7 +268,7 @@ - + diff --git a/src/views/measure/file/components/templatePage.vue b/src/views/measure/file/components/templatePage.vue index c4ebf51..71b5d8b 100644 --- a/src/views/measure/file/components/templatePage.vue +++ b/src/views/measure/file/components/templatePage.vue @@ -1,13 +1,13 @@ + diff --git a/src/views/measure/measureDept/components/addDialog.vue b/src/views/measure/measureDept/components/addDialog.vue new file mode 100644 index 0000000..c23b993 --- /dev/null +++ b/src/views/measure/measureDept/components/addDialog.vue @@ -0,0 +1,525 @@ + + + + + + diff --git a/src/views/measure/measureDept/components/rowAddDialog.vue b/src/views/measure/measureDept/components/rowAddDialog.vue new file mode 100644 index 0000000..547e11a --- /dev/null +++ b/src/views/measure/measureDept/components/rowAddDialog.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/views/measure/measureDept/components/templatePage.vue b/src/views/measure/measureDept/components/templatePage.vue new file mode 100644 index 0000000..d4f7b42 --- /dev/null +++ b/src/views/measure/measureDept/components/templatePage.vue @@ -0,0 +1,275 @@ + + + + + + diff --git a/src/views/measure/measureDept/gcz.vue b/src/views/measure/measureDept/gcz.vue index 8fa4904..9114f25 100644 --- a/src/views/measure/measureDept/gcz.vue +++ b/src/views/measure/measureDept/gcz.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/ks.vue b/src/views/measure/measureDept/ks.vue index 8c05053..c0dc1f5 100644 --- a/src/views/measure/measureDept/ks.vue +++ b/src/views/measure/measureDept/ks.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/measureDept-interface.ts b/src/views/measure/measureDept/measureDept-interface.ts new file mode 100644 index 0000000..dfdb50f --- /dev/null +++ b/src/views/measure/measureDept/measureDept-interface.ts @@ -0,0 +1,23 @@ +// 查询参数类型 +export interface searchQueryType { + organizeNo: string // 组织编号 + organizeName: string // 名称 + limit: number + offset: number + organizeType: string // 类型 + createTime: string // 创建时间 + director: string // 负责人 + meterMajor: string // 专业 + pDeptId: string // 所属科室 +} + +export interface columnType { + label: string + data: string +} +// 详情表格数据类型 +export interface detailType { + name: string + data: any[] + column: columnType[] +} diff --git a/src/views/measure/person/components/addPerson.vue b/src/views/measure/person/components/addPerson.vue index 4b52d2f..18f379d 100644 --- a/src/views/measure/person/components/addPerson.vue +++ b/src/views/measure/person/components/addPerson.vue @@ -9,8 +9,10 @@ import { getUserList } from '@/api/system/user' import { getDeptTreeList } from '@/api/system/dept' import { UploadFile } from '@/api/measure/file' +import { toTreeList } from '@/utils/structure' import type { userType } from '@/views/system/user/user-interface' import { getDictByCode } from '@/api/system/dict' +import comTreeSelect from '@/views/system/user/selecTree.vue' import { getStaffAdd, getStaffDetail, getStaffupdate } from '@/api/measure/person' const emits = defineEmits(['resetData']) const ruleFormRef = ref() // from组件 @@ -36,10 +38,37 @@ }) // 表单 const multipleTableRef = ref>() const title = ref('') -const rules = ref({ - // fileName: [{ required: true, message: '名称不能为空', trigger: 'blur' }], +// 身份证号码验证规则 +const validateIDcard = (rule: any, value: any, callback: any) => { + const rr = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[X])$)$/ + if (rr.test(value)) { + callback() + } + else { + callback(new Error('验证失败')) + } +} +const rules = ref({ + name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }], + minioFileName: [{ required: true, message: '头像不能为空', trigger: 'blur' }], + idCard: [{ required: true, message: '身份证号码不符合规范', trigger: 'blur', validator: validateIDcard }], + sex: [{ required: true, message: '性别不能为空', trigger: 'blur' }], + mainExaminer: [{ required: true, message: '请先选择', trigger: 'blur' }], + specialOperator: [{ required: true, message: '请先选择', trigger: 'blur' }], + technologyExam: [{ required: true, message: '请先选择', trigger: 'blur' }], + deptId: [{ required: true, message: '请先选择', trigger: 'blur' }], + major: [{ required: true, message: '请先输入', trigger: 'blur' }], }) // 表单验证规则 - +// 根据身份证得到生日 +const getBirthday = () => { + ruleFormRef.value?.validateField('idCard').then((res) => { + // 获取生日 + const IdCard = ruleForm.value.idCard + const birthday = `${IdCard.substring(6, 10)}-${IdCard.substring(10, 12)}-${IdCard.substring(12, 14)}` + ruleForm.value.birthday = birthday + console.log(ruleForm.value) + }) +} const dialogVisible = ref(false) // 弹窗显示 const userList = ref([]) // 可使用人列表 const getuser = () => { @@ -51,11 +80,15 @@ { name: '是', value: '0' }, { name: '否', value: '1' }, ]) -const PubList = ref([]) -// 获取发布单位列表 +const deptProps = reactive({ + parent: 'pid', value: 'id', label: 'name', children: 'children', +}) +const PubList = ref([]) +// 获取组织列表 const getPubList = () => { getDeptTreeList().then((res) => { - PubList.value = res.data + // 转成树结构 + PubList.value = toTreeList(res.data, '0', true) }) } const sexList = ref<{ id: string; value: string; name: string }[]>() @@ -72,6 +105,29 @@ educationList.value = response.data }) } +// 重置表单内容 +const resetFormData = () => { + ruleForm.value = { + name: '', // 姓名 + minioFileName: '', // 照片 + idCard: '', // 省份证号 + birthday: '', // 出生年月 + technologyJob: '', // 技术职务 + administrationJob: '', // 行政职务 + staffNo: '', // 人员编号 + sex: '', // 性别 + education: '', // 文化程度 + deptId: '', // 工作部门 科室 + major: '', // 计量专业 + workDate: '', // 从事日期 + mainExaminer: '', // 是否主考人 + specialOperator: '', // 是否特操人 + technologyExam: '', // 技术考核 + remark: '', // 备注 + certificateList: [], // 证书列表 + + } +} const technologyJobList = ref([]) // 获取技术职务列表 const getTechnologyJobList = () => { @@ -93,14 +149,15 @@ } // 保存选择人员信息 const confirmPerson = (row: userType) => { - console.log(row, '选择人员信息') ruleForm.value.name = row.name console.log(ruleForm.value) + ruleFormRef.value?.clearValidate('name') } // 上传请求 const uploadQuarterlyEvaluateFile = (file: File) => { UploadFile(file).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.value.minioFileName = res.data.fileId } }) @@ -210,6 +267,11 @@ type: 'warning', }, ).then(() => { + // for (const key in ruleForm.value) { + // if (ruleForm.value[key] === '') { + // ruleForm.value[key] = null + // } + // } (title.value === '新建' ? getStaffAdd : getStaffupdate) ({ ...ruleForm.value, certificateList: changeList.value[0].data }).then((res) => { @@ -217,6 +279,7 @@ formEl?.resetFields() ElMessage.success('提交成功') emits('resetData') + resetFormData() } }) }) @@ -228,13 +291,14 @@ formEl?.resetFields() changeList.value[0].data = [] emits('resetData') + resetFormData() } // 弹窗初始化 const initDialog = (row: any) => { - ruleFormRef.value?.resetFields() changeList.value[0].data = [] dialogVisible.value = true title.value = row.title + resetFormData() getuser() getPubList() getSexList() @@ -272,10 +336,10 @@ - + - + - + @@ -312,7 +376,7 @@ - + @@ -334,16 +398,15 @@ - + + + @@ -464,6 +527,15 @@ :deep(.el-radio__label) { display: none; } + + .isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } + } } .marg { diff --git a/src/views/system/notice/noteAdd.vue b/src/views/system/notice/noteAdd.vue index e6e6204..2aaa7c5 100644 --- a/src/views/system/notice/noteAdd.vue +++ b/src/views/system/notice/noteAdd.vue @@ -19,7 +19,7 @@ noticeTitle: '', // 标题 }) // 表单 const rules = ref({ - noticeNo: [{ required: true, message: '通知公告编号不能为空', trigger: 'blur' }], + noticeTitle: [{ required: true, message: '标题不能为空', trigger: 'blur' }], noticeSketch: [{ required: true, message: '内容简述不能为空', trigger: 'blur' }], noticeContent: [{ required: true, message: '发布内容不能为空', trigger: 'blur' }], }) // 表单验证规则 @@ -97,7 +97,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -127,7 +127,7 @@ - + {{ ruleForm.minioFileName }} 上传 diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/views/measure/file/components/addDialog.vue b/src/views/measure/file/components/addDialog.vue index 75e6394..3ba91e3 100644 --- a/src/views/measure/file/components/addDialog.vue +++ b/src/views/measure/file/components/addDialog.vue @@ -137,7 +137,7 @@ // // type: file.file.type, // }) // 重置当前验证 - ruleFormRef.value?.validateField('minioFileName') + ruleFormRef.value?.clearValidate('minioFileName') ElMessage.success('文件上传成功') } }) @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - {{ fileTypeName }} + @@ -226,7 +226,7 @@ - {{ effectiveStatusName }} + @@ -311,4 +311,13 @@ .marg { margin-top: 20px; } + +.isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } +} diff --git a/src/views/measure/file/components/approve/templatePage.vue b/src/views/measure/file/components/approve/templatePage.vue index 9373e53..7b54fb0 100644 --- a/src/views/measure/file/components/approve/templatePage.vue +++ b/src/views/measure/file/components/approve/templatePage.vue @@ -268,7 +268,7 @@ - + diff --git a/src/views/measure/file/components/templatePage.vue b/src/views/measure/file/components/templatePage.vue index c4ebf51..71b5d8b 100644 --- a/src/views/measure/file/components/templatePage.vue +++ b/src/views/measure/file/components/templatePage.vue @@ -1,13 +1,13 @@ + diff --git a/src/views/measure/measureDept/components/addDialog.vue b/src/views/measure/measureDept/components/addDialog.vue new file mode 100644 index 0000000..c23b993 --- /dev/null +++ b/src/views/measure/measureDept/components/addDialog.vue @@ -0,0 +1,525 @@ + + + + + + diff --git a/src/views/measure/measureDept/components/rowAddDialog.vue b/src/views/measure/measureDept/components/rowAddDialog.vue new file mode 100644 index 0000000..547e11a --- /dev/null +++ b/src/views/measure/measureDept/components/rowAddDialog.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/views/measure/measureDept/components/templatePage.vue b/src/views/measure/measureDept/components/templatePage.vue new file mode 100644 index 0000000..d4f7b42 --- /dev/null +++ b/src/views/measure/measureDept/components/templatePage.vue @@ -0,0 +1,275 @@ + + + + + + diff --git a/src/views/measure/measureDept/gcz.vue b/src/views/measure/measureDept/gcz.vue index 8fa4904..9114f25 100644 --- a/src/views/measure/measureDept/gcz.vue +++ b/src/views/measure/measureDept/gcz.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/ks.vue b/src/views/measure/measureDept/ks.vue index 8c05053..c0dc1f5 100644 --- a/src/views/measure/measureDept/ks.vue +++ b/src/views/measure/measureDept/ks.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/measureDept-interface.ts b/src/views/measure/measureDept/measureDept-interface.ts new file mode 100644 index 0000000..dfdb50f --- /dev/null +++ b/src/views/measure/measureDept/measureDept-interface.ts @@ -0,0 +1,23 @@ +// 查询参数类型 +export interface searchQueryType { + organizeNo: string // 组织编号 + organizeName: string // 名称 + limit: number + offset: number + organizeType: string // 类型 + createTime: string // 创建时间 + director: string // 负责人 + meterMajor: string // 专业 + pDeptId: string // 所属科室 +} + +export interface columnType { + label: string + data: string +} +// 详情表格数据类型 +export interface detailType { + name: string + data: any[] + column: columnType[] +} diff --git a/src/views/measure/person/components/addPerson.vue b/src/views/measure/person/components/addPerson.vue index 4b52d2f..18f379d 100644 --- a/src/views/measure/person/components/addPerson.vue +++ b/src/views/measure/person/components/addPerson.vue @@ -9,8 +9,10 @@ import { getUserList } from '@/api/system/user' import { getDeptTreeList } from '@/api/system/dept' import { UploadFile } from '@/api/measure/file' +import { toTreeList } from '@/utils/structure' import type { userType } from '@/views/system/user/user-interface' import { getDictByCode } from '@/api/system/dict' +import comTreeSelect from '@/views/system/user/selecTree.vue' import { getStaffAdd, getStaffDetail, getStaffupdate } from '@/api/measure/person' const emits = defineEmits(['resetData']) const ruleFormRef = ref() // from组件 @@ -36,10 +38,37 @@ }) // 表单 const multipleTableRef = ref>() const title = ref('') -const rules = ref({ - // fileName: [{ required: true, message: '名称不能为空', trigger: 'blur' }], +// 身份证号码验证规则 +const validateIDcard = (rule: any, value: any, callback: any) => { + const rr = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[X])$)$/ + if (rr.test(value)) { + callback() + } + else { + callback(new Error('验证失败')) + } +} +const rules = ref({ + name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }], + minioFileName: [{ required: true, message: '头像不能为空', trigger: 'blur' }], + idCard: [{ required: true, message: '身份证号码不符合规范', trigger: 'blur', validator: validateIDcard }], + sex: [{ required: true, message: '性别不能为空', trigger: 'blur' }], + mainExaminer: [{ required: true, message: '请先选择', trigger: 'blur' }], + specialOperator: [{ required: true, message: '请先选择', trigger: 'blur' }], + technologyExam: [{ required: true, message: '请先选择', trigger: 'blur' }], + deptId: [{ required: true, message: '请先选择', trigger: 'blur' }], + major: [{ required: true, message: '请先输入', trigger: 'blur' }], }) // 表单验证规则 - +// 根据身份证得到生日 +const getBirthday = () => { + ruleFormRef.value?.validateField('idCard').then((res) => { + // 获取生日 + const IdCard = ruleForm.value.idCard + const birthday = `${IdCard.substring(6, 10)}-${IdCard.substring(10, 12)}-${IdCard.substring(12, 14)}` + ruleForm.value.birthday = birthday + console.log(ruleForm.value) + }) +} const dialogVisible = ref(false) // 弹窗显示 const userList = ref([]) // 可使用人列表 const getuser = () => { @@ -51,11 +80,15 @@ { name: '是', value: '0' }, { name: '否', value: '1' }, ]) -const PubList = ref([]) -// 获取发布单位列表 +const deptProps = reactive({ + parent: 'pid', value: 'id', label: 'name', children: 'children', +}) +const PubList = ref([]) +// 获取组织列表 const getPubList = () => { getDeptTreeList().then((res) => { - PubList.value = res.data + // 转成树结构 + PubList.value = toTreeList(res.data, '0', true) }) } const sexList = ref<{ id: string; value: string; name: string }[]>() @@ -72,6 +105,29 @@ educationList.value = response.data }) } +// 重置表单内容 +const resetFormData = () => { + ruleForm.value = { + name: '', // 姓名 + minioFileName: '', // 照片 + idCard: '', // 省份证号 + birthday: '', // 出生年月 + technologyJob: '', // 技术职务 + administrationJob: '', // 行政职务 + staffNo: '', // 人员编号 + sex: '', // 性别 + education: '', // 文化程度 + deptId: '', // 工作部门 科室 + major: '', // 计量专业 + workDate: '', // 从事日期 + mainExaminer: '', // 是否主考人 + specialOperator: '', // 是否特操人 + technologyExam: '', // 技术考核 + remark: '', // 备注 + certificateList: [], // 证书列表 + + } +} const technologyJobList = ref([]) // 获取技术职务列表 const getTechnologyJobList = () => { @@ -93,14 +149,15 @@ } // 保存选择人员信息 const confirmPerson = (row: userType) => { - console.log(row, '选择人员信息') ruleForm.value.name = row.name console.log(ruleForm.value) + ruleFormRef.value?.clearValidate('name') } // 上传请求 const uploadQuarterlyEvaluateFile = (file: File) => { UploadFile(file).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.value.minioFileName = res.data.fileId } }) @@ -210,6 +267,11 @@ type: 'warning', }, ).then(() => { + // for (const key in ruleForm.value) { + // if (ruleForm.value[key] === '') { + // ruleForm.value[key] = null + // } + // } (title.value === '新建' ? getStaffAdd : getStaffupdate) ({ ...ruleForm.value, certificateList: changeList.value[0].data }).then((res) => { @@ -217,6 +279,7 @@ formEl?.resetFields() ElMessage.success('提交成功') emits('resetData') + resetFormData() } }) }) @@ -228,13 +291,14 @@ formEl?.resetFields() changeList.value[0].data = [] emits('resetData') + resetFormData() } // 弹窗初始化 const initDialog = (row: any) => { - ruleFormRef.value?.resetFields() changeList.value[0].data = [] dialogVisible.value = true title.value = row.title + resetFormData() getuser() getPubList() getSexList() @@ -272,10 +336,10 @@ - + - + - + @@ -312,7 +376,7 @@ - + @@ -334,16 +398,15 @@ - + + + @@ -464,6 +527,15 @@ :deep(.el-radio__label) { display: none; } + + .isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } + } } .marg { diff --git a/src/views/system/notice/noteAdd.vue b/src/views/system/notice/noteAdd.vue index e6e6204..2aaa7c5 100644 --- a/src/views/system/notice/noteAdd.vue +++ b/src/views/system/notice/noteAdd.vue @@ -19,7 +19,7 @@ noticeTitle: '', // 标题 }) // 表单 const rules = ref({ - noticeNo: [{ required: true, message: '通知公告编号不能为空', trigger: 'blur' }], + noticeTitle: [{ required: true, message: '标题不能为空', trigger: 'blur' }], noticeSketch: [{ required: true, message: '内容简述不能为空', trigger: 'blur' }], noticeContent: [{ required: true, message: '发布内容不能为空', trigger: 'blur' }], }) // 表单验证规则 @@ -97,7 +97,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -127,7 +127,7 @@ - + {{ ruleForm.minioFileName }} 上传 diff --git a/src/views/system/tool/autograph/addDDialog.vue b/src/views/system/tool/autograph/addDDialog.vue index 1c11e93..bb1db43 100644 --- a/src/views/system/tool/autograph/addDDialog.vue +++ b/src/views/system/tool/autograph/addDDialog.vue @@ -135,6 +135,7 @@ fd.append('multipartFile', event.target.files[0]) uploadApi(fd).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.minioFileName = res.data[0] ElMessage.success('上传成功') } @@ -150,12 +151,12 @@ - + diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/views/measure/file/components/addDialog.vue b/src/views/measure/file/components/addDialog.vue index 75e6394..3ba91e3 100644 --- a/src/views/measure/file/components/addDialog.vue +++ b/src/views/measure/file/components/addDialog.vue @@ -137,7 +137,7 @@ // // type: file.file.type, // }) // 重置当前验证 - ruleFormRef.value?.validateField('minioFileName') + ruleFormRef.value?.clearValidate('minioFileName') ElMessage.success('文件上传成功') } }) @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - {{ fileTypeName }} + @@ -226,7 +226,7 @@ - {{ effectiveStatusName }} + @@ -311,4 +311,13 @@ .marg { margin-top: 20px; } + +.isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } +} diff --git a/src/views/measure/file/components/approve/templatePage.vue b/src/views/measure/file/components/approve/templatePage.vue index 9373e53..7b54fb0 100644 --- a/src/views/measure/file/components/approve/templatePage.vue +++ b/src/views/measure/file/components/approve/templatePage.vue @@ -268,7 +268,7 @@ - + diff --git a/src/views/measure/file/components/templatePage.vue b/src/views/measure/file/components/templatePage.vue index c4ebf51..71b5d8b 100644 --- a/src/views/measure/file/components/templatePage.vue +++ b/src/views/measure/file/components/templatePage.vue @@ -1,13 +1,13 @@ + diff --git a/src/views/measure/measureDept/components/addDialog.vue b/src/views/measure/measureDept/components/addDialog.vue new file mode 100644 index 0000000..c23b993 --- /dev/null +++ b/src/views/measure/measureDept/components/addDialog.vue @@ -0,0 +1,525 @@ + + + + + + diff --git a/src/views/measure/measureDept/components/rowAddDialog.vue b/src/views/measure/measureDept/components/rowAddDialog.vue new file mode 100644 index 0000000..547e11a --- /dev/null +++ b/src/views/measure/measureDept/components/rowAddDialog.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/views/measure/measureDept/components/templatePage.vue b/src/views/measure/measureDept/components/templatePage.vue new file mode 100644 index 0000000..d4f7b42 --- /dev/null +++ b/src/views/measure/measureDept/components/templatePage.vue @@ -0,0 +1,275 @@ + + + + + + diff --git a/src/views/measure/measureDept/gcz.vue b/src/views/measure/measureDept/gcz.vue index 8fa4904..9114f25 100644 --- a/src/views/measure/measureDept/gcz.vue +++ b/src/views/measure/measureDept/gcz.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/ks.vue b/src/views/measure/measureDept/ks.vue index 8c05053..c0dc1f5 100644 --- a/src/views/measure/measureDept/ks.vue +++ b/src/views/measure/measureDept/ks.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/measureDept-interface.ts b/src/views/measure/measureDept/measureDept-interface.ts new file mode 100644 index 0000000..dfdb50f --- /dev/null +++ b/src/views/measure/measureDept/measureDept-interface.ts @@ -0,0 +1,23 @@ +// 查询参数类型 +export interface searchQueryType { + organizeNo: string // 组织编号 + organizeName: string // 名称 + limit: number + offset: number + organizeType: string // 类型 + createTime: string // 创建时间 + director: string // 负责人 + meterMajor: string // 专业 + pDeptId: string // 所属科室 +} + +export interface columnType { + label: string + data: string +} +// 详情表格数据类型 +export interface detailType { + name: string + data: any[] + column: columnType[] +} diff --git a/src/views/measure/person/components/addPerson.vue b/src/views/measure/person/components/addPerson.vue index 4b52d2f..18f379d 100644 --- a/src/views/measure/person/components/addPerson.vue +++ b/src/views/measure/person/components/addPerson.vue @@ -9,8 +9,10 @@ import { getUserList } from '@/api/system/user' import { getDeptTreeList } from '@/api/system/dept' import { UploadFile } from '@/api/measure/file' +import { toTreeList } from '@/utils/structure' import type { userType } from '@/views/system/user/user-interface' import { getDictByCode } from '@/api/system/dict' +import comTreeSelect from '@/views/system/user/selecTree.vue' import { getStaffAdd, getStaffDetail, getStaffupdate } from '@/api/measure/person' const emits = defineEmits(['resetData']) const ruleFormRef = ref() // from组件 @@ -36,10 +38,37 @@ }) // 表单 const multipleTableRef = ref>() const title = ref('') -const rules = ref({ - // fileName: [{ required: true, message: '名称不能为空', trigger: 'blur' }], +// 身份证号码验证规则 +const validateIDcard = (rule: any, value: any, callback: any) => { + const rr = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[X])$)$/ + if (rr.test(value)) { + callback() + } + else { + callback(new Error('验证失败')) + } +} +const rules = ref({ + name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }], + minioFileName: [{ required: true, message: '头像不能为空', trigger: 'blur' }], + idCard: [{ required: true, message: '身份证号码不符合规范', trigger: 'blur', validator: validateIDcard }], + sex: [{ required: true, message: '性别不能为空', trigger: 'blur' }], + mainExaminer: [{ required: true, message: '请先选择', trigger: 'blur' }], + specialOperator: [{ required: true, message: '请先选择', trigger: 'blur' }], + technologyExam: [{ required: true, message: '请先选择', trigger: 'blur' }], + deptId: [{ required: true, message: '请先选择', trigger: 'blur' }], + major: [{ required: true, message: '请先输入', trigger: 'blur' }], }) // 表单验证规则 - +// 根据身份证得到生日 +const getBirthday = () => { + ruleFormRef.value?.validateField('idCard').then((res) => { + // 获取生日 + const IdCard = ruleForm.value.idCard + const birthday = `${IdCard.substring(6, 10)}-${IdCard.substring(10, 12)}-${IdCard.substring(12, 14)}` + ruleForm.value.birthday = birthday + console.log(ruleForm.value) + }) +} const dialogVisible = ref(false) // 弹窗显示 const userList = ref([]) // 可使用人列表 const getuser = () => { @@ -51,11 +80,15 @@ { name: '是', value: '0' }, { name: '否', value: '1' }, ]) -const PubList = ref([]) -// 获取发布单位列表 +const deptProps = reactive({ + parent: 'pid', value: 'id', label: 'name', children: 'children', +}) +const PubList = ref([]) +// 获取组织列表 const getPubList = () => { getDeptTreeList().then((res) => { - PubList.value = res.data + // 转成树结构 + PubList.value = toTreeList(res.data, '0', true) }) } const sexList = ref<{ id: string; value: string; name: string }[]>() @@ -72,6 +105,29 @@ educationList.value = response.data }) } +// 重置表单内容 +const resetFormData = () => { + ruleForm.value = { + name: '', // 姓名 + minioFileName: '', // 照片 + idCard: '', // 省份证号 + birthday: '', // 出生年月 + technologyJob: '', // 技术职务 + administrationJob: '', // 行政职务 + staffNo: '', // 人员编号 + sex: '', // 性别 + education: '', // 文化程度 + deptId: '', // 工作部门 科室 + major: '', // 计量专业 + workDate: '', // 从事日期 + mainExaminer: '', // 是否主考人 + specialOperator: '', // 是否特操人 + technologyExam: '', // 技术考核 + remark: '', // 备注 + certificateList: [], // 证书列表 + + } +} const technologyJobList = ref([]) // 获取技术职务列表 const getTechnologyJobList = () => { @@ -93,14 +149,15 @@ } // 保存选择人员信息 const confirmPerson = (row: userType) => { - console.log(row, '选择人员信息') ruleForm.value.name = row.name console.log(ruleForm.value) + ruleFormRef.value?.clearValidate('name') } // 上传请求 const uploadQuarterlyEvaluateFile = (file: File) => { UploadFile(file).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.value.minioFileName = res.data.fileId } }) @@ -210,6 +267,11 @@ type: 'warning', }, ).then(() => { + // for (const key in ruleForm.value) { + // if (ruleForm.value[key] === '') { + // ruleForm.value[key] = null + // } + // } (title.value === '新建' ? getStaffAdd : getStaffupdate) ({ ...ruleForm.value, certificateList: changeList.value[0].data }).then((res) => { @@ -217,6 +279,7 @@ formEl?.resetFields() ElMessage.success('提交成功') emits('resetData') + resetFormData() } }) }) @@ -228,13 +291,14 @@ formEl?.resetFields() changeList.value[0].data = [] emits('resetData') + resetFormData() } // 弹窗初始化 const initDialog = (row: any) => { - ruleFormRef.value?.resetFields() changeList.value[0].data = [] dialogVisible.value = true title.value = row.title + resetFormData() getuser() getPubList() getSexList() @@ -272,10 +336,10 @@ - + - + - + @@ -312,7 +376,7 @@ - + @@ -334,16 +398,15 @@ - + + + @@ -464,6 +527,15 @@ :deep(.el-radio__label) { display: none; } + + .isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } + } } .marg { diff --git a/src/views/system/notice/noteAdd.vue b/src/views/system/notice/noteAdd.vue index e6e6204..2aaa7c5 100644 --- a/src/views/system/notice/noteAdd.vue +++ b/src/views/system/notice/noteAdd.vue @@ -19,7 +19,7 @@ noticeTitle: '', // 标题 }) // 表单 const rules = ref({ - noticeNo: [{ required: true, message: '通知公告编号不能为空', trigger: 'blur' }], + noticeTitle: [{ required: true, message: '标题不能为空', trigger: 'blur' }], noticeSketch: [{ required: true, message: '内容简述不能为空', trigger: 'blur' }], noticeContent: [{ required: true, message: '发布内容不能为空', trigger: 'blur' }], }) // 表单验证规则 @@ -97,7 +97,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -127,7 +127,7 @@ - + {{ ruleForm.minioFileName }} 上传 diff --git a/src/views/system/tool/autograph/addDDialog.vue b/src/views/system/tool/autograph/addDDialog.vue index 1c11e93..bb1db43 100644 --- a/src/views/system/tool/autograph/addDDialog.vue +++ b/src/views/system/tool/autograph/addDDialog.vue @@ -135,6 +135,7 @@ fd.append('multipartFile', event.target.files[0]) uploadApi(fd).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.minioFileName = res.data[0] ElMessage.success('上传成功') } @@ -150,12 +151,12 @@ - + diff --git a/src/views/system/tool/certificate/addDDialog.vue b/src/views/system/tool/certificate/addDDialog.vue index 43df934..304885c 100644 --- a/src/views/system/tool/certificate/addDDialog.vue +++ b/src/views/system/tool/certificate/addDDialog.vue @@ -135,6 +135,7 @@ fd.append('multipartFile', event.target.files[0]) uploadApi(fd).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.minioFileName = res.data[0] ElMessage.success('上传成功') } @@ -150,12 +151,12 @@ - + diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/views/measure/file/components/addDialog.vue b/src/views/measure/file/components/addDialog.vue index 75e6394..3ba91e3 100644 --- a/src/views/measure/file/components/addDialog.vue +++ b/src/views/measure/file/components/addDialog.vue @@ -137,7 +137,7 @@ // // type: file.file.type, // }) // 重置当前验证 - ruleFormRef.value?.validateField('minioFileName') + ruleFormRef.value?.clearValidate('minioFileName') ElMessage.success('文件上传成功') } }) @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - {{ fileTypeName }} + @@ -226,7 +226,7 @@ - {{ effectiveStatusName }} + @@ -311,4 +311,13 @@ .marg { margin-top: 20px; } + +.isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } +} diff --git a/src/views/measure/file/components/approve/templatePage.vue b/src/views/measure/file/components/approve/templatePage.vue index 9373e53..7b54fb0 100644 --- a/src/views/measure/file/components/approve/templatePage.vue +++ b/src/views/measure/file/components/approve/templatePage.vue @@ -268,7 +268,7 @@ - + diff --git a/src/views/measure/file/components/templatePage.vue b/src/views/measure/file/components/templatePage.vue index c4ebf51..71b5d8b 100644 --- a/src/views/measure/file/components/templatePage.vue +++ b/src/views/measure/file/components/templatePage.vue @@ -1,13 +1,13 @@ + diff --git a/src/views/measure/measureDept/components/addDialog.vue b/src/views/measure/measureDept/components/addDialog.vue new file mode 100644 index 0000000..c23b993 --- /dev/null +++ b/src/views/measure/measureDept/components/addDialog.vue @@ -0,0 +1,525 @@ + + + + + + diff --git a/src/views/measure/measureDept/components/rowAddDialog.vue b/src/views/measure/measureDept/components/rowAddDialog.vue new file mode 100644 index 0000000..547e11a --- /dev/null +++ b/src/views/measure/measureDept/components/rowAddDialog.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/views/measure/measureDept/components/templatePage.vue b/src/views/measure/measureDept/components/templatePage.vue new file mode 100644 index 0000000..d4f7b42 --- /dev/null +++ b/src/views/measure/measureDept/components/templatePage.vue @@ -0,0 +1,275 @@ + + + + + + diff --git a/src/views/measure/measureDept/gcz.vue b/src/views/measure/measureDept/gcz.vue index 8fa4904..9114f25 100644 --- a/src/views/measure/measureDept/gcz.vue +++ b/src/views/measure/measureDept/gcz.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/ks.vue b/src/views/measure/measureDept/ks.vue index 8c05053..c0dc1f5 100644 --- a/src/views/measure/measureDept/ks.vue +++ b/src/views/measure/measureDept/ks.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/measureDept-interface.ts b/src/views/measure/measureDept/measureDept-interface.ts new file mode 100644 index 0000000..dfdb50f --- /dev/null +++ b/src/views/measure/measureDept/measureDept-interface.ts @@ -0,0 +1,23 @@ +// 查询参数类型 +export interface searchQueryType { + organizeNo: string // 组织编号 + organizeName: string // 名称 + limit: number + offset: number + organizeType: string // 类型 + createTime: string // 创建时间 + director: string // 负责人 + meterMajor: string // 专业 + pDeptId: string // 所属科室 +} + +export interface columnType { + label: string + data: string +} +// 详情表格数据类型 +export interface detailType { + name: string + data: any[] + column: columnType[] +} diff --git a/src/views/measure/person/components/addPerson.vue b/src/views/measure/person/components/addPerson.vue index 4b52d2f..18f379d 100644 --- a/src/views/measure/person/components/addPerson.vue +++ b/src/views/measure/person/components/addPerson.vue @@ -9,8 +9,10 @@ import { getUserList } from '@/api/system/user' import { getDeptTreeList } from '@/api/system/dept' import { UploadFile } from '@/api/measure/file' +import { toTreeList } from '@/utils/structure' import type { userType } from '@/views/system/user/user-interface' import { getDictByCode } from '@/api/system/dict' +import comTreeSelect from '@/views/system/user/selecTree.vue' import { getStaffAdd, getStaffDetail, getStaffupdate } from '@/api/measure/person' const emits = defineEmits(['resetData']) const ruleFormRef = ref() // from组件 @@ -36,10 +38,37 @@ }) // 表单 const multipleTableRef = ref>() const title = ref('') -const rules = ref({ - // fileName: [{ required: true, message: '名称不能为空', trigger: 'blur' }], +// 身份证号码验证规则 +const validateIDcard = (rule: any, value: any, callback: any) => { + const rr = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[X])$)$/ + if (rr.test(value)) { + callback() + } + else { + callback(new Error('验证失败')) + } +} +const rules = ref({ + name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }], + minioFileName: [{ required: true, message: '头像不能为空', trigger: 'blur' }], + idCard: [{ required: true, message: '身份证号码不符合规范', trigger: 'blur', validator: validateIDcard }], + sex: [{ required: true, message: '性别不能为空', trigger: 'blur' }], + mainExaminer: [{ required: true, message: '请先选择', trigger: 'blur' }], + specialOperator: [{ required: true, message: '请先选择', trigger: 'blur' }], + technologyExam: [{ required: true, message: '请先选择', trigger: 'blur' }], + deptId: [{ required: true, message: '请先选择', trigger: 'blur' }], + major: [{ required: true, message: '请先输入', trigger: 'blur' }], }) // 表单验证规则 - +// 根据身份证得到生日 +const getBirthday = () => { + ruleFormRef.value?.validateField('idCard').then((res) => { + // 获取生日 + const IdCard = ruleForm.value.idCard + const birthday = `${IdCard.substring(6, 10)}-${IdCard.substring(10, 12)}-${IdCard.substring(12, 14)}` + ruleForm.value.birthday = birthday + console.log(ruleForm.value) + }) +} const dialogVisible = ref(false) // 弹窗显示 const userList = ref([]) // 可使用人列表 const getuser = () => { @@ -51,11 +80,15 @@ { name: '是', value: '0' }, { name: '否', value: '1' }, ]) -const PubList = ref([]) -// 获取发布单位列表 +const deptProps = reactive({ + parent: 'pid', value: 'id', label: 'name', children: 'children', +}) +const PubList = ref([]) +// 获取组织列表 const getPubList = () => { getDeptTreeList().then((res) => { - PubList.value = res.data + // 转成树结构 + PubList.value = toTreeList(res.data, '0', true) }) } const sexList = ref<{ id: string; value: string; name: string }[]>() @@ -72,6 +105,29 @@ educationList.value = response.data }) } +// 重置表单内容 +const resetFormData = () => { + ruleForm.value = { + name: '', // 姓名 + minioFileName: '', // 照片 + idCard: '', // 省份证号 + birthday: '', // 出生年月 + technologyJob: '', // 技术职务 + administrationJob: '', // 行政职务 + staffNo: '', // 人员编号 + sex: '', // 性别 + education: '', // 文化程度 + deptId: '', // 工作部门 科室 + major: '', // 计量专业 + workDate: '', // 从事日期 + mainExaminer: '', // 是否主考人 + specialOperator: '', // 是否特操人 + technologyExam: '', // 技术考核 + remark: '', // 备注 + certificateList: [], // 证书列表 + + } +} const technologyJobList = ref([]) // 获取技术职务列表 const getTechnologyJobList = () => { @@ -93,14 +149,15 @@ } // 保存选择人员信息 const confirmPerson = (row: userType) => { - console.log(row, '选择人员信息') ruleForm.value.name = row.name console.log(ruleForm.value) + ruleFormRef.value?.clearValidate('name') } // 上传请求 const uploadQuarterlyEvaluateFile = (file: File) => { UploadFile(file).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.value.minioFileName = res.data.fileId } }) @@ -210,6 +267,11 @@ type: 'warning', }, ).then(() => { + // for (const key in ruleForm.value) { + // if (ruleForm.value[key] === '') { + // ruleForm.value[key] = null + // } + // } (title.value === '新建' ? getStaffAdd : getStaffupdate) ({ ...ruleForm.value, certificateList: changeList.value[0].data }).then((res) => { @@ -217,6 +279,7 @@ formEl?.resetFields() ElMessage.success('提交成功') emits('resetData') + resetFormData() } }) }) @@ -228,13 +291,14 @@ formEl?.resetFields() changeList.value[0].data = [] emits('resetData') + resetFormData() } // 弹窗初始化 const initDialog = (row: any) => { - ruleFormRef.value?.resetFields() changeList.value[0].data = [] dialogVisible.value = true title.value = row.title + resetFormData() getuser() getPubList() getSexList() @@ -272,10 +336,10 @@ - + - + - + @@ -312,7 +376,7 @@ - + @@ -334,16 +398,15 @@ - + + + @@ -464,6 +527,15 @@ :deep(.el-radio__label) { display: none; } + + .isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } + } } .marg { diff --git a/src/views/system/notice/noteAdd.vue b/src/views/system/notice/noteAdd.vue index e6e6204..2aaa7c5 100644 --- a/src/views/system/notice/noteAdd.vue +++ b/src/views/system/notice/noteAdd.vue @@ -19,7 +19,7 @@ noticeTitle: '', // 标题 }) // 表单 const rules = ref({ - noticeNo: [{ required: true, message: '通知公告编号不能为空', trigger: 'blur' }], + noticeTitle: [{ required: true, message: '标题不能为空', trigger: 'blur' }], noticeSketch: [{ required: true, message: '内容简述不能为空', trigger: 'blur' }], noticeContent: [{ required: true, message: '发布内容不能为空', trigger: 'blur' }], }) // 表单验证规则 @@ -97,7 +97,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -127,7 +127,7 @@ - + {{ ruleForm.minioFileName }} 上传 diff --git a/src/views/system/tool/autograph/addDDialog.vue b/src/views/system/tool/autograph/addDDialog.vue index 1c11e93..bb1db43 100644 --- a/src/views/system/tool/autograph/addDDialog.vue +++ b/src/views/system/tool/autograph/addDDialog.vue @@ -135,6 +135,7 @@ fd.append('multipartFile', event.target.files[0]) uploadApi(fd).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.minioFileName = res.data[0] ElMessage.success('上传成功') } @@ -150,12 +151,12 @@ - + diff --git a/src/views/system/tool/certificate/addDDialog.vue b/src/views/system/tool/certificate/addDDialog.vue index 43df934..304885c 100644 --- a/src/views/system/tool/certificate/addDDialog.vue +++ b/src/views/system/tool/certificate/addDDialog.vue @@ -135,6 +135,7 @@ fd.append('multipartFile', event.target.files[0]) uploadApi(fd).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.minioFileName = res.data[0] ElMessage.success('上传成功') } @@ -150,12 +151,12 @@ - + diff --git a/src/views/system/tool/document/addDDialog.vue b/src/views/system/tool/document/addDDialog.vue index 43df934..304885c 100644 --- a/src/views/system/tool/document/addDDialog.vue +++ b/src/views/system/tool/document/addDDialog.vue @@ -135,6 +135,7 @@ fd.append('multipartFile', event.target.files[0]) uploadApi(fd).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.minioFileName = res.data[0] ElMessage.success('上传成功') } @@ -150,12 +151,12 @@ - + diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/views/measure/file/components/addDialog.vue b/src/views/measure/file/components/addDialog.vue index 75e6394..3ba91e3 100644 --- a/src/views/measure/file/components/addDialog.vue +++ b/src/views/measure/file/components/addDialog.vue @@ -137,7 +137,7 @@ // // type: file.file.type, // }) // 重置当前验证 - ruleFormRef.value?.validateField('minioFileName') + ruleFormRef.value?.clearValidate('minioFileName') ElMessage.success('文件上传成功') } }) @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - {{ fileTypeName }} + @@ -226,7 +226,7 @@ - {{ effectiveStatusName }} + @@ -311,4 +311,13 @@ .marg { margin-top: 20px; } + +.isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } +} diff --git a/src/views/measure/file/components/approve/templatePage.vue b/src/views/measure/file/components/approve/templatePage.vue index 9373e53..7b54fb0 100644 --- a/src/views/measure/file/components/approve/templatePage.vue +++ b/src/views/measure/file/components/approve/templatePage.vue @@ -268,7 +268,7 @@ - + diff --git a/src/views/measure/file/components/templatePage.vue b/src/views/measure/file/components/templatePage.vue index c4ebf51..71b5d8b 100644 --- a/src/views/measure/file/components/templatePage.vue +++ b/src/views/measure/file/components/templatePage.vue @@ -1,13 +1,13 @@ + diff --git a/src/views/measure/measureDept/components/addDialog.vue b/src/views/measure/measureDept/components/addDialog.vue new file mode 100644 index 0000000..c23b993 --- /dev/null +++ b/src/views/measure/measureDept/components/addDialog.vue @@ -0,0 +1,525 @@ + + + + + + diff --git a/src/views/measure/measureDept/components/rowAddDialog.vue b/src/views/measure/measureDept/components/rowAddDialog.vue new file mode 100644 index 0000000..547e11a --- /dev/null +++ b/src/views/measure/measureDept/components/rowAddDialog.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/views/measure/measureDept/components/templatePage.vue b/src/views/measure/measureDept/components/templatePage.vue new file mode 100644 index 0000000..d4f7b42 --- /dev/null +++ b/src/views/measure/measureDept/components/templatePage.vue @@ -0,0 +1,275 @@ + + + + + + diff --git a/src/views/measure/measureDept/gcz.vue b/src/views/measure/measureDept/gcz.vue index 8fa4904..9114f25 100644 --- a/src/views/measure/measureDept/gcz.vue +++ b/src/views/measure/measureDept/gcz.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/ks.vue b/src/views/measure/measureDept/ks.vue index 8c05053..c0dc1f5 100644 --- a/src/views/measure/measureDept/ks.vue +++ b/src/views/measure/measureDept/ks.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/measureDept-interface.ts b/src/views/measure/measureDept/measureDept-interface.ts new file mode 100644 index 0000000..dfdb50f --- /dev/null +++ b/src/views/measure/measureDept/measureDept-interface.ts @@ -0,0 +1,23 @@ +// 查询参数类型 +export interface searchQueryType { + organizeNo: string // 组织编号 + organizeName: string // 名称 + limit: number + offset: number + organizeType: string // 类型 + createTime: string // 创建时间 + director: string // 负责人 + meterMajor: string // 专业 + pDeptId: string // 所属科室 +} + +export interface columnType { + label: string + data: string +} +// 详情表格数据类型 +export interface detailType { + name: string + data: any[] + column: columnType[] +} diff --git a/src/views/measure/person/components/addPerson.vue b/src/views/measure/person/components/addPerson.vue index 4b52d2f..18f379d 100644 --- a/src/views/measure/person/components/addPerson.vue +++ b/src/views/measure/person/components/addPerson.vue @@ -9,8 +9,10 @@ import { getUserList } from '@/api/system/user' import { getDeptTreeList } from '@/api/system/dept' import { UploadFile } from '@/api/measure/file' +import { toTreeList } from '@/utils/structure' import type { userType } from '@/views/system/user/user-interface' import { getDictByCode } from '@/api/system/dict' +import comTreeSelect from '@/views/system/user/selecTree.vue' import { getStaffAdd, getStaffDetail, getStaffupdate } from '@/api/measure/person' const emits = defineEmits(['resetData']) const ruleFormRef = ref() // from组件 @@ -36,10 +38,37 @@ }) // 表单 const multipleTableRef = ref>() const title = ref('') -const rules = ref({ - // fileName: [{ required: true, message: '名称不能为空', trigger: 'blur' }], +// 身份证号码验证规则 +const validateIDcard = (rule: any, value: any, callback: any) => { + const rr = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[X])$)$/ + if (rr.test(value)) { + callback() + } + else { + callback(new Error('验证失败')) + } +} +const rules = ref({ + name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }], + minioFileName: [{ required: true, message: '头像不能为空', trigger: 'blur' }], + idCard: [{ required: true, message: '身份证号码不符合规范', trigger: 'blur', validator: validateIDcard }], + sex: [{ required: true, message: '性别不能为空', trigger: 'blur' }], + mainExaminer: [{ required: true, message: '请先选择', trigger: 'blur' }], + specialOperator: [{ required: true, message: '请先选择', trigger: 'blur' }], + technologyExam: [{ required: true, message: '请先选择', trigger: 'blur' }], + deptId: [{ required: true, message: '请先选择', trigger: 'blur' }], + major: [{ required: true, message: '请先输入', trigger: 'blur' }], }) // 表单验证规则 - +// 根据身份证得到生日 +const getBirthday = () => { + ruleFormRef.value?.validateField('idCard').then((res) => { + // 获取生日 + const IdCard = ruleForm.value.idCard + const birthday = `${IdCard.substring(6, 10)}-${IdCard.substring(10, 12)}-${IdCard.substring(12, 14)}` + ruleForm.value.birthday = birthday + console.log(ruleForm.value) + }) +} const dialogVisible = ref(false) // 弹窗显示 const userList = ref([]) // 可使用人列表 const getuser = () => { @@ -51,11 +80,15 @@ { name: '是', value: '0' }, { name: '否', value: '1' }, ]) -const PubList = ref([]) -// 获取发布单位列表 +const deptProps = reactive({ + parent: 'pid', value: 'id', label: 'name', children: 'children', +}) +const PubList = ref([]) +// 获取组织列表 const getPubList = () => { getDeptTreeList().then((res) => { - PubList.value = res.data + // 转成树结构 + PubList.value = toTreeList(res.data, '0', true) }) } const sexList = ref<{ id: string; value: string; name: string }[]>() @@ -72,6 +105,29 @@ educationList.value = response.data }) } +// 重置表单内容 +const resetFormData = () => { + ruleForm.value = { + name: '', // 姓名 + minioFileName: '', // 照片 + idCard: '', // 省份证号 + birthday: '', // 出生年月 + technologyJob: '', // 技术职务 + administrationJob: '', // 行政职务 + staffNo: '', // 人员编号 + sex: '', // 性别 + education: '', // 文化程度 + deptId: '', // 工作部门 科室 + major: '', // 计量专业 + workDate: '', // 从事日期 + mainExaminer: '', // 是否主考人 + specialOperator: '', // 是否特操人 + technologyExam: '', // 技术考核 + remark: '', // 备注 + certificateList: [], // 证书列表 + + } +} const technologyJobList = ref([]) // 获取技术职务列表 const getTechnologyJobList = () => { @@ -93,14 +149,15 @@ } // 保存选择人员信息 const confirmPerson = (row: userType) => { - console.log(row, '选择人员信息') ruleForm.value.name = row.name console.log(ruleForm.value) + ruleFormRef.value?.clearValidate('name') } // 上传请求 const uploadQuarterlyEvaluateFile = (file: File) => { UploadFile(file).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.value.minioFileName = res.data.fileId } }) @@ -210,6 +267,11 @@ type: 'warning', }, ).then(() => { + // for (const key in ruleForm.value) { + // if (ruleForm.value[key] === '') { + // ruleForm.value[key] = null + // } + // } (title.value === '新建' ? getStaffAdd : getStaffupdate) ({ ...ruleForm.value, certificateList: changeList.value[0].data }).then((res) => { @@ -217,6 +279,7 @@ formEl?.resetFields() ElMessage.success('提交成功') emits('resetData') + resetFormData() } }) }) @@ -228,13 +291,14 @@ formEl?.resetFields() changeList.value[0].data = [] emits('resetData') + resetFormData() } // 弹窗初始化 const initDialog = (row: any) => { - ruleFormRef.value?.resetFields() changeList.value[0].data = [] dialogVisible.value = true title.value = row.title + resetFormData() getuser() getPubList() getSexList() @@ -272,10 +336,10 @@ - + - + - + @@ -312,7 +376,7 @@ - + @@ -334,16 +398,15 @@ - + + + @@ -464,6 +527,15 @@ :deep(.el-radio__label) { display: none; } + + .isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } + } } .marg { diff --git a/src/views/system/notice/noteAdd.vue b/src/views/system/notice/noteAdd.vue index e6e6204..2aaa7c5 100644 --- a/src/views/system/notice/noteAdd.vue +++ b/src/views/system/notice/noteAdd.vue @@ -19,7 +19,7 @@ noticeTitle: '', // 标题 }) // 表单 const rules = ref({ - noticeNo: [{ required: true, message: '通知公告编号不能为空', trigger: 'blur' }], + noticeTitle: [{ required: true, message: '标题不能为空', trigger: 'blur' }], noticeSketch: [{ required: true, message: '内容简述不能为空', trigger: 'blur' }], noticeContent: [{ required: true, message: '发布内容不能为空', trigger: 'blur' }], }) // 表单验证规则 @@ -97,7 +97,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -127,7 +127,7 @@ - + {{ ruleForm.minioFileName }} 上传 diff --git a/src/views/system/tool/autograph/addDDialog.vue b/src/views/system/tool/autograph/addDDialog.vue index 1c11e93..bb1db43 100644 --- a/src/views/system/tool/autograph/addDDialog.vue +++ b/src/views/system/tool/autograph/addDDialog.vue @@ -135,6 +135,7 @@ fd.append('multipartFile', event.target.files[0]) uploadApi(fd).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.minioFileName = res.data[0] ElMessage.success('上传成功') } @@ -150,12 +151,12 @@ - + diff --git a/src/views/system/tool/certificate/addDDialog.vue b/src/views/system/tool/certificate/addDDialog.vue index 43df934..304885c 100644 --- a/src/views/system/tool/certificate/addDDialog.vue +++ b/src/views/system/tool/certificate/addDDialog.vue @@ -135,6 +135,7 @@ fd.append('multipartFile', event.target.files[0]) uploadApi(fd).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.minioFileName = res.data[0] ElMessage.success('上传成功') } @@ -150,12 +151,12 @@ - + diff --git a/src/views/system/tool/document/addDDialog.vue b/src/views/system/tool/document/addDDialog.vue index 43df934..304885c 100644 --- a/src/views/system/tool/document/addDDialog.vue +++ b/src/views/system/tool/document/addDDialog.vue @@ -135,6 +135,7 @@ fd.append('multipartFile', event.target.files[0]) uploadApi(fd).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.minioFileName = res.data[0] ElMessage.success('上传成功') } @@ -150,12 +151,12 @@ - + diff --git a/src/views/system/tool/signature/addDDialog.vue b/src/views/system/tool/signature/addDDialog.vue index f9a49e2..4f1305e 100644 --- a/src/views/system/tool/signature/addDDialog.vue +++ b/src/views/system/tool/signature/addDDialog.vue @@ -40,6 +40,7 @@ // 弹窗初始化 const initDialog = (row: signType) => { title.value = row.title as string + console.log(title.value, 'title') ruleForm.signNo = '' ruleForm.signName = '' ruleForm.createTime = '' @@ -128,21 +129,19 @@ const fileRef = ref() // 文件上传input const onFileChange = (event: any) => { // 原生上传 - // console.log(event.target.files) - if (event.target.files?.length !== 0) { - // 创建formdata对象 - const fd = new FormData() - fd.append('multipartFile', event.target.files[0]) - uploadApi(fd).then((res) => { - if (res.code === 200) { - ruleForm.minioFileName = res.data[0] - ElMessage.success('上传成功') - } - else { - ElMessage.error(res.message) - } - }) - } + // 创建formdata对象 + const fd = new FormData() + fd.append('multipartFile', event.target.files[0]) + uploadApi(fd).then((res) => { + if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') + ruleForm.minioFileName = res.data[0] + ElMessage.success('上传成功') + } + else { + ElMessage.error(res.message) + } + }) } const upload = () => { fileRef.value.click() @@ -150,12 +149,12 @@ - + diff --git a/src/api/measure/file.ts b/src/api/measure/file.ts index 087460c..05235e3 100644 --- a/src/api/measure/file.ts +++ b/src/api/measure/file.ts @@ -53,3 +53,12 @@ data: param, }) } +// 导出 +export function exportFileApi(data: object) { + return request({ + url: 'file/listExport', + method: 'post', + data, + responseType: 'blob', + }) +} diff --git a/src/api/measure/measureDept.ts b/src/api/measure/measureDept.ts new file mode 100644 index 0000000..b0841fd --- /dev/null +++ b/src/api/measure/measureDept.ts @@ -0,0 +1,38 @@ +// 计量组织管理接口api +import request from '../index' +import type { searchQueryType } from '@/views/measure/measureDept/measureDept-interface' +const prefix = 'meter/' +// 文件列表(分页) +export function listPageApi(data: searchQueryType) { + return request({ + url: `${prefix}organize/listPage?limit=${data.limit}&offset=${data.offset}`, + method: 'post', + data, + }) +} +// 详情 +export function deptDetailApi(data: object) { + return request({ + url: `${prefix}organize/detail`, + method: 'post', + data, + }) +} +// 导出 +export function exportApi(data: object) { + return request({ + url: `${prefix}organize/listExport`, + method: 'post', + data, + responseType: 'blob', + }) +} +// 更新 +export function updateApi(data: object) { + return request({ + url: `${prefix}organize/update`, + method: 'post', + data, + }) +} + diff --git a/src/views/measure/file/components/addDialog.vue b/src/views/measure/file/components/addDialog.vue index 75e6394..3ba91e3 100644 --- a/src/views/measure/file/components/addDialog.vue +++ b/src/views/measure/file/components/addDialog.vue @@ -137,7 +137,7 @@ // // type: file.file.type, // }) // 重置当前验证 - ruleFormRef.value?.validateField('minioFileName') + ruleFormRef.value?.clearValidate('minioFileName') ElMessage.success('文件上传成功') } }) @@ -184,7 +184,7 @@ - + @@ -203,7 +203,7 @@ - {{ fileTypeName }} + @@ -226,7 +226,7 @@ - {{ effectiveStatusName }} + @@ -311,4 +311,13 @@ .marg { margin-top: 20px; } + +.isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } +} diff --git a/src/views/measure/file/components/approve/templatePage.vue b/src/views/measure/file/components/approve/templatePage.vue index 9373e53..7b54fb0 100644 --- a/src/views/measure/file/components/approve/templatePage.vue +++ b/src/views/measure/file/components/approve/templatePage.vue @@ -268,7 +268,7 @@ - + diff --git a/src/views/measure/file/components/templatePage.vue b/src/views/measure/file/components/templatePage.vue index c4ebf51..71b5d8b 100644 --- a/src/views/measure/file/components/templatePage.vue +++ b/src/views/measure/file/components/templatePage.vue @@ -1,13 +1,13 @@ + diff --git a/src/views/measure/measureDept/components/addDialog.vue b/src/views/measure/measureDept/components/addDialog.vue new file mode 100644 index 0000000..c23b993 --- /dev/null +++ b/src/views/measure/measureDept/components/addDialog.vue @@ -0,0 +1,525 @@ + + + + + + diff --git a/src/views/measure/measureDept/components/rowAddDialog.vue b/src/views/measure/measureDept/components/rowAddDialog.vue new file mode 100644 index 0000000..547e11a --- /dev/null +++ b/src/views/measure/measureDept/components/rowAddDialog.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/views/measure/measureDept/components/templatePage.vue b/src/views/measure/measureDept/components/templatePage.vue new file mode 100644 index 0000000..d4f7b42 --- /dev/null +++ b/src/views/measure/measureDept/components/templatePage.vue @@ -0,0 +1,275 @@ + + + + + + diff --git a/src/views/measure/measureDept/gcz.vue b/src/views/measure/measureDept/gcz.vue index 8fa4904..9114f25 100644 --- a/src/views/measure/measureDept/gcz.vue +++ b/src/views/measure/measureDept/gcz.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/ks.vue b/src/views/measure/measureDept/ks.vue index 8c05053..c0dc1f5 100644 --- a/src/views/measure/measureDept/ks.vue +++ b/src/views/measure/measureDept/ks.vue @@ -1,3 +1,7 @@ + + diff --git a/src/views/measure/measureDept/measureDept-interface.ts b/src/views/measure/measureDept/measureDept-interface.ts new file mode 100644 index 0000000..dfdb50f --- /dev/null +++ b/src/views/measure/measureDept/measureDept-interface.ts @@ -0,0 +1,23 @@ +// 查询参数类型 +export interface searchQueryType { + organizeNo: string // 组织编号 + organizeName: string // 名称 + limit: number + offset: number + organizeType: string // 类型 + createTime: string // 创建时间 + director: string // 负责人 + meterMajor: string // 专业 + pDeptId: string // 所属科室 +} + +export interface columnType { + label: string + data: string +} +// 详情表格数据类型 +export interface detailType { + name: string + data: any[] + column: columnType[] +} diff --git a/src/views/measure/person/components/addPerson.vue b/src/views/measure/person/components/addPerson.vue index 4b52d2f..18f379d 100644 --- a/src/views/measure/person/components/addPerson.vue +++ b/src/views/measure/person/components/addPerson.vue @@ -9,8 +9,10 @@ import { getUserList } from '@/api/system/user' import { getDeptTreeList } from '@/api/system/dept' import { UploadFile } from '@/api/measure/file' +import { toTreeList } from '@/utils/structure' import type { userType } from '@/views/system/user/user-interface' import { getDictByCode } from '@/api/system/dict' +import comTreeSelect from '@/views/system/user/selecTree.vue' import { getStaffAdd, getStaffDetail, getStaffupdate } from '@/api/measure/person' const emits = defineEmits(['resetData']) const ruleFormRef = ref() // from组件 @@ -36,10 +38,37 @@ }) // 表单 const multipleTableRef = ref>() const title = ref('') -const rules = ref({ - // fileName: [{ required: true, message: '名称不能为空', trigger: 'blur' }], +// 身份证号码验证规则 +const validateIDcard = (rule: any, value: any, callback: any) => { + const rr = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[X])$)$/ + if (rr.test(value)) { + callback() + } + else { + callback(new Error('验证失败')) + } +} +const rules = ref({ + name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }], + minioFileName: [{ required: true, message: '头像不能为空', trigger: 'blur' }], + idCard: [{ required: true, message: '身份证号码不符合规范', trigger: 'blur', validator: validateIDcard }], + sex: [{ required: true, message: '性别不能为空', trigger: 'blur' }], + mainExaminer: [{ required: true, message: '请先选择', trigger: 'blur' }], + specialOperator: [{ required: true, message: '请先选择', trigger: 'blur' }], + technologyExam: [{ required: true, message: '请先选择', trigger: 'blur' }], + deptId: [{ required: true, message: '请先选择', trigger: 'blur' }], + major: [{ required: true, message: '请先输入', trigger: 'blur' }], }) // 表单验证规则 - +// 根据身份证得到生日 +const getBirthday = () => { + ruleFormRef.value?.validateField('idCard').then((res) => { + // 获取生日 + const IdCard = ruleForm.value.idCard + const birthday = `${IdCard.substring(6, 10)}-${IdCard.substring(10, 12)}-${IdCard.substring(12, 14)}` + ruleForm.value.birthday = birthday + console.log(ruleForm.value) + }) +} const dialogVisible = ref(false) // 弹窗显示 const userList = ref([]) // 可使用人列表 const getuser = () => { @@ -51,11 +80,15 @@ { name: '是', value: '0' }, { name: '否', value: '1' }, ]) -const PubList = ref([]) -// 获取发布单位列表 +const deptProps = reactive({ + parent: 'pid', value: 'id', label: 'name', children: 'children', +}) +const PubList = ref([]) +// 获取组织列表 const getPubList = () => { getDeptTreeList().then((res) => { - PubList.value = res.data + // 转成树结构 + PubList.value = toTreeList(res.data, '0', true) }) } const sexList = ref<{ id: string; value: string; name: string }[]>() @@ -72,6 +105,29 @@ educationList.value = response.data }) } +// 重置表单内容 +const resetFormData = () => { + ruleForm.value = { + name: '', // 姓名 + minioFileName: '', // 照片 + idCard: '', // 省份证号 + birthday: '', // 出生年月 + technologyJob: '', // 技术职务 + administrationJob: '', // 行政职务 + staffNo: '', // 人员编号 + sex: '', // 性别 + education: '', // 文化程度 + deptId: '', // 工作部门 科室 + major: '', // 计量专业 + workDate: '', // 从事日期 + mainExaminer: '', // 是否主考人 + specialOperator: '', // 是否特操人 + technologyExam: '', // 技术考核 + remark: '', // 备注 + certificateList: [], // 证书列表 + + } +} const technologyJobList = ref([]) // 获取技术职务列表 const getTechnologyJobList = () => { @@ -93,14 +149,15 @@ } // 保存选择人员信息 const confirmPerson = (row: userType) => { - console.log(row, '选择人员信息') ruleForm.value.name = row.name console.log(ruleForm.value) + ruleFormRef.value?.clearValidate('name') } // 上传请求 const uploadQuarterlyEvaluateFile = (file: File) => { UploadFile(file).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.value.minioFileName = res.data.fileId } }) @@ -210,6 +267,11 @@ type: 'warning', }, ).then(() => { + // for (const key in ruleForm.value) { + // if (ruleForm.value[key] === '') { + // ruleForm.value[key] = null + // } + // } (title.value === '新建' ? getStaffAdd : getStaffupdate) ({ ...ruleForm.value, certificateList: changeList.value[0].data }).then((res) => { @@ -217,6 +279,7 @@ formEl?.resetFields() ElMessage.success('提交成功') emits('resetData') + resetFormData() } }) }) @@ -228,13 +291,14 @@ formEl?.resetFields() changeList.value[0].data = [] emits('resetData') + resetFormData() } // 弹窗初始化 const initDialog = (row: any) => { - ruleFormRef.value?.resetFields() changeList.value[0].data = [] dialogVisible.value = true title.value = row.title + resetFormData() getuser() getPubList() getSexList() @@ -272,10 +336,10 @@ - + - + - + @@ -312,7 +376,7 @@ - + @@ -334,16 +398,15 @@ - + + + @@ -464,6 +527,15 @@ :deep(.el-radio__label) { display: none; } + + .isDetail { + ::v-deep { + .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label::before, + .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before { + display: none; + } + } + } } .marg { diff --git a/src/views/system/notice/noteAdd.vue b/src/views/system/notice/noteAdd.vue index e6e6204..2aaa7c5 100644 --- a/src/views/system/notice/noteAdd.vue +++ b/src/views/system/notice/noteAdd.vue @@ -19,7 +19,7 @@ noticeTitle: '', // 标题 }) // 表单 const rules = ref({ - noticeNo: [{ required: true, message: '通知公告编号不能为空', trigger: 'blur' }], + noticeTitle: [{ required: true, message: '标题不能为空', trigger: 'blur' }], noticeSketch: [{ required: true, message: '内容简述不能为空', trigger: 'blur' }], noticeContent: [{ required: true, message: '发布内容不能为空', trigger: 'blur' }], }) // 表单验证规则 @@ -97,7 +97,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -127,7 +127,7 @@ - + {{ ruleForm.minioFileName }} 上传 diff --git a/src/views/system/tool/autograph/addDDialog.vue b/src/views/system/tool/autograph/addDDialog.vue index 1c11e93..bb1db43 100644 --- a/src/views/system/tool/autograph/addDDialog.vue +++ b/src/views/system/tool/autograph/addDDialog.vue @@ -135,6 +135,7 @@ fd.append('multipartFile', event.target.files[0]) uploadApi(fd).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.minioFileName = res.data[0] ElMessage.success('上传成功') } @@ -150,12 +151,12 @@ - + diff --git a/src/views/system/tool/certificate/addDDialog.vue b/src/views/system/tool/certificate/addDDialog.vue index 43df934..304885c 100644 --- a/src/views/system/tool/certificate/addDDialog.vue +++ b/src/views/system/tool/certificate/addDDialog.vue @@ -135,6 +135,7 @@ fd.append('multipartFile', event.target.files[0]) uploadApi(fd).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.minioFileName = res.data[0] ElMessage.success('上传成功') } @@ -150,12 +151,12 @@ - + diff --git a/src/views/system/tool/document/addDDialog.vue b/src/views/system/tool/document/addDDialog.vue index 43df934..304885c 100644 --- a/src/views/system/tool/document/addDDialog.vue +++ b/src/views/system/tool/document/addDDialog.vue @@ -135,6 +135,7 @@ fd.append('multipartFile', event.target.files[0]) uploadApi(fd).then((res) => { if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') ruleForm.minioFileName = res.data[0] ElMessage.success('上传成功') } @@ -150,12 +151,12 @@ - + diff --git a/src/views/system/tool/signature/addDDialog.vue b/src/views/system/tool/signature/addDDialog.vue index f9a49e2..4f1305e 100644 --- a/src/views/system/tool/signature/addDDialog.vue +++ b/src/views/system/tool/signature/addDDialog.vue @@ -40,6 +40,7 @@ // 弹窗初始化 const initDialog = (row: signType) => { title.value = row.title as string + console.log(title.value, 'title') ruleForm.signNo = '' ruleForm.signName = '' ruleForm.createTime = '' @@ -128,21 +129,19 @@ const fileRef = ref() // 文件上传input const onFileChange = (event: any) => { // 原生上传 - // console.log(event.target.files) - if (event.target.files?.length !== 0) { - // 创建formdata对象 - const fd = new FormData() - fd.append('multipartFile', event.target.files[0]) - uploadApi(fd).then((res) => { - if (res.code === 200) { - ruleForm.minioFileName = res.data[0] - ElMessage.success('上传成功') - } - else { - ElMessage.error(res.message) - } - }) - } + // 创建formdata对象 + const fd = new FormData() + fd.append('multipartFile', event.target.files[0]) + uploadApi(fd).then((res) => { + if (res.code === 200) { + ruleFormRef.value?.clearValidate('minioFileName') + ruleForm.minioFileName = res.data[0] + ElMessage.success('上传成功') + } + else { + ElMessage.error(res.message) + } + }) } const upload = () => { fileRef.value.click() @@ -150,12 +149,12 @@ - + diff --git a/src/views/system/user/listUser.vue b/src/views/system/user/listUser.vue index 7905ce2..1387821 100644 --- a/src/views/system/user/listUser.vue +++ b/src/views/system/user/listUser.vue @@ -299,7 +299,7 @@