diff --git a/.gitignore b/.gitignore index 23d01fec..9193b5f3 100644 --- a/.gitignore +++ b/.gitignore @@ -323,4 +323,5 @@ docs/变更管理/ 移动端附件组件规范.md 移动端违纪记录模块开发规范.md .playwright-mcp/ - +查找界面中涉及到的权限字符.md +docs/部署文档/nginx配置/hzdyjsweb.camasort.com.conf \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqSatQuestionServiceImpl.java b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqSatQuestionServiceImpl.java index 22ad15ff..92d211fb 100644 --- a/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqSatQuestionServiceImpl.java +++ b/backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/service/impl/HqSatQuestionServiceImpl.java @@ -73,7 +73,39 @@ public class HqSatQuestionServiceImpl implements IHqSatQuestionService { private LambdaQueryWrapper buildQueryWrapper(HqSatQuestionBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.orderByAsc(HqSatQuestion::getId); + + // 处理排序参数 + if (params != null && params.containsKey("orderByColumn") && params.containsKey("isAsc")) { + String orderByColumn = (String) params.get("orderByColumn"); + String isAsc = (String) params.get("isAsc"); + + if ("createTime".equals(orderByColumn)) { + if ("desc".equals(isAsc)) { + lqw.orderByDesc(HqSatQuestion::getCreateTime); + } else { + lqw.orderByAsc(HqSatQuestion::getCreateTime); + } + } else if ("updateTime".equals(orderByColumn)) { + if ("desc".equals(isAsc)) { + lqw.orderByDesc(HqSatQuestion::getUpdateTime); + } else { + lqw.orderByAsc(HqSatQuestion::getUpdateTime); + } + } else if ("sortOrder".equals(orderByColumn)) { + if ("desc".equals(isAsc)) { + lqw.orderByDesc(HqSatQuestion::getSortOrder); + } else { + lqw.orderByAsc(HqSatQuestion::getSortOrder); + } + } else { + // 默认按创建时间倒序 + lqw.orderByDesc(HqSatQuestion::getCreateTime); + } + } else { + // 默认按创建时间倒序 + lqw.orderByDesc(HqSatQuestion::getCreateTime); + } + // 添加ID查询条件 lqw.eq(bo.getId() != null, HqSatQuestion::getId, bo.getId()); lqw.eq(bo.getDeleted() != null, HqSatQuestion::getDeleted, bo.getDeleted()); diff --git a/backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/HqPmRepairOrderMapper.xml b/backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/HqPmRepairOrderMapper.xml index 68c48d55..7952986e 100644 --- a/backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/HqPmRepairOrderMapper.xml +++ b/backend/ruoyi-modules/ruoyi-hq/src/main/resources/mapper/HqPmRepairOrderMapper.xml @@ -15,11 +15,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LEFT JOIN sys_dept d ON u.dept_id = d.dept_id INNER JOIN sys_user_role ur ON u.user_id = ur.user_id INNER JOIN sys_role r ON ur.role_id = r.role_id - WHERE (r.role_key = 'maintenance_worker' - OR r.role_name = '维修人员' - OR r.role_id = 5 - OR r.role_name LIKE '%维修%' - OR r.role_key LIKE '%worker%') + WHERE r.role_key = 'maintenance_worker' AND u.status = '0' AND u.del_flag = '0' ORDER BY u.user_id diff --git a/docs/部署文档/nginx配置/hzdyjsweb.camasort.com.conf b/docs/部署文档/nginx配置/hzdyjsweb.camasort.com.conf index ae8f1d3b..62cdacc8 100644 --- a/docs/部署文档/nginx配置/hzdyjsweb.camasort.com.conf +++ b/docs/部署文档/nginx配置/hzdyjsweb.camasort.com.conf @@ -41,17 +41,65 @@ server { add_header Pragma "no-cache"; } - # API代理配置(如果需要避免CORS问题) - # location /api/ { - # proxy_pass http://47.121.125.41:8080/; - # proxy_set_header Host $host; - # proxy_set_header X-Real-IP $remote_addr; - # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - # proxy_set_header X-Forwarded-Proto $scheme; - # proxy_connect_timeout 60s; - # proxy_send_timeout 60s; - # proxy_read_timeout 60s; - # } + # Warm-Flow工作流UI代理配置(重要:必须放在Vue路由配置之前,使用^~确保优先级) + location ^~ /prod-api/warm-flow-ui/ { + proxy_pass http://47.121.125.41:8080/warm-flow-ui/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + # 支持WebSocket和SSE + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_buffering off; + proxy_cache off; + + # 超时设置 + proxy_connect_timeout 60s; + proxy_send_timeout 60s; + proxy_read_timeout 86400s; + + # CORS处理 + add_header Access-Control-Allow-Origin *; + add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS'; + add_header Access-Control-Allow-Headers 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization,clientid'; + + if ($request_method = 'OPTIONS') { + return 204; + } + } + + # API代理配置(使用^~确保优先级,避免被Vue路由配置干扰) + location ^~ /prod-api/ { + proxy_pass http://47.121.125.41:8080/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + # 支持WebSocket和SSE + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_buffering off; + proxy_cache off; + + # 超时设置 + proxy_connect_timeout 60s; + proxy_send_timeout 60s; + proxy_read_timeout 86400s; + + # CORS处理 + add_header Access-Control-Allow-Origin *; + add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS'; + add_header Access-Control-Allow-Headers 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization,clientid'; + + if ($request_method = 'OPTIONS') { + return 204; + } + } # Gzip压缩配置 gzip on; diff --git a/mobile/src/pages/index/index.vue b/mobile/src/pages/index/index.vue index f93a36b3..01bee670 100644 --- a/mobile/src/pages/index/index.vue +++ b/mobile/src/pages/index/index.vue @@ -74,7 +74,7 @@ @@ -87,7 +87,7 @@ - - + --> @@ -111,7 +111,7 @@ - - + --> - - + --> - - + --> @@ -182,7 +182,7 @@ @@ -195,7 +195,7 @@ @@ -208,7 +208,7 @@ @@ -236,7 +236,7 @@ @@ -250,7 +250,7 @@ @@ -266,7 +266,7 @@ - + - + - + - + - + @@ -586,7 +586,7 @@ - + @@ -677,20 +677,20 @@ export default { // 检查各模块是否有权限 hasStudentServices() { return ( - this.hasPermi(['student:info:list']) || + this.hasPermi(['student:info:listapp']) || this.hasPermi(['student:dorm:list']) || - this.hasPermi(['student:leave:list']) || + this.hasPermi(['student:leave:listapp']) || this.hasPermi(['student:psychology:list']) || this.hasPermi(['student:club:list']) || this.hasPermi(['student:counsel:list']) || - this.hasPermi(['student:info:edit']) || + this.hasPermi(['student:info:editapp']) || this.hasPermi(['student:internship:list']) || - this.hasPermi(['student:dorm:violation:list']) || + this.hasPermi(['student:dormviolation:listapp']) || this.hasPermi(['student:visit:list']) || - this.hasPermi(['student:dorm:hygiene:list']) || + this.hasPermi(['student:dormhygiene:listapp']) || this.hasPermi(['student:workstudy:list']) || - this.hasPermi(['student:violation:list']) || - this.hasPermi(['student:assessment:apply']) + this.hasPermi(['student:violation:listapp']) || + this.hasPermi(['student:assessment:applyapp']) ); }, diff --git a/web/public/assets/images/01.jpg b/web/public/assets/images/01.jpg new file mode 100644 index 00000000..cfb4d980 Binary files /dev/null and b/web/public/assets/images/01.jpg differ diff --git a/web/public/assets/images/02.jpg b/web/public/assets/images/02.jpg new file mode 100644 index 00000000..adfe1f24 Binary files /dev/null and b/web/public/assets/images/02.jpg differ diff --git a/web/public/assets/images/03.jpg b/web/public/assets/images/03.jpg new file mode 100644 index 00000000..650e0684 Binary files /dev/null and b/web/public/assets/images/03.jpg differ diff --git a/web/public/assets/images/login-background-2-bak.jpg b/web/public/assets/images/login-background-2-bak.jpg new file mode 100644 index 00000000..5a65e659 Binary files /dev/null and b/web/public/assets/images/login-background-2-bak.jpg differ diff --git a/web/public/assets/images/login-background-2.jpg b/web/public/assets/images/login-background-2.jpg new file mode 100644 index 00000000..f544d456 Binary files /dev/null and b/web/public/assets/images/login-background-2.jpg differ diff --git a/web/public/assets/images/login-background-bak.jpg b/web/public/assets/images/login-background-bak.jpg new file mode 100644 index 00000000..0a736165 Binary files /dev/null and b/web/public/assets/images/login-background-bak.jpg differ diff --git a/web/public/assets/images/login-background-old.jpg b/web/public/assets/images/login-background-old.jpg new file mode 100644 index 00000000..fa6408b9 Binary files /dev/null and b/web/public/assets/images/login-background-old.jpg differ diff --git a/web/public/assets/images/login-background.jpg b/web/public/assets/images/login-background.jpg new file mode 100644 index 00000000..04d03756 Binary files /dev/null and b/web/public/assets/images/login-background.jpg differ diff --git a/web/src/assets/images/01.jpg b/web/src/assets/images/01.jpg new file mode 100644 index 00000000..cfb4d980 Binary files /dev/null and b/web/src/assets/images/01.jpg differ diff --git a/web/src/assets/images/02.jpg b/web/src/assets/images/02.jpg new file mode 100644 index 00000000..adfe1f24 Binary files /dev/null and b/web/src/assets/images/02.jpg differ diff --git a/web/src/assets/images/03.jpg b/web/src/assets/images/03.jpg new file mode 100644 index 00000000..650e0684 Binary files /dev/null and b/web/src/assets/images/03.jpg differ diff --git a/web/src/views/hq/bgtgl/hallReservation/index.vue b/web/src/views/hq/bgtgl/hallReservation/index.vue index c82d6baa..db7cc3a3 100644 --- a/web/src/views/hq/bgtgl/hallReservation/index.vue +++ b/web/src/views/hq/bgtgl/hallReservation/index.vue @@ -429,7 +429,7 @@ const auditorList = ref([]); /** 获取具有审核权限的人员列表 */ const getAuditorList = async () => { try { - const res = await listUsersByPermission('hq:hallAudit:list'); + const res = await listUsersByPermission('hq:hallAudit:hallAudit'); auditorList.value = res.data || []; console.log('审核人员列表:', auditorList.value); } catch (error) { diff --git a/web/src/views/hq/myddc/satCategory/index.vue b/web/src/views/hq/myddc/satCategory/index.vue index 58cec1d5..7651ad95 100644 --- a/web/src/views/hq/myddc/satCategory/index.vue +++ b/web/src/views/hq/myddc/satCategory/index.vue @@ -174,6 +174,8 @@ const data = reactive>({ categoryDesc: undefined, sortOrder: undefined, status: undefined, + orderByColumn: 'createTime', + isAsc: 'desc', params: {} }, rules: { @@ -215,6 +217,9 @@ const handleQuery = () => { /** 重置按钮操作 */ const resetQuery = () => { queryFormRef.value?.resetFields(); + // 保持排序设置 + queryParams.value.orderByColumn = 'createTime'; + queryParams.value.isAsc = 'desc'; handleQuery(); }; diff --git a/web/src/views/hq/myddc/satQuestion/index.vue b/web/src/views/hq/myddc/satQuestion/index.vue index 24b85981..8d115820 100644 --- a/web/src/views/hq/myddc/satQuestion/index.vue +++ b/web/src/views/hq/myddc/satQuestion/index.vue @@ -319,7 +319,10 @@ const data = reactive>({ isRequired: undefined, sortOrder: undefined, status: undefined, - params: {} + params: { + orderByColumn: 'createTime', + isAsc: 'desc' + } }, rules: { id: [{ required: true, message: '主键ID不能为空', trigger: 'blur' }], diff --git a/web/src/views/index.vue b/web/src/views/index.vue index cda61d22..de863740 100644 --- a/web/src/views/index.vue +++ b/web/src/views/index.vue @@ -1,5 +1,21 @@