diff --git a/.env.development b/.env.development index 2b60cdc..339c4ab 100644 --- a/.env.development +++ b/.env.development @@ -8,7 +8,7 @@ VITE_APP_ENV = 'development' VITE_APP_BASE_API = 'http://192.168.110.209:8899' # VITE_APP_BASE_API = 'http://58.17.134.85:8899' # GO开发环境 -VITE_APP_BASE_API_GO = 'http://58.17.134.85:8919' +VITE_APP_BASE_API_GO = 'http://192.168.110.188:8919' # 无人机接口地址 diff --git a/package.json b/package.json index 58746c4..a4b6e79 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "echarts-gl": "^2.0.9", "element-plus": "2.8.8", "esbuild": "^0.25.0", + "exceljs": "^4.4.0", "ezuikit-js": "^8.1.10", "file-saver": "^2.0.5", "fuse.js": "7.0.0", diff --git a/src/api/login.ts b/src/api/login.ts index 6620fb1..8ef5161 100644 --- a/src/api/login.ts +++ b/src/api/login.ts @@ -131,6 +131,8 @@ export function getGoToken(): AxiosPromise { verifyCode: '1111', username: 'admin', password: 'zmkg@2023A' + // username: 'admin1', + // password: 'zmkg@2023C' } }); } diff --git a/src/api/other/ys7DeviceImg/index.ts b/src/api/other/ys7DeviceImg/index.ts index 080f6f1..35288a9 100644 --- a/src/api/other/ys7DeviceImg/index.ts +++ b/src/api/other/ys7DeviceImg/index.ts @@ -57,8 +57,9 @@ export const updateYs7DeviceImg = (data: Ys7DeviceImgForm) => { * @param id */ export const delYs7DeviceImg = (id: string | number | Array) => { - return request({ - url: '/other/ys7DeviceImg/' + id, - method: 'delete' + return request1({ + url: '/zm/api/v1/system/ys7DevicesImg/delete', + method: 'delete', + data: { ids: id } }); }; diff --git a/src/api/project/attendance/index.ts b/src/api/project/attendance/index.ts index 87866a6..0f09869 100644 --- a/src/api/project/attendance/index.ts +++ b/src/api/project/attendance/index.ts @@ -9,6 +9,7 @@ import { AttendanceMonthVO, AttendanceMonthQuery } from '@/api/project/attendance/types'; +import requestGo from '@/utils/request-go'; /** * 查询考勤列表 @@ -45,8 +46,8 @@ export const listAttendanceTwoWeek = (query?: AttendanceTwoWeekQuery): AxiosProm */ export const listAttendanceMonth = (query?: AttendanceMonthQuery): AxiosPromise => { - return request({ - url: '/project/attendance/list/month/byUserId', + return requestGo({ + url: '/zm/api/v1/system/busConstructionUser/pcQueryBasedOnOpenid', method: 'get', params: query }); diff --git a/src/api/project/constructionBlacklist/index.ts b/src/api/project/constructionBlacklist/index.ts index 3407e0d..c19967d 100644 --- a/src/api/project/constructionBlacklist/index.ts +++ b/src/api/project/constructionBlacklist/index.ts @@ -1,6 +1,7 @@ import request from '@/utils/request'; import { AxiosPromise } from 'axios'; import { ConstructionBlacklistVO, ConstructionBlacklistForm, ConstructionBlacklistQuery } from '@/api/project/constructionBlacklist/types'; +import requestGo from '@/utils/request-go'; /** * 查询黑名单列表 @@ -32,8 +33,8 @@ export const getConstructionBlacklist = (id: string | number): AxiosPromise { - return request({ - url: '/project/constructionBlacklist', + return requestGo({ + url: '/zm/api/v1/system/busConstructionBlacklist/add', method: 'post', data: data }); @@ -56,8 +57,11 @@ export const updateConstructionBlacklist = (data: ConstructionBlacklistForm) => * @param id */ export const delConstructionBlacklist = (id: string | number | Array) => { - return request({ - url: '/project/constructionBlacklist/' + id, - method: 'delete' + return requestGo({ + url: '/zm/api/v1/system/busConstructionBlacklist/delete', + method: 'delete', + data: { + openids: id + } }); }; diff --git a/src/api/project/constructionUser/index.ts b/src/api/project/constructionUser/index.ts index f0ca083..f2661a0 100644 --- a/src/api/project/constructionUser/index.ts +++ b/src/api/project/constructionUser/index.ts @@ -14,6 +14,7 @@ import { ConstructionMonthQuery } from '@/api/project/constructionUser/types'; import { AttendanceMonthVO } from '../attendance/types'; +import requestGo from '@/utils/request-go'; /** * 查询施工人员月份考勤列表 @@ -23,7 +24,7 @@ import { AttendanceMonthVO } from '../attendance/types'; export const listConstructionMonth = (query?: ConstructionMonthQuery): AxiosPromise => { return request({ - url: '/contractor/constructionUser/list/attendance/month', + url: '/zm/api/wxApplet/wxApplet/busAttendance/byOpenId', method: 'get', params: query }); @@ -35,8 +36,22 @@ export const listConstructionMonth = (query?: ConstructionMonthQuery): AxiosProm */ export const listConstructionUser = (query?: ConstructionUserQuery): AxiosPromise => { - return request({ - url: '/contractor/constructionUser/list', + return requestGo({ + url: '/zm/api/wxApplet/wxApplet/busConstructionUser/personnelInquiry', + method: 'get', + params: query + }); +}; + +/** + * 查询施工人员列表 + * @param query + * @returns {*} + */ + +export const listConstructionUserInTeam = (query?: ConstructionUserQuery): AxiosPromise => { + return requestGo({ + url: '/zm/api/wxApplet/wxApplet/busConstructionUser/list', method: 'get', params: query }); @@ -48,7 +63,7 @@ export const listConstructionUser = (query?: ConstructionUserQuery): AxiosPromis */ export const getConstructionUser = (id: string | number): AxiosPromise => { return request({ - url: '/contractor/constructionUser/' + id, + url: '/zm/api/wxApplet/wxApplet/busConstructionUser/getDetails?id=' + id, method: 'get' }); }; @@ -59,7 +74,7 @@ export const getConstructionUser = (id: string | number): AxiosPromise { return request({ - url: '/contractor/constructionUser/change/project', + url: '/zm/api/wxApplet/wxApplet/busConstructionUser/changePay', method: 'put', data: data }); @@ -70,7 +85,7 @@ export const transferConstructionUser = (data: skipType) => { */ export const getProjectContractorList = () => { return request({ - url: '/project/project/list/project/contractorList', + url: '/zm/api/v1/system/sysProject/list?pageNum=1&pageSize=1000', method: 'get' }); }; @@ -81,7 +96,7 @@ export const getProjectContractorList = () => { */ export const addConstructionUser = (data: ConstructionUserForm): AxiosPromise => { return request({ - url: '/contractor/constructionUser', + url: '/zm/api/wxApplet/wxApplet/busConstructionUser/add', method: 'post', data: data }); @@ -93,7 +108,7 @@ export const addConstructionUser = (data: ConstructionUserForm): AxiosPromise { return request({ - url: '/contractor/constructionUser', + url: '/zm/api/v1/system/busConstructionUser/pcEdit', method: 'put', data: data }); @@ -103,10 +118,11 @@ export const updateConstructionUser = (data: ConstructionUserForm) => { * 删除施工人员 * @param id */ -export const delConstructionUser = (id: string | number | Array) => { +export const delConstructionUser = (data) => { return request({ - url: '/contractor/constructionUser/' + id, - method: 'delete' + url: '/zm/api/wxApplet/wxApplet/busConstructionUser/delete', + method: 'delete', + data }); }; @@ -116,8 +132,8 @@ export const delConstructionUser = (id: string | number | Array */ export const updateConstructionUserStatus = (data: ConstructionUserStatusForm) => { return request({ - url: '/contractor/constructionUser/batch/status', - method: 'put', + url: '/zm/api/wxApplet/wxApplet/busConstructionUser/changeState', + method: 'delete', data: data }); }; @@ -128,7 +144,7 @@ export const updateConstructionUserStatus = (data: ConstructionUserStatusForm) = */ export const updateConstructionUserPlayCardStatus = (data: ConstructionUserPlayCardForm) => { return request({ - url: '/contractor/constructionUser/batch/clock', + url: '/zm/api/v1/system/busConstructionUser/oneClickOpen', method: 'put', data: data }); @@ -140,7 +156,7 @@ export const updateConstructionUserPlayCardStatus = (data: ConstructionUserPlayC */ export const updateConstructionUserPlayCardOneStatus = (data: ConstructionUserPlayCardForm) => { return request({ - url: '/contractor/constructionUser/clock', + url: '/zm/api/v1/system/busConstructionUser/clockingCondition', method: 'put', data: data }); @@ -152,7 +168,7 @@ export const updateConstructionUserPlayCardOneStatus = (data: ConstructionUserPl */ export const updateConstructionUserSalary = (data: ConstructionUserSalaryForm) => { return request({ - url: '/contractor/constructionUser/salary', + url: '/zm/api/wxApplet/wxApplet/busConstructionUser/payEdit', method: 'put', data: data }); @@ -164,9 +180,9 @@ export const updateConstructionUserSalary = (data: ConstructionUserSalaryForm) = */ export const getConstructionUserExit = (query: ConstructionUserExitForm) => { return request({ - url: '/contractor/constructionUserExit/list', - method: 'get', - params: query + url: '/zm/api/v1/system/busConstructionUser/departureRecord', + method: 'post', + data: query }); }; @@ -175,10 +191,17 @@ export const getConstructionUserExit = (query: ConstructionUserExitForm) => { * @param query */ export const dowloadConstructionUserTemplate = (query: ConstructionUserTemplateForm) => { - let { projectId } = query; - const fileName = projectId + '_project.zip'; - return request.download('/contractor/constructionUserFile/exportFileTemplate', query, fileName); + return request({ + url: '/zm/api/v1/system/busConstructionUser/templateExport', + method: 'get', + params: query + }); }; +// export const dowloadConstructionUserTemplate = (query: ConstructionUserTemplateForm) => { +// let { projectId } = query; +// const fileName = projectId + '_project.zip'; +// return request.download('/zm/api/v1/system/busConstructionUser/templateExport', query, fileName, 'get'); +// }; /** * 施工人员退场 diff --git a/src/api/project/constructionUserFile/index.ts b/src/api/project/constructionUserFile/index.ts index e24dc8a..08e9a6d 100644 --- a/src/api/project/constructionUserFile/index.ts +++ b/src/api/project/constructionUserFile/index.ts @@ -1,6 +1,7 @@ import request from '@/utils/request'; import { AxiosPromise } from 'axios'; import { ConstructionUserFileVO, ConstructionUserFileForm, ConstructionUserFileQuery } from '@/api/project/constructionUserFile/types'; +import requestGo from '@/utils/request-go'; /** * 查询施工人员文件存储列表 @@ -9,8 +10,8 @@ import { ConstructionUserFileVO, ConstructionUserFileForm, ConstructionUserFileQ */ export const listConstructionUserFile = (query?: ConstructionUserFileQuery): AxiosPromise => { - return request({ - url: '/contractor/constructionUserFile/list', + return requestGo({ + url: '/zm/api/wxApplet/wxApplet/busConstructionUser/get', method: 'get', params: query }); diff --git a/src/api/project/contractor/index.ts b/src/api/project/contractor/index.ts index e63b992..e3c9cac 100644 --- a/src/api/project/contractor/index.ts +++ b/src/api/project/contractor/index.ts @@ -1,6 +1,7 @@ import request from '@/utils/request'; import { AxiosPromise } from 'axios'; import { ContractorForm, ContractorQuery, ContractorVO } from '@/api/project/contractor/types'; +import requestGo from '@/utils/request-go'; /** * 查询分包单位列表 @@ -9,8 +10,8 @@ import { ContractorForm, ContractorQuery, ContractorVO } from '@/api/project/con */ export const listContractor = (query?: ContractorQuery): AxiosPromise => { - return request({ - url: '/contractor/contractor/list', + return requestGo({ + url: '/zm/api/wxApplet/wxApplet/busLabourservice/list', method: 'get', params: query }); @@ -21,8 +22,8 @@ export const listContractor = (query?: ContractorQuery): AxiosPromise => { - return request({ - url: '/contractor/contractor/' + id, + return requestGo({ + url: '/zm/api/wxApplet/wxApplet/busLabourservice/get?id=' + id, method: 'get' }); }; @@ -32,8 +33,8 @@ export const getContractor = (id: string | number): AxiosPromise = * @param data */ export const addContractor = (data: ContractorForm): AxiosPromise => { - return request({ - url: '/contractor/contractor', + return requestGo({ + url: '/zm/api/wxApplet/wxApplet/busLabourservice/add', method: 'post', data: data }); @@ -44,8 +45,8 @@ export const addContractor = (data: ContractorForm): AxiosPromise { - return request({ - url: '/contractor/contractor', + return requestGo({ + url: '/zm/api/wxApplet/wxApplet/busLabourservice/edit', method: 'put', data: data }); @@ -56,8 +57,11 @@ export const updateContractor = (data: ContractorForm) => { * @param id */ export const delContractor = (id: string | number | Array) => { - return request({ - url: '/contractor/contractor/' + id, - method: 'delete' + return requestGo({ + url: '/zm/api/wxApplet/wxApplet/busLabourservice/delete', + method: 'delete', + data: { + ids: id + } }); }; diff --git a/src/api/project/projectTeamMember/index.ts b/src/api/project/projectTeamMember/index.ts index f2658bd..98d19bd 100644 --- a/src/api/project/projectTeamMember/index.ts +++ b/src/api/project/projectTeamMember/index.ts @@ -60,6 +60,6 @@ export const delProjectTeamMember = (id: string | number | Array => { return request({ - url: '/project/workWage/list', + url: '/zm/api/v1/system/busTypeOfWage/list', method: 'get', params: query }); @@ -22,7 +22,7 @@ export const listWorkWage = (query?: WorkWageQuery): AxiosPromise */ export const getWorkWage = (id: string | number): AxiosPromise => { return request({ - url: '/project/workWage/' + id, + url: '/zm/api/v1/system/busTypeOfWage/get?id=' + id, method: 'get' }); }; @@ -33,7 +33,7 @@ export const getWorkWage = (id: string | number): AxiosPromise => { */ export const addWorkWage = (data: WorkWageForm) => { return request({ - url: '/project/workWage', + url: '/zm/api/v1/system/busTypeOfWage/add', method: 'post', data: data }); @@ -45,7 +45,7 @@ export const addWorkWage = (data: WorkWageForm) => { */ export const updateWorkWage = (data: WorkWageForm) => { return request({ - url: '/project/workWage', + url: '/zm/api/v1/system/busTypeOfWage/edit', method: 'put', data: data }); @@ -57,7 +57,20 @@ export const updateWorkWage = (data: WorkWageForm) => { */ export const delWorkWage = (id: string | number | Array) => { return request({ - url: '/project/workWage/' + id, - method: 'delete' + url: '/zm/api/v1/system/busTypeOfWage/delete', + method: 'delete', + data: { + ids: id + } + }); +}; + +/** + * 查询工种类型 + */ +export const getTypeOfWork = () => { + return request({ + url: '/zm/api/v1/system/dict/data/getDictData?dictType=type_of_work', + method: 'get' }); }; diff --git a/src/api/quality/documentQualityMeeting/index.ts b/src/api/quality/documentQualityMeeting/index.ts new file mode 100644 index 0000000..5b6e81b --- /dev/null +++ b/src/api/quality/documentQualityMeeting/index.ts @@ -0,0 +1,89 @@ +import request from '@/utils/request-go'; +// 查询质量会议树形结构 +export function documentQualityMeetingTreeStructure(query: object) { + return request({ + url: '/zm/api/v1/system/documentQualityMeeting/qualityTreeStructure', + method: 'get', + params: query + }); +} +// 查询质量会议文件列表 +export function documentQualityMeetingList(query: object) { + return request({ + url: '/zm/api/v1/system/documentQualityMeeting/list', + method: 'get', + params: query + }); +} +// 质量会议添加 +export function documentQualityMeetingAdd(data: object) { + return request({ + url: '/zm/api/v1/system/documentQualityMeeting/add', + method: 'post', + data + }); +} +// 质量会议修改文件名 +export function documentQualityMeetingEdit(query: object) { + return request({ + url: '/zm/api/v1/system/documentQualityMeeting/edit', + method: 'put', + params: query + }); +} +// 质量会议删除文件 +export function documentQualityMeetingDelete(query: object) { + return request({ + url: '/zm/api/v1/system/documentQualityMeeting/delete', + method: 'delete', + params: query + }); +} +// 质量会议获取指定id信息 +export function documentProductionDrawingGet(query: object) { + return request({ + url: '/zm/api/v1/system/documentProductionDrawing/get', + method: 'get', + params: query + }); +} +// 新建文件夹 +export function documentQualityMeetingNewFolder(data: object) { + return request({ + url: '/zm/api/v1/system/documentQualityMeeting/qualityNewFolderData', + method: 'post', + data + }); +} +// 单文件下载 +export function documentQualityMeetingDownload(query: object) { + return request({ + url: '/zm/api/v1/system/documentQualityMeeting/qualityDataUniFileDownload', + method: 'get', + params: query + }); +} +// 获取pid +export function getSelectByPid(query: object) { + return request({ + url: '/zm/api/v1/system/documentQualityMeeting/qualitySelectByPid', + method: 'get', + params: query + }); +} +// 回收站恢复 +export function qualityDataRecyclingStation(data: object) { + return request({ + url: '/zm/api/v1/system/documentQualityMeeting/qualityDataRecyclingStation', + method: 'put', + data + }); +} +// 回收站列表数据 +export function qualityRecycleBinList(query: object) { + return request({ + url: '/zm/api/v1/system/documentQualityMeeting/qualityRecycleBinList', + method: 'get', + params: query + }); +} diff --git a/src/api/quality/onlineListquality/Online.ts b/src/api/quality/onlineListquality/Online.ts new file mode 100644 index 0000000..d9db454 --- /dev/null +++ b/src/api/quality/onlineListquality/Online.ts @@ -0,0 +1,92 @@ +import request from '@/utils/request-go'; +// 在线word编辑接口 +// 获取目录 树形数据 +export function treeStructureList(query: object) { + return request({ + url: '/zm/api/v1/system/document/treeStructure', + method: 'get', + params: query + }); +} +// 根据目录信息获取文档 +export function documentList(query: object) { + return request({ + url: '/zm/api/v1/system/document/list', + method: 'get', + params: query + }); +} +// 修改母板名称 +export function documentEdit(data: object) { + return request({ + url: '/zm/api/v1/system/document/edit', + method: 'put', + data + }); +} +// 获取模板list +export function documentAllList(query) { + return request({ + url: '/zm/api/v1/system/document/allList', + method: 'get', + params: query + }); +} + +// 删除母板 +export function documentDelete(ids: any) { + return request({ + url: '/zm/api/v1/system/document/delete', + method: 'delete', + params: { + ids + } + }); +} +// 新增母板 +export function documentAdd(data: object) { + return request({ + url: '/zm/api/v1/system/document/add', + method: 'post', + data: data + }); +} +// 新建文件夹 +export function documentNewFolder(data: object) { + return request({ + url: '/zm/api/v1/system/document/newFolder', + method: 'post', + data: data + }); +} +// 下载文件夹 - 模板 +export function compressedDownload(relativePath) { + return request({ + url: '/zm/api/v1/system/document/compressedDownload', + method: 'get', + params: { + relativePath + } + }); +} +// 下载文件夹 - 资料 +export function uniFolderDownload(relativePath) { + return request({ + url: '/zm/api/v1/system/documentData/dataCompressedDownload', + method: 'get', + params: { + relativePath + } + }); +} +// 下载文件 - 资料 +export function uniFileDownload(relativePath) { + return request({ + url: '/zm/api/v1/system/documentData/uniFileDownload', + method: 'get', + responseType: 'blob', + params: { + relativePath + } + }); +} diff --git a/src/api/quality/onlineListquality/profile.ts b/src/api/quality/onlineListquality/profile.ts new file mode 100644 index 0000000..b1c50af --- /dev/null +++ b/src/api/quality/onlineListquality/profile.ts @@ -0,0 +1,100 @@ +import request from '@/utils/request-go'; +// 工程资料模块 +//添加工程资料 +export function templateDataAdd(data: object) { + return request({ + url: '/zm/api/v1/system/templateData/add', + method: 'post', + data + }); +} +// 获取工程列表 +export function templateDataList(query: object) { + return request({ + url: '/zm/api/v1/system/templateData/list', + method: 'get', + params: query + }); +} + +// 删除工程资料 +export function templateDataDel(query: object) { + return request({ + url: '/zm/api/v1/system/templateData/delete', + method: 'delete', + params: query + }); +} +// 修改工程资料 +export function templateDataEdit(data: object) { + return request({ + url: '/zm/api/v1/system/templateData/edit', + method: 'put', + data + }); +} +// 工程资料下级模板接口 +// 添加 +export function templateDataJuniorAdd(data: object) { + return request({ + url: '/zm/api/v1/system/templateDataJunior/add', + method: 'post', + data + }); +} +// 删除 +export function templateDataJuniorDel(query: object) { + return request({ + url: '/zm/api/v1/system/templateDataJunior/delete', + method: 'delete', + params: query + }); +} +// 修改 +export function templateDataJuniorEdit(data: object) { + return request({ + url: '/zm/api/v1/system/templateDataJunior/edit', + method: 'put', + data + }); +} +// 列表 +export function templateDataJuniorList(query: object) { + return request({ + url: '/zm/api/v1/system/templateDataJunior/list', + method: 'get', + params: query + }); +} +// 获取源数据 +export function templateDataSourceDataList(query: object) { + return request({ + url: '/zm/api/v1/system/templateDataSourceData/list', + method: 'get', + params: query + }); +} +// 添加数据源 +export function templateDataSourceDataAdd(query: object) { + return request({ + url: '/zm/api/v1/system/templateDataSourceData/add', + method: 'get', + params: query + }); +} +// 修改数据源 +export function templateDataSourceDataEdit(query: object) { + return request({ + url: '/zm/api/v1/system/templateDataSourceData/edit', + method: 'get', + params: query + }); +} +// 删除数据源 +export function templateDataSourceDataDel(query: object) { + return request({ + url: '/zm/api/v1/system/templateDataSourceData/delete', + method: 'get', + params: query + }); +} diff --git a/src/api/quality/onlineListquality/profileData.ts b/src/api/quality/onlineListquality/profileData.ts new file mode 100644 index 0000000..d1af756 --- /dev/null +++ b/src/api/quality/onlineListquality/profileData.ts @@ -0,0 +1,129 @@ +import request from '@/utils/request-go'; +// 工程资料模块 +//工程列表 +export function documentDataList(query: object) { + return request({ + url: '/zm/api/v1/system/documentData/list', + method: 'get', + params: query + }); +} +//工程列表(无分页) +export function documentDataListUnPage(query: object) { + return request({ + url: '/zm/api/v1/system/documentData/sonFile', + method: 'get', + params: query + }); +} +// 添加工程资料 +export function documentDataAdd(data: object) { + return request({ + url: '/zm/api/v1/system/documentData/add', + method: 'post', + data + }); +} +// 新建文件夹 +export function documentDataNewFolder(data: object) { + return request({ + url: '/zm/api/v1/system/documentData/newFolder', + method: 'post', + data + }); +} +// 删除工程资料 +export function documentDataDelete(query: object) { + return request({ + url: '/zm/api/v1/system/documentData/delete', + method: 'delete', + params: { + ids: query + } + }); +} +// 修改工程资料 +export function documentDataEdit(data: object) { + return request({ + url: '/zm/api/v1/system/documentData/edit', + method: 'put', + data + }); +} +// 获取资料树形结构 +export function treeStructureData(query: object) { + return request({ + url: '/zm/api/v1/system/documentData/treeStructureData', + method: 'get', + params: query + }); +} + +// 复制模板 +export function onlineImport(data: object) { + return request({ + url: '/zm/api/v1/system/documentData/onlineImport', + method: 'put', + data + }); +} +// 工程资料列表数据 +export function documentDataAllList(query) { + return request({ + url: '/zm/api/v1/system/documentData/allList', + method: 'get', + params: query + }); +} +// 文件拖动 +export function onlineMobile(data) { + return request({ + url: '/zm/api/v1/system/documentData/onlineMobile', + method: 'put', + data + }); +} + +// 回收站文件删除或恢复 资料部分 +export function dataRecyclingStation(data) { + return request({ + url: '/zm/api/v1/system/documentData/dataRecyclingStation', + method: 'put', + data + }); +} +// 回收站文件删除或恢复 模板部分 +export function templateRecycleBin(data) { + return request({ + url: '/zm/api/v1/system/documentData/templateRecycleBin', + method: 'put', + data + }); +} +//资料文件模糊查询(查询资料里面的所有文件,限制文件为ppt、excel、word) +export function dataFileQuery(query) { + return request({ + url: '/zm/api/v1/system/documentData/dataFileQuery', + method: 'get', + params: query + }); +} +// 资料-查看-获取详细信息 +export function getProfileDetail(id) { + return request({ + url: '/zm/api/v1/system/documentData/get', + method: 'get', + params: { + id + } + }); +} + +// 查询项目列表 所有项目 无用户限制 +export function listSysProjectAll(query: object) { + return request({ + url: '/zm/api/v1/system/sysProject/listAll', + method: 'get', + params: query + }); +} diff --git a/src/api/quality/qualityConstructionLog/index.ts b/src/api/quality/qualityConstructionLog/index.ts index 82dd839..d823a1a 100644 --- a/src/api/quality/qualityConstructionLog/index.ts +++ b/src/api/quality/qualityConstructionLog/index.ts @@ -58,7 +58,8 @@ export const updateQualityConstructionLog = (data: QualityConstructionLogForm) = */ export const delQualityConstructionLog = (id: string | number | Array) => { return request({ - url: '/quality/qualityConstructionLog/' + id, - method: 'delete' + url: '/zm/api/v1/system/busConstructionLog/delete', + method: 'delete', + data: { ids: id } }); }; diff --git a/src/api/quality/qualityInspection/index.ts b/src/api/quality/qualityInspection/index.ts index 5c1219e..9f90b21 100644 --- a/src/api/quality/qualityInspection/index.ts +++ b/src/api/quality/qualityInspection/index.ts @@ -46,7 +46,7 @@ export const addQualityInspection = (data: QualityInspectionForm) => { */ export const updateQualityInspection = (data: QualityInspectionForm) => { return request({ - url: '/quality/qualityInspection', + url: '/zm/api/v1/system/busInspectionTicket/editVerification', method: 'put', data: data }); @@ -58,8 +58,11 @@ export const updateQualityInspection = (data: QualityInspectionForm) => { */ export const delQualityInspection = (id: string | number | Array) => { return request({ - url: '/quality/qualityInspection/' + id, - method: 'delete' + url: '/zm/api/v1/system/busInspectionTicket/delete', + method: 'delete', + data: { + ids: id + } }); }; @@ -67,3 +70,20 @@ export const delQualityInspection = (id: string | number | Array }, url: string, fileName: string) { return request.download(url, ossId, fileName); } + +// 查询项目下的所有人员 +export function acquisitionOfCorrectivePersonnel(projectId: string | number) { + return request({ + url: '/zm/api/v1/system/busInspectionTicket/acquisitionOfCorrectivePersonnel?projectId=' + projectId, + method: 'get' + }); +} + +// 编辑校验 +export function editVerification(data: any) { + return request({ + url: '/zm/api/v1/system/busInspectionTicket/editVerification', + method: 'post', + data: data + }); +} diff --git a/src/api/safety/documentSafetyMeeting/index.ts b/src/api/safety/documentSafetyMeeting/index.ts index 8ed5baf..2ee143d 100644 --- a/src/api/safety/documentSafetyMeeting/index.ts +++ b/src/api/safety/documentSafetyMeeting/index.ts @@ -1,33 +1,24 @@ -import request from '@/utils/request'; -import { - documentSafetyMeetingListFile, - documentSafetyMeetingListFolder, - documentSafetyMeetingListQuery, - documentSafetyMeetingListVo, - documentRecycleBinListQuery, - documentRecycleBinListVO -} from './type'; -import { AxiosPromise } from 'axios'; +import request from '@/utils/request-go'; // 查询安全会议结构 export function documentCompletionTreeStructure(query: object) { return request({ - url: '/safety/documentSafetyMeeting/list', + url: '/zm/api/v1/system/documentSafetyMeeting/safetyTreeStructure', method: 'get', params: query }); } // 查询安全会议文件列表 -export function documentCompletionList(query: documentSafetyMeetingListQuery): AxiosPromise { +export function documentCompletionList(query: object) { return request({ - url: '/safety/documentSafetyMeeting/list', + url: '/zm/api/v1/system/documentSafetyMeeting/list', method: 'get', params: query }); } // 安全会议添加 -export function documentCompletionAdd(data: documentSafetyMeetingListFile) { +export function documentCompletionAdd(data: object) { return request({ - url: '/safety/documentSafetyMeeting/file', + url: '/zm/api/v1/system/documentSafetyMeeting/add', method: 'post', data }); @@ -35,29 +26,31 @@ export function documentCompletionAdd(data: documentSafetyMeetingListFile) { // 安全会议修改文件名 export function documentCompletionEdit(query: object) { return request({ - url: '/api/v1/system/documentSafetyMeeting/edit', + url: '/zm/api/v1/system/documentSafetyMeeting/edit', method: 'put', params: query }); } // 安全会议删除文件 -export function documentCompletionDelete(id: string) { +export function documentCompletionDelete(query: object) { return request({ - url: '/safety/documentSafetyMeeting/' + id, - method: 'delete' + url: '/zm/api/v1/system/documentSafetyMeeting/delete', + method: 'delete', + params: query }); } // 安全会议获取指定id信息 -export function documentCompletionGet(id: string) { +export function documentCompletionGet(query: object) { return request({ - url: '/safety/documentSafetyMeeting/' + id, - method: 'get' + url: '/zm/api/v1/system/documentSafetyMeeting/get', + method: 'get', + params: query }); } // 新建文件夹 -export function newFolder(data: documentSafetyMeetingListFolder): AxiosPromise { +export function newFolder(data: object) { return request({ - url: '/safety/documentSafetyMeeting/folder', + url: '/zm/api/v1/system/documentSafetyMeeting/safetyNewFolderData', method: 'post', data }); @@ -65,23 +58,24 @@ export function newFolder(data: documentSafetyMeetingListFolder): AxiosPromise { +export function documentRecycleBinList(query: object) { return request({ - url: '/safety/documentSafetyMeeting/recycleBin/list', + url: '/zm/api/v1/system/documentSafetyMeeting/safetyRecycleBinList', method: 'get', - params: { ...query, fileType: '2' } + params: query }); } diff --git a/src/api/safety/recognizeRecord/index.ts b/src/api/safety/recognizeRecord/index.ts index 365bae4..c3782ec 100644 --- a/src/api/safety/recognizeRecord/index.ts +++ b/src/api/safety/recognizeRecord/index.ts @@ -57,8 +57,9 @@ export const updateRecognizeRecord = (data: RecognizeRecordForm) => { * @param id */ export const delRecognizeRecord = (id: string | number | Array) => { - return request({ - url: '/safety/recognizeRecord/' + id, - method: 'delete' + return request1({ + url: '/zm/api/v1/system/busTour/delete', + method: 'delete', + data: { ids: id } }); }; diff --git a/src/api/safety/safetyInspection/index.ts b/src/api/safety/safetyInspection/index.ts index 00b4594..a731d05 100644 --- a/src/api/safety/safetyInspection/index.ts +++ b/src/api/safety/safetyInspection/index.ts @@ -58,8 +58,9 @@ export const updateSafetyInspection = (data: SafetyInspectionForm) => { * @param id */ export const delSafetyInspection = (id: string | number | Array) => { - return request({ - url: '/safety/safetyInspection/' + id, - method: 'delete' + return request1({ + url: '/zm/api/v1/system/busHseManagement/delete', + method: 'delete', + data: { ids: id } }); }; diff --git a/src/api/safety/safetyLog/index.ts b/src/api/safety/safetyLog/index.ts index 3389bd0..72385c2 100644 --- a/src/api/safety/safetyLog/index.ts +++ b/src/api/safety/safetyLog/index.ts @@ -1,6 +1,7 @@ import request from '@/utils/request'; import { AxiosPromise } from 'axios'; import { SafetyLogForm, SafetyLogQuery, SafetyLogVO } from '@/api/safety/safetyLog/types'; +import requestGo from '@/utils/request-go'; /** * 查询安全日志列表 @@ -21,8 +22,8 @@ export const listSafetyLog = (query?: SafetyLogQuery): AxiosPromise => { - return request({ - url: '/safety/safetyLog/' + id, + return requestGo({ + url: '/zm/api/v1/system/busHseSecurityLog/get?id=' + id, method: 'get' }); }; @@ -32,8 +33,8 @@ export const getSafetyLog = (id: string | number): AxiosPromise => * @param data */ export const addSafetyLog = (data: SafetyLogForm) => { - return request({ - url: '/safety/safetyLog', + return requestGo({ + url: '/zm/api/v1/system/busHseSecurityLog/addText', method: 'post', data: data }); @@ -56,8 +57,9 @@ export const updateSafetyLog = (data: SafetyLogForm) => { * @param id */ export const delSafetyLog = (id: string | number | Array) => { - return request({ - url: '/safety/safetyLog/' + id, - method: 'delete' + return requestGo({ + url: '/zm/api/v1/system/busHseSecurityLog/delete', + method: 'delete', + data: { ids: id } }); }; diff --git a/src/api/safety/safetyWeeklyReport/index.ts b/src/api/safety/safetyWeeklyReport/index.ts index c3717ff..f0e9c00 100644 --- a/src/api/safety/safetyWeeklyReport/index.ts +++ b/src/api/safety/safetyWeeklyReport/index.ts @@ -1,4 +1,4 @@ -import request from '@/utils/request'; +import request from '@/utils/request-go'; import { AxiosPromise } from 'axios'; import { SafetyWeeklyReportForm, SafetyWeeklyReportQuery, SafetyWeeklyReportVO } from '@/api/safety/safetyWeeklyReport/types'; @@ -10,7 +10,7 @@ import { SafetyWeeklyReportForm, SafetyWeeklyReportQuery, SafetyWeeklyReportVO } export const listSafetyWeeklyReport = (query?: SafetyWeeklyReportQuery): AxiosPromise => { return request({ - url: '/safety/safetyWeeklyReport/list', + url: '/zm/api/v1/system/busWeeklySecurityReport/list', method: 'get', params: query }); @@ -33,7 +33,7 @@ export const getSafetyWeeklyReport = (id: string | number): AxiosPromise { return request({ - url: '/safety/safetyWeeklyReport', + url: '/zm/api/v1/system/busWeeklySecurityReport/add', method: 'post', data: data }); @@ -57,7 +57,8 @@ export const updateSafetyWeeklyReport = (data: SafetyWeeklyReportForm) => { */ export const delSafetyWeeklyReport = (id: string | number | Array) => { return request({ - url: '/safety/safetyWeeklyReport/' + id, - method: 'delete' + url: '/zm/api/v1/system/busWeeklySecurityReport/delete', + method: 'delete', + data: { ids: id } }); }; diff --git a/src/api/safety/teamMeeting/index.ts b/src/api/safety/teamMeeting/index.ts index ce48e13..a056c4d 100644 --- a/src/api/safety/teamMeeting/index.ts +++ b/src/api/safety/teamMeeting/index.ts @@ -58,8 +58,11 @@ export const updateTeamMeeting = (data: TeamMeetingForm) => { * @param id */ export const delTeamMeeting = (id: string | number | Array) => { - return request({ - url: '/safety/teamMeeting/' + id, - method: 'delete' + return request1({ + url: '/zm/api/wxApplet/wxApplet/sysProjectTeamSquad/delete', + method: 'delete', + data: { + ids: id + } }); }; diff --git a/src/api/safety/violationLevel/index.ts b/src/api/safety/violationLevel/index.ts index e077172..b20965c 100644 --- a/src/api/safety/violationLevel/index.ts +++ b/src/api/safety/violationLevel/index.ts @@ -22,8 +22,8 @@ export const listViolationLevel = (query?: ViolationLevelQuery): AxiosPromise => { - return request({ - url: '/safety/violationLevel/' + id, + return request1({ + url: '/zm/api/v1/system/busViolationLevel/get?id=' + id, method: 'get' }); }; @@ -33,8 +33,8 @@ export const getViolationLevel = (id: string | number): AxiosPromise { - return request({ - url: '/safety/violationLevel', + return request1({ + url: '/zm/api/v1/system/busViolationLevel/add', method: 'post', data: data }); @@ -45,8 +45,8 @@ export const addViolationLevel = (data: ViolationLevelForm) => { * @param data */ export const updateViolationLevel = (data: ViolationLevelForm) => { - return request({ - url: '/safety/violationLevel', + return request1({ + url: '/zm/api/v1/system/busViolationLevel/edit', method: 'put', data: data }); @@ -58,7 +58,8 @@ export const updateViolationLevel = (data: ViolationLevelForm) => { */ export const delViolationLevel = (id: string | number | Array) => { return request({ - url: '/safety/violationLevel/' + id, - method: 'delete' + url: '/zm/api/v1/system/busViolationLevel/delete', + method: 'delete', + data: { ids: id } }); }; diff --git a/src/api/safety/violationRecord/index.ts b/src/api/safety/violationRecord/index.ts index 79cb7b7..0d5080e 100644 --- a/src/api/safety/violationRecord/index.ts +++ b/src/api/safety/violationRecord/index.ts @@ -21,11 +21,10 @@ export const listViolationRecord = (query?: ViolationRecordQuery): AxiosPromise< * 查询违规记录详细 * @param id */ -export const getViolationRecord = (query): AxiosPromise => { +export const getViolationRecord = (id: string): AxiosPromise => { return request1({ - url: '/zm/api/v1/system/busViolationRecord/get', - method: 'get', - params: query + url: '/zm/api/v1/system/busViolationRecord/get?id=' + id, + method: 'get' }); }; @@ -34,8 +33,8 @@ export const getViolationRecord = (query): AxiosPromise => { * @param data */ export const addViolationRecord = (data: any) => { - return request({ - url: '/safety/violationRecord/handler', + return request1({ + url: '/zm/api/v1/system/busViolationRecord/selectTheViolator', method: 'post', data: data }); @@ -58,8 +57,17 @@ export const updateViolationRecord = (data: ViolationRecordForm) => { * @param id */ export const delViolationRecord = (id: string | number | Array) => { - return request({ - url: '/safety/violationRecord/' + id, - method: 'delete' + return request1({ + url: '/zm/api/v1/system/busViolationRecord/delete', + method: 'delete', + data: { ids: id } }); }; + +export function listBusConstructionUser(query: object) { + return request1({ + url: '/zm/api/v1/system/busConstructionUser/list', + method: 'get', + params: query + }); +} diff --git a/src/api/system/post/index.ts b/src/api/system/post/index.ts index 9f028ab..78f0519 100644 --- a/src/api/system/post/index.ts +++ b/src/api/system/post/index.ts @@ -1,6 +1,7 @@ import request from '@/utils/request'; import { PostForm, PostQuery, PostVO } from './types'; import { AxiosPromise } from 'axios'; +import requestGo from '@/utils/request-go'; // 查询岗位列表 export function listPost(query: { pageNum: number; pageSize: number }): AxiosPromise { @@ -13,8 +14,8 @@ export function listPost(query: { pageNum: number; pageSize: number }): AxiosPro // 查询岗位列表 export function listTreeByProject(): AxiosPromise { - return request({ - url: '/system/dept/list/tree', + return requestGo({ + url: '/zm/api/v1/system/post/list?pageNum=1&pageSize=100', method: 'get' }); } diff --git a/src/assets/icons/file.png b/src/assets/icons/file.png new file mode 100644 index 0000000..cf70ecf Binary files /dev/null and b/src/assets/icons/file.png differ diff --git a/src/assets/icons/file1.png b/src/assets/icons/file1.png new file mode 100644 index 0000000..eb8ff97 Binary files /dev/null and b/src/assets/icons/file1.png differ diff --git a/src/components/FileUpload/index.vue b/src/components/FileUpload/index.vue index 265c016..60e7c18 100644 --- a/src/components/FileUpload/index.vue +++ b/src/components/FileUpload/index.vue @@ -53,13 +53,13 @@ style="margin-top: 10px" v-for="(file, index) in fileList" :key="file.uid" - class="el-upload-list__item ele-upload-list__item-content" + class="el-upload-list__item upload-list__item-content" v-if="autoUpload" > {{ getFileName(file.name) }} -
+
删除
@@ -70,7 +70,7 @@ - @@ -125,6 +125,8 @@ const props = defineProps({ autoUpload: propTypes.bool.def(true), // 是否显示文件列表 showFileList: propTypes.bool.def(false), + // 上传类型 + isGo: propTypes.bool.def(false), // 默认显示的文件列表 defaultFileList: { type: Array as any, @@ -156,9 +158,12 @@ const emit = defineEmits(['update:modelValue', 'handleChange', 'handleRemove']); const number = ref(0); const uploadList = ref([]); -const baseUrl = import.meta.env.VITE_APP_BASE_API; +const baseUrl = props.isGo ? import.meta.env.VITE_APP_BASE_API_GO : import.meta.env.VITE_APP_BASE_API; const uploadFileUrl = ref(baseUrl + props.uploadUrl); // 上传文件服务器地址 -const headers = ref(globalHeaders()); +const headers = ref({ + ...globalHeaders(), + 'Authorization': props.isGo ? `Bearer ${proxy.$cache.local.get('goToken') || ''}` : `Bearer ${proxy.$cache.local.get('Admin-Token') || ''}` +}); const pendingFiles = ref([]); const realUploadUrl = computed(() => { @@ -260,7 +265,8 @@ interface UploadFileWithOssId extends UploadFile { } const handleUploadSuccess = (res: any, file: UploadFileWithOssId) => { - if (res.code === 200) { + console.log('🚀 ~ handleUploadSuccess ~ res:', res.code); + if (res.code === 200 || res.code === 0) { console.log('上传成功'); // 上传成功,不管 data 是否为空 uploadList.value.push({ @@ -485,7 +491,7 @@ defineExpose({ submitUpload }); } } -.upload-file-list .ele-upload-list__item-content { +.upload-file-list .upload-list__item-content { display: flex; justify-content: space-between; align-items: center; @@ -510,7 +516,7 @@ defineExpose({ submitUpload }); z-index: 1; } -.ele-upload-list__item-content-action .el-link { +.upload-list__item-content-action .el-link { margin-right: 10px; } diff --git a/src/components/ProjectSelector/index.vue b/src/components/ProjectSelector/index.vue index 1259482..e7c49d7 100644 --- a/src/components/ProjectSelector/index.vue +++ b/src/components/ProjectSelector/index.vue @@ -50,6 +50,7 @@ const handleSelect = async (projectId: string) => { const userStore = useUserStore(); const permissionStore = usePermissionStore(); const selectedProject = projects.value.find((p) => p.id === projectId); + console.log('🚀 ~ handleSelect ~ selectedProject:', selectedProject); if (!selectedProject) return; const loadingInstance = ElLoading.service({ lock: true, diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index 8e70d3f..c2ed27e 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -26,11 +26,11 @@ - +
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 8962104..00081bc 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -72,7 +72,8 @@ export const useUserStore = defineStore('user', () => { if (projectRes?.data) { const projectList = projectRes.data.map((p) => ({ id: p.projectId, - name: p.projectName || '未知项目' + name: p.projectName || '未知项目', + goId: p.goId })); setProjects(projectList); // 如果有缓存的选中项目,且该项目在当前项目列表中存在,则使用缓存的项目 @@ -159,6 +160,7 @@ export const useUserStore = defineStore('user', () => { }; const setSelectedProject = (project: { id: string; name: string; goId: string }) => { + console.log('🚀 ~ setSelectedProject ~ project:', project); selectedProject.value = project; saveSelectedProjectToStorage(project); }; diff --git a/src/utils/exportDataToExcel.js b/src/utils/exportDataToExcel.js new file mode 100644 index 0000000..50ae697 --- /dev/null +++ b/src/utils/exportDataToExcel.js @@ -0,0 +1,146 @@ +// 封装exceljs +import ExcelJS from 'exceljs'; +import FileSaver from 'file-saver'; +/** + * 导出数据到Excel方法 + * @param {Array[Object]} config.data 表格数据 + * @param {Array[String]} config.fields 字段列表 + * @param {Array[String]} config.headers excel表头列表[[]],可以是多级表头[['A1','B1'],['A2','B2']] + * @param {Array[Object]} config.merges 需要合并的单元格,需要考虑表头的行数[{row:1, col:1, rowspan: 1, colspan: 2}] + * @param {Array[Object]} config.attrs 单元格样式配置 + * @param {Array[Object]} config.views 工作表视图配置 + * @param {Array[Number]} config.columnsWidth 每个字段列对应的宽度 + * @param {Object} config.protect 工作表保护【此配置会保护全表,一般推荐只针对单元格进行保护配置】 + * @param {String} config.sheetName 工作表名称,默认从sheet1开始 + * @param {String} fileName excel文件名称 + */ +export function exportDataToExcel(config, fileName) { + if (!config) return; + const options = { + fileName: fileName || `导出excel文件【${Date.now()}】.xlsx`, + worksheets: [], + }; + if (!Array.isArray(config)) { + config = [config]; + } + config.forEach((item) => { + // 深拷贝data【JSON.stringify有缺陷,可自行换成_.cloneDeep】 + const data = JSON.parse(JSON.stringify(item.data)); + const results = data.map((obj) => { + return item.fields.map((key) => { + return obj[key]; + }); + }); + // 生成完整excel数据 + let excelData = []; + excelData = excelData.concat(item.headers).concat(results); + // 单元格合并处理【excel数据的第一行/列是从1开始】 + let excelMerges = []; + excelMerges = item.merges.map((m) => { + return [m.row + 1, m.col + 1, m.row + m.rowspan, m.col + m.colspan]; + }); + // 单元格配置处理【excel数据的第一行/列是从1开始】 + let excelAttrs = []; + excelAttrs = item.attrs.map((attr) => { + attr.rowStart += 1; + attr.rowEnd += 1; + attr.colStart += 1; + attr.colEnd += 1; + return attr; + }); + options.worksheets.push({ + data: excelData, + merges: excelMerges, + attrs: excelAttrs, + views: item.views, + columnsWidth: item.columnsWidth, + protect: item.protect, + sheetName: item.sheetName, + }); + }); + createExcel(options); +} +// 创建Excel文件方法 +async function createExcel(options) { + if (!options.worksheets.length) return; + // 创建工作簿 + const workbook = new ExcelJS.Workbook(); + for (let i = 0; i < options.worksheets.length; i++) { + const sheetOption = options.worksheets[i]; + // 创建工作表 + const sheet = workbook.addWorksheet(sheetOption.sheetName || 'sheet' + (i + 1)); + // 添加数据行 + sheet.addRows(sheetOption.data); + // 配置视图 + sheet.views = sheetOption.views; + // 单元格合并处理【开始行,开始列,结束行,结束列】 + if (sheetOption.merges) { + sheetOption.merges.forEach((item) => { + sheet.mergeCells(item); + }); + } + // 工作表保护 + if (sheetOption.protect) { + const res = await sheet.protect(sheetOption.protect.password, sheetOption.protect.options); + } + // 单元格样式处理 + if (sheetOption.attrs.length) { + sheetOption.attrs.forEach((item) => { + const attr = item.attr || {}; + // 获取开始行-结束行; 开始列-结束列 + const rowStart = item.rowStart; + const rowEnd = item.rowEnd; + const colStart = item.colStart; + const colEnd = item.colEnd; + if (rowStart) { + // 设置行 + for (let r = rowStart; r <= rowEnd; r++) { + // 获取当前行 + const row = sheet.getRow(r); + if (colStart) { + // 列设置 + for (let c = colStart; c <= colEnd; c++) { + // 获取当前单元格 + const cell = row.getCell(c); + Object.keys(attr).forEach((key) => { + // 给当前单元格设置定义的样式 + cell[key] = attr[key]; + }); + } + } else { + // 未设置列,整行设置【大纲级别】 + Object.keys(attr).forEach((key) => { + row[key] = attr[key]; + }); + } + } + } else if (colStart) { + // 未设置行,只设置了列 + for (let c = colStart; c <= colEnd; c++) { + // 获取当前列,整列设置【大纲级别】 + const column = sheet.getColumn(c); + Object.keys(attr).forEach((key) => { + column[key] = attr[key]; + }); + } + } else { + // 没有设置具体的行列,则为整表设置 + Object.keys(attr).forEach((key) => { + sheet[key] = attr[key]; + }); + } + }); + } + // 列宽设置 + if (sheetOption.columnsWidth) { + for (let i = 0; i < sheet.columns.length; i++) { + sheet.columns[i].width = sheetOption.columnsWidth[i]; + } + } + } + // 生成excel文件 + workbook.xlsx.writeBuffer().then((buffer) => { + // application/octet-stream 二进制数据 + FileSaver.saveAs(new Blob([buffer], { type: 'application/octet-stream' }), options.fileName); + }); +} diff --git a/src/utils/projectTeam.ts b/src/utils/projectTeam.ts index b84fa2e..36c5f7a 100644 --- a/src/utils/projectTeam.ts +++ b/src/utils/projectTeam.ts @@ -9,13 +9,13 @@ export const getProjectTeam = async () => { if (!isPermission && useUserStore().permissions[0] != '*:*:*') return; - const { id } = $cache.local.getJSON('selectedProject'); + const { goId } = $cache.local.getJSON('selectedProject'); const res = await listProjectTeam({ pageNum: 1, pageSize: 20, orderByColumn: 'createTime', isAsc: 'desc', - projectId: id + projectId: goId }); const list = res.data.list.map((projectTeam: ProjectTeamVO) => ({ diff --git a/src/utils/request-go.ts b/src/utils/request-go.ts index d4d59dd..70e529e 100644 --- a/src/utils/request-go.ts +++ b/src/utils/request-go.ts @@ -23,12 +23,13 @@ const requestGo: RequestGo = (config: any) => { }); }; -requestGo.download = function (url: string, params: any, filename: string) { +requestGo.download = function (url: string, params: any, filename: string, method: 'post' | 'get' = 'post') { return request({ url, - method: 'post', + method: method, baseURL: BASE_GO_URL, - data: params, + data: method === 'post' ? params : undefined, + params: method === 'get' ? params : undefined, headers: { 'Authorization': `Bearer ${$cache.local.get('goToken') || ''}` }, diff --git a/src/utils/sign.js b/src/utils/sign.js new file mode 100644 index 0000000..13df2cd --- /dev/null +++ b/src/utils/sign.js @@ -0,0 +1,50 @@ +import crypto from 'crypto-js'; +let coyr = 'coyrOrtiehanhan1223202409111457'; +// 生成 nonce(随机生成一个16位的字符串) +function generateNonce() { + const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; + let nonce = ''; + for (let i = 0; i < 16; i++) { + nonce += chars.charAt(Math.floor(Math.random() * chars.length)); + } + return nonce; +} +// 生成当前时间戳(格式为 yyyyMMddHHmmss) +function generateTimestamp() { + return new Date().getTime(); +} +// 生成 MD5 哈希(需要引入第三方库,如 crypto-js) +function md5Hash(str) { + return crypto.MD5(str).toString(); +} + +// 生成 SHA-256 哈希(需要引入第三方库,如 crypto-js) +function sha256Hash(str) { + return crypto.SHA256(str).toString(); +} +// 生成签名 +function generateSignature(params, timestamp, nonce) { + // 加密 + let coyr1 = md5Hash(coyr); + // 拼接时间戳、nonce 和 secretKey + let signStr = coyr1 + timestamp + nonce; + // MD5 加密 + const md5Str = md5Hash(signStr); + // SHA-256 加密 + let aaaa = sha256Hash(md5Str); + return aaaa; +} +function sign(data) { + // 生成签名 + const timestamp = generateTimestamp(); + const nonce = generateNonce(); + const sign = generateSignature(data, timestamp, nonce); + return { + timestamp, + nonce, + sign, + }; +} +// 封装 + +export default sign; diff --git a/src/utils/storage.ts b/src/utils/storage.ts new file mode 100644 index 0000000..a983f80 --- /dev/null +++ b/src/utils/storage.ts @@ -0,0 +1,59 @@ +import Cookies from 'js-cookie'; + +/** + * window.localStorage 浏览器永久缓存 + * @method set 设置永久缓存 + * @method get 获取永久缓存 + * @method remove 移除永久缓存 + * @method clear 移除全部永久缓存 + */ +export const Local = { + // 设置永久缓存 + set(key: string, val: any) { + window.localStorage.setItem(key, JSON.stringify(val)); + }, + // 获取永久缓存 + get(key: string) { + let json: any = window.localStorage.getItem(key); + return JSON.parse(json); + }, + // 移除永久缓存 + remove(key: string) { + window.localStorage.removeItem(key); + }, + // 移除全部永久缓存 + clear() { + window.localStorage.clear(); + }, +}; + +/** + * window.sessionStorage 浏览器临时缓存 + * @method set 设置临时缓存 + * @method get 获取临时缓存 + * @method remove 移除临时缓存 + * @method clear 移除全部临时缓存 + */ +export const Session = { + // 设置临时缓存 + set(key: string, val: any) { + if (key === 'token') return Cookies.set(key, val); + window.sessionStorage.setItem(key, JSON.stringify(val)); + }, + // 获取临时缓存 + get(key: string) { + if (key === 'token') return Cookies.get(key); + let json: any = window.sessionStorage.getItem(key); + return JSON.parse(json); + }, + // 移除临时缓存 + remove(key: string) { + if (key === 'token') return Cookies.remove(key); + window.sessionStorage.removeItem(key); + }, + // 移除全部临时缓存 + clear() { + Cookies.remove('token'); + window.sessionStorage.clear(); + }, +}; diff --git a/src/views/other/ys7DeviceImg/index.vue b/src/views/other/ys7DeviceImg/index.vue index c1f0f2a..4ae0c8b 100644 --- a/src/views/other/ys7DeviceImg/index.vue +++ b/src/views/other/ys7DeviceImg/index.vue @@ -21,6 +21,8 @@ @@ -40,6 +42,11 @@ + + + diff --git a/src/views/project/attendance/index.vue b/src/views/project/attendance/index.vue index dfea087..6adf06c 100644 --- a/src/views/project/attendance/index.vue +++ b/src/views/project/attendance/index.vue @@ -18,12 +18,12 @@ - + @@ -36,7 +36,7 @@
- + @@ -60,11 +60,11 @@ - + @@ -144,7 +144,7 @@ const initFormData: AttendanceForm = { facePic: undefined, onClockTime: undefined, offClockTime: undefined, - clockDate: undefined, + dateStr: undefined, clockStatus: undefined, pinchUserId: undefined, clockRecord: undefined, @@ -163,7 +163,7 @@ const data = reactive>({ pageNum: 1, pageSize: 10, userName: undefined, - clockDate: undefined, + dateStr: undefined, clockStatus: undefined, commuter: undefined, projectId: currentProject.value.goId, @@ -176,7 +176,7 @@ const data = reactive>({ userId: [{ required: true, message: '人员id不能为空', trigger: 'blur' }], facePic: [{ required: true, message: '人脸照不能为空', trigger: 'blur' }], projectId: [{ required: true, message: '项目id不能为空', trigger: 'blur' }], - clockDate: [{ required: true, message: '打卡日期不能为空', trigger: 'blur' }], + dateStr: [{ required: true, message: '打卡日期不能为空', trigger: 'blur' }], clockStatus: [{ required: true, message: '1正常,2迟到,3早退,4缺勤,5补卡不能为空', trigger: 'change' }] } }); @@ -187,11 +187,11 @@ const day = computed(() => (date) => { }); //是否打卡 const isplayCard = computed(() => (date) => { - return calendarList.value.some((item) => item.clockDate == date.day); + return calendarList.value.some((item) => item.dateStr == date.day); }); //打卡时间下标 const playCardIdx = computed(() => (date) => { - return calendarList.value.findIndex((item) => item.clockDate == date.day); + return calendarList.value.findIndex((item) => item.dateStr == date.day); }); //上班时间 const workTime = computed(() => (date) => { @@ -228,7 +228,7 @@ const handleCalendarMonth = async (e?) => { } const res = await listAttendanceMonth({ userId: dialog.id, clockMonth }); - calendarList.value = res.data; + calendarList.value = res.data.list || []; }; /** 查看打卡记录详情 */ @@ -277,7 +277,7 @@ const reset = () => { const handleQuery = () => { queryParams.value.pageNum = 1; getList(); - getListTwoWeek(); + // getListTwoWeek(); }; /** 重置按钮操作 */ @@ -307,8 +307,9 @@ const incrementMonth = (dateStr: string, monthsToAdd: number) => { /** 详情按钮操作 */ const handleDetails = async (row?: AttendanceVO) => { - const res = await listAttendanceMonth({ userId: row?.id }); - calendarList.value = res.data; + const res = await listAttendanceMonth({ openid: row?.openid, dateStr: queryParams.value.dateStr }); + calendarList.value = res.data.list || []; + console.log('🚀 ~ handleDetails ~ calendarList.value:', calendarList.value); dialog.details = true; dialog.id = row?.id; dialog.title = row?.userName || ''; @@ -336,7 +337,7 @@ const init = () => { commandstatsIntance.value = echarts.init(commandstats.value, 'macarons'); commandstatsIntance.value.on('click', function (params) { - queryParams.value.clockDate = params.name; + queryParams.value.dateStr = params.name; handleQuery(); }); }; @@ -360,8 +361,8 @@ onUnmounted(() => { onMounted(() => { getTeamList(); getList(); - getListTwoWeek(); - init(); + // getListTwoWeek(); + // init(); }); diff --git a/src/views/project/constructionUser/component/ConstructionUserDetail.vue b/src/views/project/constructionUser/component/ConstructionUserDetail.vue index 73907f6..c194cc5 100644 --- a/src/views/project/constructionUser/component/ConstructionUserDetail.vue +++ b/src/views/project/constructionUser/component/ConstructionUserDetail.vue @@ -6,7 +6,7 @@ - + @@ -31,7 +31,7 @@ - {{ userDetail?.nation }} + {{ userDetail?.sfzNation }} @@ -95,7 +95,7 @@ - {{ userDetail?.contractorVo?.name }} + {{ userDetail?.lwName }} @@ -112,7 +112,7 @@ - {{ userDetail?.teamVo?.teamName }} + {{ userDetail?.bzName }} @@ -154,7 +154,7 @@ const userDetail = ref(); const getUserDetail = async () => { loading.value = true; const res = await getConstructionUser(props.userId); - if (res.data && res.code === 200) { + if (res.data && res.code === 0) { userDetail.value = res.data; } loading.value = false; diff --git a/src/views/project/contractor/index.vue b/src/views/project/contractor/index.vue index 6b8953b..ef8635b 100644 --- a/src/views/project/contractor/index.vue +++ b/src/views/project/contractor/index.vue @@ -7,11 +7,6 @@ - - - - - 搜索 重置 @@ -48,17 +43,12 @@ - - - - + - + + + + - + @@ -120,6 +152,18 @@ + + + + + + +
@@ -137,7 +181,8 @@ import { computed, reactive, ref } from 'vue'; import { useUserStoreHook } from '@/store/modules/user'; import { listConstructionUser, delConstructionUserMember } from '@/api/project/constructionUser'; import { ConstructionUserQuery, ConstructionUserVO, ConstructionUserMembeForm } from '@/api/project/constructionUser/types'; - +import request from '@/utils/request-go'; +const uploadRef = ref(null); // 获取用户 store const userStore = useUserStoreHook(); // 从 store 中获取项目列表和当前选中的项目 @@ -152,14 +197,17 @@ const memberForm = reactive({ id: undefined, filePath: undefined, remark: undefined, - userName: undefined + userName: undefined, + wxOrPc: 1 }); const props = defineProps(); // 是否可见 const visible = ref(false); -const initFormData: ProjectTeamMemberForm = { - projectId: currentProject.value.goId +const exportDate = ref(''); +const initFormData: any = { + projectId: currentProject.value.goId, + openid: undefined }; const data = reactive>({ form: { ...initFormData }, @@ -256,12 +304,15 @@ const userQueryParams = ref({ // 获取不在当前班组的成员 const getUserListNotInTeam = async () => { loading.value = true; + console.log(currentProject.value.goId); + const res = await listConstructionUser({ ...userQueryParams.value, notTeamId: props.projectTeamVo.id }); - userNotInTeamOpt.value = res.rows.map((user: ConstructionUserVO) => ({ + userNotInTeamOpt.value = res.data.list.map((user: ConstructionUserVO) => ({ value: user.id, - label: user.userName + label: user.userName, + openid: user.openid })); - userNotInTeamTotal.value = res.total; + userNotInTeamTotal.value = res.data.total; loading.value = false; }; @@ -283,9 +334,12 @@ const submitForm = () => { if (form.value.id) { await updateProjectTeamMember(form.value).finally(() => (buttonLoading.value = false)); } else { + const openid = userNotInTeamOpt.value.find((item: any) => item.value == form.value.memberId).openid; + await addProjectTeamMember({ ...form.value, - teamId: props.projectTeamVo.id + teamId: props.projectTeamVo.id, + openid }).finally(() => (buttonLoading.value = false)); } proxy?.$modal.msgSuccess('操作成功'); @@ -300,15 +354,23 @@ const submitMemberForm = async () => { memberFormRef.value?.validate(async (valid: boolean) => { if (valid) { buttonLoading.value = true; - await delConstructionUserMember(memberForm).finally(() => (buttonLoading.value = false)); - proxy?.$modal.msgSuccess('操作成功'); - dialog.visible = false; - await getList(); - memberForm.filePath = undefined; - memberForm.remark = undefined; + uploadRef.value + .submitUpload() + .then(async (res) => { + if (res == 'nofile') { + proxy?.$modal.msgError('请上传退场文件'); + } else { + proxy?.$modal.msgSuccess('操作成功'); + dialog.visible = false; + await getList(); + memberForm.filePath = undefined; + memberForm.remark = undefined; + memberStatus.value = false; + } + }) + .finally(() => (buttonLoading.value = false)); } }); - memberStatus.value = false; }; /** 退场按钮操作 */ @@ -331,15 +393,26 @@ const handleDelete = async (row?: ProjectTeamMemberVO) => { /** 导出按钮操作 */ const handleExport = () => { - proxy?.download( - 'project/projectTeamMember/export', + request.download( + 'zm/api/v1/system/busConstructionUser/exportSalary', { - ...queryParams.value + projectId: currentProject.value.goId, + dateStr: exportDate.value, + fuzzyQuery: '', + teamId: '', + typeOfWork: '', + years: exportDate.value }, `projectTeamMember_${new Date().getTime()}.xlsx` ); }; +const openExport = () => { + exportDate.value = ''; + visible.value = true; + return; +}; + watch( () => props.projectTeamVo, (newId, oldId) => { diff --git a/src/views/project/projectUser/index.vue b/src/views/project/projectUser/index.vue index 811abba..c7680cb 100644 --- a/src/views/project/projectUser/index.vue +++ b/src/views/project/projectUser/index.vue @@ -7,20 +7,14 @@ - - - - - - - + @@ -41,18 +35,87 @@ + - + + - - - + + + + + + + - + + + - + + + + +
+
用户信息
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + + + +
+
+
+
+
银行卡
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+
单位信息
+
+
+ + + +
+
+ + + + + +
+
+ + + + + +
+ + +
+
+
+ +
+ + + + + + + + +
-
{{ item.label }}
-
+ + + + + + + + + + 请输入薪资 + + + + +
+ + + {{ '入场时间:' + item.entryDate }} + + +
{{ '退场时间:' + item.leaveDate }}
+
+ 退场文件:
+

+ 备注:{{ item.remark }} +

+
+
+
+
+ + +
+ + + + + +
@@ -492,12 +1177,10 @@ onMounted(() => { margin: 0 15px; position: relative; font-size: 12px; - > div { margin: 0 15px; position: relative; font-size: 12px; - &::before { position: absolute; content: ''; @@ -509,35 +1192,29 @@ onMounted(() => { border-radius: 50%; } } - .red { &::before { background-color: red; } } - .gray { &::before { background-color: gray; } } - .orange { &::before { background-color: orange; } } - .green { &::before { background-color: green; } } } - .monthDay { padding: 8px; - > div { position: absolute; width: 20px; @@ -548,16 +1225,13 @@ onMounted(() => { right: 0; margin: auto; } - .type2 { background: rgb(255, 0, 0); } - .type3 { background: rgb(0, 128, 0); } } - .block_box { border: 1px solid #9eccfa; border-radius: 6px; @@ -571,12 +1245,10 @@ onMounted(() => { font-size: 14px; margin-bottom: 10px; } - .image_upload { border-bottom: 1px solid #e3e3d7; padding-bottom: 4px; } - .title { font-size: 18px; font-weight: 700; @@ -585,18 +1257,65 @@ onMounted(() => { width: 100%; font-family: cursive; } - .information { display: none; } - .informationStatus:hover .information { display: block; } - ::v-deep(.el-calendar) { .el-calendar-day { padding: 0; } } + +.file_upload_all { + display: flex; + align-items: center; + flex-wrap: wrap; + padding-bottom: 8px; +} +.pdf { + display: flex; + justify-content: center; + border-radius: 6px; + overflow: hidden; + align-items: center; + flex-direction: column; + border-radius: 6px; + position: relative; + margin-right: 8px; + width: 148px; + height: 148px; + img { + width: 40%; + } + + &:hover { + .Shadow { + opacity: 1; + } + } + + > span { + width: 100%; + } +} +.Shadow { + align-items: center; + background-color: rgba(0, 0, 0, 0.5); + color: #fff; + cursor: default; + display: inline-flex; + font-size: 20px; + height: 100%; + justify-content: center; + left: 0; + opacity: 0; + position: absolute; + top: 0; + transition: opacity 0.3s; + width: 100%; + z-index: 1; +} diff --git a/src/views/project/salaryExcel/component/detail.vue b/src/views/project/salaryExcel/component/detail.vue new file mode 100644 index 0000000..02388d2 --- /dev/null +++ b/src/views/project/salaryExcel/component/detail.vue @@ -0,0 +1,233 @@ + + + diff --git a/src/views/project/salaryExcel/component/documentsDetail/index.vue b/src/views/project/salaryExcel/component/documentsDetail/index.vue new file mode 100644 index 0000000..8252e60 --- /dev/null +++ b/src/views/project/salaryExcel/component/documentsDetail/index.vue @@ -0,0 +1,190 @@ + + + diff --git a/src/views/project/salaryExcel/component/uploadSalary.vue b/src/views/project/salaryExcel/component/uploadSalary.vue new file mode 100644 index 0000000..695d8e7 --- /dev/null +++ b/src/views/project/salaryExcel/component/uploadSalary.vue @@ -0,0 +1,167 @@ + + + diff --git a/src/views/project/salaryExcel/index.vue b/src/views/project/salaryExcel/index.vue index 325f845..8379a3d 100644 --- a/src/views/project/salaryExcel/index.vue +++ b/src/views/project/salaryExcel/index.vue @@ -41,23 +41,23 @@ - + diff --git a/src/views/project/workWage/index.vue b/src/views/project/workWage/index.vue index d6ea71e..38ccf87 100644 --- a/src/views/project/workWage/index.vue +++ b/src/views/project/workWage/index.vue @@ -4,16 +4,16 @@
- - + + - + - + - - - - - - - - - - - - + + - +