From 6633a09861ed232f3d9737b195860f6d8f234a48 Mon Sep 17 00:00:00 2001 From: chenhao Date: Thu, 20 Nov 2025 16:23:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(approve):=20=E6=96=B0=E5=A2=9E=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=AE=A1=E6=89=B9=E5=8A=9F=E8=83=BD=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加审批页面布局组件 ApproveLayout.vue - 实现订单审批主页面 Approve.vue - 创建配置信息展示组件 ConfigInfo.vue - 增加审批相关 API 接口方法 - 更新环境变量配置文件标题 - 修改首页标题显示内容- 调整路由配置结构 --- oms_web/oms_vue/.env.development | 2 +- oms_web/oms_vue/.env.production | 2 +- oms_web/oms_vue/.env.staging | 2 +- oms_web/oms_vue/public/favicon.ico | Bin 5663 -> 1090 bytes oms_web/oms_vue/public/index.html | 3 +- .../oms_vue/src/api/approve/order/index.js | 20 + oms_web/oms_vue/src/api/project/order.js | 2 +- .../oms_vue/src/assets/images/companyLogo.png | Bin 0 -> 2913 bytes .../src/assets/images/login-background.jpg | Bin 521275 -> 335772 bytes .../assets/images/login-background_bak.jpg | Bin 0 -> 521275 bytes oms_web/oms_vue/src/assets/logo/logo.png | Bin 5663 -> 2410 bytes .../src/layout/components/Sidebar/Logo.vue | 11 +- oms_web/oms_vue/src/router/index.js | 33 +- oms_web/oms_vue/src/settings.js | 8 +- .../src/views/approve/ApproveLayout.vue | 81 +++ .../src/views/approve/order/Approve.vue | 487 ++++++++++++++++++ .../src/views/approve/order/ConfigInfo.vue | 434 ++++++++++++++++ .../oms_vue/src/views/approve/order/index.vue | 219 ++++++++ oms_web/oms_vue/src/views/login.vue | 2 +- .../src/views/project/order/OrderDetail.vue | 10 +- oms_web/oms_vue/src/views/register.vue | 2 +- oms_web/oms_vue/vue.config.js | 2 +- .../src/main/resources/application.yml | 2 +- .../main/resources/templates/login_v2.html | 2 +- .../vue/VueProjectOrderInfoController.java | 19 +- 25 files changed, 1284 insertions(+), 59 deletions(-) create mode 100644 oms_web/oms_vue/src/api/approve/order/index.js create mode 100644 oms_web/oms_vue/src/assets/images/companyLogo.png create mode 100644 oms_web/oms_vue/src/assets/images/login-background_bak.jpg create mode 100644 oms_web/oms_vue/src/views/approve/ApproveLayout.vue create mode 100644 oms_web/oms_vue/src/views/approve/order/Approve.vue create mode 100644 oms_web/oms_vue/src/views/approve/order/ConfigInfo.vue create mode 100644 oms_web/oms_vue/src/views/approve/order/index.vue diff --git a/oms_web/oms_vue/.env.development b/oms_web/oms_vue/.env.development index 302ecd1a..92b875a4 100644 --- a/oms_web/oms_vue/.env.development +++ b/oms_web/oms_vue/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VUE_APP_TITLE = 若依管理系统 +VUE_APP_TITLE = UNISSENSE-OMS # 开发环境配置 ENV = 'development' diff --git a/oms_web/oms_vue/.env.production b/oms_web/oms_vue/.env.production index b4893b0d..4f5e6ceb 100644 --- a/oms_web/oms_vue/.env.production +++ b/oms_web/oms_vue/.env.production @@ -1,5 +1,5 @@ # 页面标题 -VUE_APP_TITLE = 若依管理系统 +VUE_APP_TITLE = UNISSENSE-OMS # 生产环境配置 ENV = 'production' diff --git a/oms_web/oms_vue/.env.staging b/oms_web/oms_vue/.env.staging index 209b64e3..675a434b 100644 --- a/oms_web/oms_vue/.env.staging +++ b/oms_web/oms_vue/.env.staging @@ -1,5 +1,5 @@ # 页面标题 -VUE_APP_TITLE = 若依管理系统 +VUE_APP_TITLE = UNISSENSE-OMS BABEL_ENV = production diff --git a/oms_web/oms_vue/public/favicon.ico b/oms_web/oms_vue/public/favicon.ico index e26376026420542212ed58d90d0ed34f554fa4ae..de795545e992c7de228f953af80752ccb5ef4fee 100644 GIT binary patch literal 1090 zcmV-I1ikx-P)VW64n zvCKJhPRW(7J@8e+edttl4nnK=?`Q3jl+wn-9H_soVQ|C#^w#_V8qgyC=(JTZm~kLM z79!n%gK%AUckg|+4k<__o_x*c_#sHxh6FHRwKVaNNPLg4EeNtm3^?Pq*)}V?JFFS! zzS!cA&RRt-ake#x9#9fH9wLj6?dzmaJha`-C{_v;|Cp~ybP>i#lz0dfuiMuNX<|Hx z&s&+Ys!=Ka+v)u_aG)%bhiM=n9{R+O&DRM*E7j3TyS|lpUn_^aWHJv^iZ`hy6#dW7 zY(rkZGw&?)+5t=vu9WBC$YO5*2L>!<88Erc8GM9EGNhF7#J{#~R)2}*Yt_9I3|@TN z%JP?Y3qsXcu>Ryd@$1&D#Dkgv?Q&hbYN#&uo~(dY8p9y4GOf%z^R}v7K+!n|7D@me z>q-3oW^P}KtTL~T+DhbWmpj(iEwu|ateYa51+!sy0u|yZs-Xc`EL|ODm30OUf@QeC zn?HaKLQ3Ryt5rZ%m_YhdxKex%*Cw=gMrfrbKEW#s&VmTCNC)QWxnrqr4ioQRG&~+o zTWBSYK8#*QQ0p}5oV=9x~b2lrQ|B4K#O=E8U%;V{)KpXqH0g#>tS%v2+l-af^ocI z-Bt(NaJCN|$ovM4YXz<1eef43K0lk>+d+&({J5BjpA<9klVT=*Qq06pikbLH;fXha zuP~5W-q4K)c}|*5I;;zC|F4MqB6S=Ot!nZxg-Bqyj_&MUiWhbItlX=7W8GM|ge#>P z#HCp3>pSI|0as#f1x4GvCzYPR63fB>wmBVEk`)scR|bU>q3@&$Rtr}@GWO~x{mgf_ zNPLT^FhhFq<6*PAPdNH`AYXHkxRhKz3A;9Os>IG}7h-V*y;p|OK)x<#AiH)UmO_OS zvGY86Pj_mi?Gx;Cjry*O=x@PO{qF(2lrVrFtE?2w^WnZ8MyTh9@%T1nB|$tiCF54q zeV!n+lm`?Klv*RigXe2XeQAY{1WK*=OVkF>ujA93+CU@!0NlC#*uuDrH~;_u07*qo IM6N<$f|J?y6aWAK literal 5663 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 - <%= webpackConfig.name %> + + 汇智OMS订单管理系统 diff --git a/oms_web/oms_vue/src/views/approve/order/Approve.vue b/oms_web/oms_vue/src/views/approve/order/Approve.vue new file mode 100644 index 00000000..52f5467f --- /dev/null +++ b/oms_web/oms_vue/src/views/approve/order/Approve.vue @@ -0,0 +1,487 @@ + + + + + + diff --git a/oms_web/oms_vue/src/views/approve/order/ConfigInfo.vue b/oms_web/oms_vue/src/views/approve/order/ConfigInfo.vue new file mode 100644 index 00000000..86a755d5 --- /dev/null +++ b/oms_web/oms_vue/src/views/approve/order/ConfigInfo.vue @@ -0,0 +1,434 @@ + + + + + diff --git a/oms_web/oms_vue/src/views/approve/order/index.vue b/oms_web/oms_vue/src/views/approve/order/index.vue new file mode 100644 index 00000000..fb98d121 --- /dev/null +++ b/oms_web/oms_vue/src/views/approve/order/index.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/oms_web/oms_vue/src/views/login.vue b/oms_web/oms_vue/src/views/login.vue index 381f6dac..38bbc9e7 100644 --- a/oms_web/oms_vue/src/views/login.vue +++ b/oms_web/oms_vue/src/views/login.vue @@ -56,7 +56,7 @@ diff --git a/oms_web/oms_vue/src/views/project/order/OrderDetail.vue b/oms_web/oms_vue/src/views/project/order/OrderDetail.vue index b26ada34..4077c03b 100644 --- a/oms_web/oms_vue/src/views/project/order/OrderDetail.vue +++ b/oms_web/oms_vue/src/views/project/order/OrderDetail.vue @@ -134,7 +134,7 @@
暂无合同信息数据。
- + @@ -443,12 +443,12 @@ export default { }, saveDraft() { if (!this.form.projectCode) { - this.msgError("项目编号为必填"); + this.$modal.msgError("项目编号为必填"); return; } const checkDiscount = (list) => !list || list.every(item => item.discount === null || item.discount === undefined || item.discount <= 1); if (!checkDiscount(this.form.softwareProjectProductInfoList) || !checkDiscount(this.form.hardwareProjectProductInfoList) || !checkDiscount(this.form.maintenanceProjectProductInfoList)) { - this.msgError("折扣不能大于100%"); + this.$modal.msgError("折扣不能大于100%"); return; } this.form.orderStatus = '0'; @@ -457,12 +457,12 @@ export default { submitForApproval() { const hasBusinessApprovalFile = this.currentContractFiles && this.currentContractFiles.length > 0 && this.currentContractFiles[0].id !== -1; if (!hasBusinessApprovalFile) { - this.msgError("请补充商务审批文件"); + this.$modal.msgError("请补充商务审批文件"); return; } this.$refs["form"].validate(valid => { if (valid) this.selectCommitTypeVisible = true; - else this.msgError("请完善表单"); + else this.$modal.msgError("请完善表单"); }); }, handleCommitTypeSelected(data) { diff --git a/oms_web/oms_vue/src/views/register.vue b/oms_web/oms_vue/src/views/register.vue index d624fc60..e712b4e3 100644 --- a/oms_web/oms_vue/src/views/register.vue +++ b/oms_web/oms_vue/src/views/register.vue @@ -61,7 +61,7 @@ diff --git a/oms_web/oms_vue/vue.config.js b/oms_web/oms_vue/vue.config.js index 66d5cb64..3f9fa4e4 100644 --- a/oms_web/oms_vue/vue.config.js +++ b/oms_web/oms_vue/vue.config.js @@ -7,7 +7,7 @@ function resolve(dir) { const CompressionPlugin = require('compression-webpack-plugin') -const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题 +const name = process.env.VUE_APP_TITLE || 'UNISSENSE-OMS' // 网页标题 const baseUrl = 'http://localhost:28080' // 后端接口 diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index ca0c4754..efc2d1ca 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -58,7 +58,7 @@ spring: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss profiles: - active: prod + active: dev # 文件上传 servlet: multipart: diff --git a/ruoyi-admin/src/main/resources/templates/login_v2.html b/ruoyi-admin/src/main/resources/templates/login_v2.html index 3a1fab2a..14638812 100644 --- a/ruoyi-admin/src/main/resources/templates/login_v2.html +++ b/ruoyi-admin/src/main/resources/templates/login_v2.html @@ -65,7 +65,7 @@ diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueProjectOrderInfoController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueProjectOrderInfoController.java index 2217068d..0b01e262 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueProjectOrderInfoController.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueProjectOrderInfoController.java @@ -45,9 +45,18 @@ public class VueProjectOrderInfoController extends BaseController { @RequiresPermissions(value = {"project:order:list", "project:order:approve"}, logical = Logical.OR) @GetMapping("/list") public TableDataInfo list(ProjectOrderInfo projectOrderInfo) { - if (StringUtils.isNotEmpty(projectOrderInfo.getApprove())) { - projectOrderInfo.setApprove(ShiroUtils.getUserId().toString()); - } + startPage(); + List list = projectOrderInfoService.selectProjectOrderInfoList(projectOrderInfo); + return getDataTable(list); + } + + /** + * 查询订单管理列表 + */ + @RequiresPermissions(value = {"project:order:list", "project:order:approve"}, logical = Logical.OR) + @GetMapping("/approve/list") + public TableDataInfo listApprove(ProjectOrderInfo projectOrderInfo) { + projectOrderInfo.setApprove(ShiroUtils.getUserId().toString()); startPage(); List list = projectOrderInfoService.selectProjectOrderInfoList(projectOrderInfo); return getDataTable(list); @@ -56,7 +65,7 @@ public class VueProjectOrderInfoController extends BaseController { /** * 获取订单管理详细信息 */ - @RequiresPermissions("project:order:query") + @RequiresPermissions("project:order:list") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { Map mmap=new HashMap<>(); @@ -84,7 +93,7 @@ public class VueProjectOrderInfoController extends BaseController { mmap.put("updateFile", (ShiroUtils.getSubject().hasRole("sale_assistant")||ShiroUtils.getSubject().hasRole("business") ||ShiroUtils.getSysUser().isAdmin()) && updateFlag); mmap.put("uploadFinalFile", (ShiroUtils.getSubject().hasRole("business") || ShiroUtils.getSysUser().isAdmin()) && ProjectOrderInfo.OrderStatus.APPROVE_COMPLETE.getCode().equals(projectOrderInfo.getOrderStatus())); - + mmap.put("todo", todoService.selectTodo(todo)); return AjaxResult.success(mmap);