diff --git a/admin/src/app/api/salary.ts b/admin/src/app/api/salary.ts index 46359e1f..0ea2d149 100644 --- a/admin/src/app/api/salary.ts +++ b/admin/src/app/api/salary.ts @@ -74,59 +74,59 @@ export const calculateNetSalary = (grossSalary: number, socialSecurity: number, // 工资条列表 export const getSalaryList = (params: QueryParams) => { - return request.get('/adminapi/salary/payroll/list', { params }) + return request.get('/salary/payroll/list', { params }) } // 创建工资条 export const createSalary = (data: SalaryFormData) => { - return request.post('/adminapi/salary/payroll/add', data) + return request.post('/salary/payroll/add', data) } // 更新工资条 export const updateSalary = (data: SalaryFormData & { id: number }) => { - return request.post('/adminapi/salary/payroll/edit', data) + return request.post('/salary/payroll/edit', data) } // 删除工资条 export const deleteSalary = (id: number) => { - return request.post('/adminapi/salary/payroll/delete', { id }) + return request.post('/salary/payroll/delete', { id }) } // 获取工资条详情 export const getSalaryInfo = (id: number) => { - return request.get('/adminapi/salary/payroll/info', { params: { id } }) + return request.get('/salary/payroll/info', { params: { id } }) } // 批量导入工资条 export const importSalary = (file: File) => { const formData = new FormData() formData.append('file', file) - return request.post('/adminapi/salary/payroll/import', formData, { + return request.post('/salary/payroll/import', formData, { headers: { 'Content-Type': 'multipart/form-data' } }) } // 导出工资条 export const exportSalary = (params: QueryParams) => { - return request.get('/adminapi/salary/payroll/export', { params, responseType: 'blob' }) + return request.get('/salary/payroll/export', { params, responseType: 'blob' }) } // 获取统计摘要 export const getStatisticsSummary = (params: { salary_month?: string; campus_id?: number }) => { - return request.get('/adminapi/salary/statistics/summary', { params }) + return request.get('/salary/statistics/summary', { params }) } // 获取趋势数据 export const getStatisticsTrend = (params: { months?: number; campus_id?: number }) => { - return request.get('/adminapi/salary/statistics/trend', { params }) + return request.get('/salary/statistics/trend', { params }) } // 获取员工列表 export const getPersonnelList = () => { - return request.get('/adminapi/personnel/list') + return request.get('/personnel/list') } // 获取校区列表 export const getCampusList = () => { - return request.get('/adminapi/campus/list') + return request.get('/campus_person_role/campus_all') } \ No newline at end of file diff --git a/admin/src/app/views/salary/list.vue b/admin/src/app/views/salary/list.vue index a96cdf45..6249bfbc 100644 --- a/admin/src/app/views/salary/list.vue +++ b/admin/src/app/views/salary/list.vue @@ -242,7 +242,7 @@ const queryFormRef = ref() const uploadRef = ref() // 上传相关 -const importAction = '/adminapi/salary/payroll/import' +const importAction = '/salary/payroll/import' const uploadHeaders = { Authorization: `Bearer ${localStorage.getItem('token')}` } diff --git a/admin/src/components/TencentMapPicker.vue b/admin/src/components/TencentMapPicker.vue index e6d2a120..fec26e64 100644 --- a/admin/src/components/TencentMapPicker.vue +++ b/admin/src/components/TencentMapPicker.vue @@ -585,9 +585,48 @@ const handleAddressSearch = async () => { if (error.status === 112 || (error.message && error.message.includes('IP未被授权'))) { ElMessage({ type: 'info', - message: '地址搜索暂不可用,请直接在地图上点击选择位置', + message: '地址搜索暂不可用(API授权限制),请直接在地图上点击选择位置', duration: 5000 }) + + // 仍然更新地址信息,但不移动地图位置 + const address = [ + provinceList.value.find((p) => p.id === province.value)?.name || '', + cityList.value.find((c) => c.id === city.value)?.name || '', + district.value + ? districtList.value.find((d) => d.id === district.value)?.name || '' + : '', + detailAddress.value.trim(), + ].filter(Boolean).join('') + + emit('update:modelValue', { + lat: props.modelValue.lat || null, + lng: props.modelValue.lng || null, + address: address, // 保存用户输入的地址 + }) + } else if (error.status === 408 || error.statusText === 'Request Timeout') { + // 请求超时处理 + ElMessage({ + type: 'warning', + message: '搜索请求超时,请直接在地图上点击选择位置', + duration: 5000 + }) + + // 保存地址信息 + const address = [ + provinceList.value.find((p) => p.id === province.value)?.name || '', + cityList.value.find((c) => c.id === city.value)?.name || '', + district.value + ? districtList.value.find((d) => d.id === district.value)?.name || '' + : '', + detailAddress.value.trim(), + ].filter(Boolean).join('') + + emit('update:modelValue', { + lat: props.modelValue.lat || null, + lng: props.modelValue.lng || null, + address: address, + }) } else { ElMessage.error('搜索失败,请重试') } diff --git a/admin/src/utils/qqmap.ts b/admin/src/utils/qqmap.ts index ecf0ddc9..6c74fe41 100644 --- a/admin/src/utils/qqmap.ts +++ b/admin/src/utils/qqmap.ts @@ -179,8 +179,8 @@ export const createMarker = (map: any) => { */ export const latLngToAddress = (params: any) => { return jsonp( - `https://apis.map.qq.com/ws/geocoder/v1/?key=${params.mapKey}&location=${params.lat},${params.lng}&output=jsonp&callback=latLngToAddress`, - { callbackName: 'latLngToAddress' } + `https://apis.map.qq.com/ws/geocoder/v1/?key=${params.mapKey}&location=${params.lat},${params.lng}&output=jsonp&callback=reverseGeocode`, + { callbackName: 'reverseGeocode' } ) } @@ -189,7 +189,7 @@ export const latLngToAddress = (params: any) => { */ export const addressToLatLng = (params: any) => { return jsonp( - `https://apis.map.qq.com/ws/geocoder/v1/?key=${params.mapKey}&address=${params.address}&output=jsonp&callback=addressToLatLng`, - { callbackName: 'addressToLatLng' } + `https://apis.map.qq.com/ws/geocoder/v1/?key=${params.mapKey}&address=${params.address}&output=jsonp&callback=addressGeocode`, + { callbackName: 'addressGeocode' } ) }