diff --git a/package.json b/package.json index 80777fa7..a2a56cde 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "MIT", "scripts": { "local": "vue-cli-service serve --mode local", - "dev": "vue-cli-service serve --mode dev", + "dev": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --mode dev", "front": "vue-cli-service serve --mode front", "build:prod": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --mode prod", "build:stage": "vue-cli-service build --mode stage", diff --git a/src/api/group/Schedule.js b/src/api/group/Schedule.js index c0dd2319..e229aa5d 100644 --- a/src/api/group/Schedule.js +++ b/src/api/group/Schedule.js @@ -57,7 +57,66 @@ export function listByDeptId(id) { method: 'get' }) } +// 作废计划 +export function disablePlan(id) { + return request({ + url: '/base/group-scheduling-plan/disablePlan?id='+id, + method: 'delete', + }) +} +// 同步节假日 +export function updateScheduleLater(data) { + return request({ + url: '/base/group-holiday/updateScheduleLater', + method: 'post', + data:data + }) +} +// 复制计划 +export function copyPlan(id) { + return request({ + url: '/base/group-scheduling-plan/copyPlan?id='+id, + method: 'get' + }) +} +// 列表草稿编辑 +export function draftEditing(id) { + return request({ + url: '/base/group-scheduling-plan/draftEditing?id='+id, + method: 'get' + }) +} +// 排班计划-详情 +export function getPlan(id) { + return request({ + url: '/base/group-scheduling-plan/get?id='+id, + method: 'get' + }) +} +// 弹窗-取消 +export function cancelStepThree(id) { + return request({ + url: '/base/group-scheduling-plan/cancelStepThree?id='+id, + method: 'delete', + }) +} +// 第三步确认并执行 检查计划时间是否冲突,如果有,返回冲突的计划列表 +export function checkPlan(data) { + return request({ + url: '/base/group-scheduling-plan/checkPlan', + method: 'post', + data:data + }) +} +// 第三步确认并执行 执行 +export function createStepFour(id) { + return request({ + url: '/base/group-scheduling-plan/createStepFour', + method: 'post', + data:id + }) +} // 班组班次下一步至获取预览 export function createStepTwo(data) { return request({ @@ -73,3 +132,22 @@ export function returnStepTwo(id) { method: 'delete', }) } + +// 第三步获取预览 +export function getPerView(data) { + return request({ + url: '/base/group-scheduling-plan/getPerView', + method: 'post', + data:data + }) +} + +// 导出 Excel +export function exportExcel(query) { + return request({ + url: '/base/group-scheduling-plan/export-excel', + method: 'get', + params: query, + responseType: 'blob' + }) +} diff --git a/src/api/group/calendar.js b/src/api/group/calendar.js new file mode 100644 index 00000000..0a3893a3 --- /dev/null +++ b/src/api/group/calendar.js @@ -0,0 +1,18 @@ +import request from '@/utils/request' + +// 获取部门及下级部门排班list +export function getDeptSchedulingList(data) { + return request({ + url: '/base/group-team-scheduling/getDeptSchedulingList', + method: 'post', + data: data + }) +} +// 某个班组的排班list +export function getClassSchedulingList(data) { + return request({ + url: '/base/group-team-scheduling/getClassSchedulingList', + method: 'post', + data: data + }) +} diff --git a/src/api/group/groupSetting.js b/src/api/group/groupSetting.js index ab211c58..73902961 100644 --- a/src/api/group/groupSetting.js +++ b/src/api/group/groupSetting.js @@ -26,6 +26,13 @@ export function getGroup(id) { method: 'get' }) } +// 检查更新-生产班组 +export function updateIsProduction(id) { + return request({ + url: '/base/group-team/updateIsProduction?id=' + id, + method: 'get' + }) +} // 获得班组基础信息分页 export function getGroupPage(query) { diff --git a/src/api/group/holidaySetting.js b/src/api/group/holidaySetting.js index d2ee97d8..1fea77e6 100644 --- a/src/api/group/holidaySetting.js +++ b/src/api/group/holidaySetting.js @@ -2,19 +2,28 @@ * @Author: zwq * @Date: 2025-10-18 21:24:37 * @LastEditors: zwq - * @LastEditTime: 2025-10-18 23:07:37 + * @LastEditTime: 2025-10-22 14:34:29 * @Description: */ import request from '@/utils/request' // 获得节假日基础信息分页 -export function deptHolidayList(query) { +export function deptHolidayPage(query) { return request({ url: '/base/group-holiday/page', method: 'get', params: query }) } +// 获得部门节假日信息 +export function deptHolidayList(data) { + return request({ + url: '/base/group-holiday/deptHolidayList', + method: 'post', + data: data + }) +} + // 创建节假日基础信息 export function createHoliday(data) { @@ -24,6 +33,14 @@ export function createHoliday(data) { data: data }) } +// 节假日操作后直接更新排班日历 +export function updateSchedule(data) { + return request({ + url: '/base/group-holiday/updateSchedule', + method: 'post', + data: data + }) +} // 更新节假日基础信息 export function updateHoliday(data) { @@ -33,14 +50,30 @@ export function updateHoliday(data) { data: data }) } +// 删除节假日基础信息前校验是否影响排班 +export function checkDeleteHoliday(id) { + return request({ + url: '/base/group-holiday/checkDelete?id=' + id, + method: 'delete' + }) +} + // 删除 -export function deleteHolidayn(id) { +export function deleteHoliday(id) { return request({ url: '/base/group-holiday/delete?id=' + id, method: 'delete' }) } +// 获得节假日基础信息 +export function getHoliday(id) { + return request({ + url: '/base/group-holiday/get?id=' + id, + method: 'get' + }) +} + // 获得节假日变动日志分页 export function deptHolidayLogList(query) { return request({ @@ -49,3 +82,37 @@ export function deptHolidayLogList(query) { params: query }) } + +// 获得用户本人及以下的部门扁平化结构 +export function getEnableData() { + return request({ + url: '/base/group-team-scheduling/getEnableData', + method: 'get', + }) +} + +// 解除继承节假日 +export function disExtends(data) { + return request({ + url: '/base/group-holiday/disExtends', + method: 'post', + data: data + }) +} +// 恢复继承节假日 +export function reExtends(data) { + return request({ + url: '/base/group-holiday/reExtends', + method: 'post', + data: data + }) +} + +// 获得部门节假日继承设置信息设置 +export function getSet(query) { + return request({ + url: '/base/group-holiday-dept-set/getSet', + method: 'get', + params: query + }) +} diff --git a/src/assets/img/cold-data-board-msg1.png b/src/assets/img/cold-data-board-msg1.png new file mode 100644 index 00000000..ad6eae83 Binary files /dev/null and b/src/assets/img/cold-data-board-msg1.png differ diff --git a/src/assets/img/cold-data-board-msg2.png b/src/assets/img/cold-data-board-msg2.png new file mode 100644 index 00000000..9c09c1ee Binary files /dev/null and b/src/assets/img/cold-data-board-msg2.png differ diff --git a/src/assets/img/home-bg.png b/src/assets/img/home-bg.png new file mode 100644 index 00000000..5ef3977f Binary files /dev/null and b/src/assets/img/home-bg.png differ diff --git a/src/assets/img/home-progress-bg.png b/src/assets/img/home-progress-bg.png new file mode 100644 index 00000000..39ddb5ef Binary files /dev/null and b/src/assets/img/home-progress-bg.png differ diff --git a/src/mixins/basic-page.js b/src/mixins/basic-page.js index 549a15a6..050a141e 100644 --- a/src/mixins/basic-page.js +++ b/src/mixins/basic-page.js @@ -16,7 +16,7 @@ export default { }, tableData: [], //table数据 listQuery: { //分页 - pageSize: 10, + pageSize: 20, pageNo: 1, total: 1, }, diff --git a/src/utils/request.js b/src/utils/request.js index 89cd58b7..6a3cf0c7 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -1,10 +1,10 @@ import axios from 'axios' -import {Message, MessageBox, Notification, Loading} from 'element-ui' +import { Message, MessageBox, Notification, Loading } from 'element-ui' import store from '@/store' -import {getAccessToken, getRefreshToken, getTenantId, setToken} from '@/utils/auth' +import { getAccessToken, getRefreshToken, getTenantId, setToken } from '@/utils/auth' import errorCode from '@/utils/errorCode' -import {getPath, getTenantEnable} from "@/utils/ruoyi"; -import {refreshToken} from "@/api/login"; +import { getPath, getTenantEnable } from "@/utils/ruoyi"; +import { refreshToken } from "@/api/login"; // 需要忽略的提示。忽略后,自动 Promise.reject('error') const ignoreMsgs = [ @@ -86,7 +86,7 @@ service.interceptors.request.use(config => { for (const propName of Object.keys(config.params)) { const value = config.params[propName]; const part = encodeURIComponent(propName) + '=' - if (value !== null && typeof(value) !== "undefined") { + if (value !== null && typeof (value) !== "undefined") { if (typeof value === 'object') { for (const key of Object.keys(value)) { let params = propName + '[' + key + ']'; @@ -104,9 +104,9 @@ service.interceptors.request.use(config => { } return config }, error => { - tryHideFullScreenLoading() - console.log(error) - Promise.reject(error) + tryHideFullScreenLoading() + console.log(error) + Promise.reject(error) }) // 响应拦截器 @@ -176,36 +176,38 @@ service.interceptors.response.use(async res => { + '
5 分钟搭建本地环境
', }) return Promise.reject(new Error(msg)) + } else if (code === 400) { + //【班组管理】【排班计划】提交的校验按照原型图补充完整,排班计划是否重叠code400 有两个不同的返回信息 + return res.data } else if (code !== 200) { if (msg === '无效的刷新令牌') { // hard coding:忽略这个提示,直接登出 console.log(msg) } else { - Notification.error({ - title: msg - }) + //【班组管理】【排班计划】提交的校验按照原型图补充完整,排班计划是否重叠code400 有两个不同的返回信息 + return res.data } return Promise.reject('error') } else { return res.data } }, error => { - tryHideFullScreenLoading() - console.log('err' + error) - let {message} = error; - if (message === "Network Error") { - message = "后端接口连接异常"; - } else if (message.includes("timeout")) { - message = "系统接口请求超时"; - } else if (message.includes("Request failed with status code")) { - message = "系统接口" + message.substr(message.length - 3) + "异常"; - } - Message({ - message: message, - type: 'error', - duration: 5 * 1000 - }) - return Promise.reject(error) + tryHideFullScreenLoading() + console.log('err' + error) + let { message } = error; + if (message === "Network Error") { + message = "后端接口连接异常"; + } else if (message.includes("timeout")) { + message = "系统接口请求超时"; + } else if (message.includes("Request failed with status code")) { + message = "系统接口" + message.substr(message.length - 3) + "异常"; } + Message({ + message: message, + type: 'error', + duration: 5 * 1000 + }) + return Promise.reject(error) +} ) export function getBaseHeader() { @@ -219,10 +221,10 @@ function handleAuthorized() { if (!isRelogin.show) { isRelogin.show = true; MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { - confirmButtonText: '重新登录', - cancelButtonText: '取消', - type: 'warning' - } + confirmButtonText: '重新登录', + cancelButtonText: '取消', + type: 'warning' + } ).then(() => { isRelogin.show = false; store.dispatch('LogOut').then(() => { diff --git a/src/views/cost/costStatistics/index.vue b/src/views/cost/costStatistics/index.vue index a984c3e5..87f67855 100644 --- a/src/views/cost/costStatistics/index.vue +++ b/src/views/cost/costStatistics/index.vue @@ -1,6 +1,6 @@