From 362cd0fdfb239f0d2142e9d204a7243ebd13cd0a Mon Sep 17 00:00:00 2001
From: xd <844539747@qq.com>
Date: Wed, 22 May 2024 17:27:10 +0800
Subject: [PATCH] '123'
---
.../priceVerification/domain/QuotHj.java | 10 +
.../mapper/priceVerification/QuotHjMapper.xml | 9 +-
ruoyi-ui/src/directive/dialog/dragDialog.js | 167 ++++++++++++++++
ruoyi-ui/src/settings.js | 2 +-
ruoyi-ui/src/store/modules/settings.js | 4 +-
.../priceVerification/hjInfo.vue | 187 +++++++++++++++++-
ruoyi-ui/src/views/quot/quot/index.vue | 13 +-
ruoyi-ui/src/views/redBook/quots.vue | 10 +-
8 files changed, 389 insertions(+), 13 deletions(-)
create mode 100644 ruoyi-ui/src/directive/dialog/dragDialog.js
diff --git a/ruoyi-system/src/main/java/com/ruoyi/priceVerification/domain/QuotHj.java b/ruoyi-system/src/main/java/com/ruoyi/priceVerification/domain/QuotHj.java
index 76f0527..fd62527 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/priceVerification/domain/QuotHj.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/priceVerification/domain/QuotHj.java
@@ -40,11 +40,15 @@ public class QuotHj extends BaseEntity
/** 报价单信息 */
+ private String quotId;//报价单id
private String quotCode;//报价单号
private String quotSalesmanName;//业务员
private String quotCustomerName;//客户
private String quotProject;//项目
+ /** 技术协助信息 */
+ private String quotJsxzGroupValues;//技术协助-分组
+
public void setQuotHjId(String quotHjId)
{
this.quotHjId = quotHjId;
@@ -95,6 +99,9 @@ public class QuotHj extends BaseEntity
public void setCreateName(String createName) { this.createName = createName; }
/** 报价单信息 */
+ public String getQuotId() { return quotId; }
+ public void setQuotId(String quotId) { this.quotId = quotId; }
+
public String getQuotCode() { return quotCode; }
public void setQuotCode(String quotCode) { this.quotCode = quotCode; }
@@ -106,4 +113,7 @@ public class QuotHj extends BaseEntity
public String getQuotProject() { return quotProject; }
public void setQuotProject(String quotProject) { this.quotProject = quotProject; }
+
+ public String getQuotJsxzGroupValues() { return quotJsxzGroupValues; }
+ public void setQuotJsxzGroupValues(String quotJsxzGroupValues) { this.quotJsxzGroupValues = quotJsxzGroupValues; }
}
diff --git a/ruoyi-system/src/main/resources/mapper/priceVerification/QuotHjMapper.xml b/ruoyi-system/src/main/resources/mapper/priceVerification/QuotHjMapper.xml
index e9c34c9..00172ad 100644
--- a/ruoyi-system/src/main/resources/mapper/priceVerification/QuotHjMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/priceVerification/QuotHjMapper.xml
@@ -16,11 +16,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
+
+
@@ -33,8 +36,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select a.quot_hj_id, a.quot_hj_code, a.quot_hj_pricing_type, a.quot_hj_pricing_date, a.quot_hj_remark,
a.create_by, a.create_time, a.update_by, a.update_time,
u.nick_name create_name,
- q.quot_hj_approval_status,q.quot_code,q.quot_salesman_name,
- q.quot_customer_name,q.quot_project
+ q.quot_hj_approval_status,
+ q.quot_id,q.quot_code,q.quot_salesman_name,
+ q.quot_customer_name,q.quot_project,
+ q.quot_jsxz_group_values
from quot_hj a
diff --git a/ruoyi-ui/src/directive/dialog/dragDialog.js b/ruoyi-ui/src/directive/dialog/dragDialog.js
new file mode 100644
index 0000000..be31661
--- /dev/null
+++ b/ruoyi-ui/src/directive/dialog/dragDialog.js
@@ -0,0 +1,167 @@
+export default {
+ bind(el, binding, vnode, oldVnode) {
+ let resizeEvent = new CustomEvent('drag-resize',{detail:'尺寸变化',bubbles:false});
+ //初始化不最大化
+ el.fullscreen = false;
+ // 弹框可拉伸最小宽高
+ const minWidth = 1100
+ const minHeight = 570
+ //当前宽高
+ let nowWidth = minWidth;
+ let nowHight = minHeight;
+ //当前顶部高度
+ let nowMarginTop = 0;
+ //获取弹框头部(这部分可双击全屏)
+ const dialogHeaderEl = el.querySelector('.el-dialog__header');
+ let hasSetBodyHight = false;
+ //弹窗
+ const dragDom = el.querySelector('.el-dialog');
+ el.style.overflow='initial'
+ dragDom.className += ' el-drag-dialog';
+ // 给弹窗加上overflow auto;不然缩小时框内的标签可能超出dialog;
+ dragDom.style.overflow = 'auto'
+ //清除选择头部文字效果
+ dialogHeaderEl.onselectstart = new Function("return false");
+ //头部加上可拖动cursor
+ dialogHeaderEl.style.cursor = 'move';
+
+ // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
+ const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null);
+
+ //头部插入最大化最小化元素
+ let maxMin = document.createElement("button");
+ maxMin.className += ' el-dialog__headerbtn el-dialog__minmax';
+ maxMin.style.right = '40px';
+ maxMin.style.color = '#909399';
+ maxMin.title = el.fullscreen ? '还原' : '最大化';
+ maxMin.innerHTML = '';
+ dialogHeaderEl.insertBefore(maxMin, dialogHeaderEl.childNodes[1]);
+ let moveDown = (e) => {
+ // 鼠标按下,计算当前元素距离可视区的距离
+ const disX = e.clientX - dialogHeaderEl.offsetLeft;
+ const disY = e.clientY - dialogHeaderEl.offsetTop;
+
+ // 获取到的值带px 正则匹配替换
+ let styL, styT;
+
+ // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
+ if (sty.left.includes('%')) {
+ styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100);
+ styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100);
+ } else {
+ styL = +sty.left.replace(/\px/g, '');
+ styT = +sty.top.replace(/\px/g, '');
+ }
+ ;
+
+ document.onmousemove = function (e) {
+ // 通过事件委托,计算移动的距离
+ const l = e.clientX - disX;
+ const t = e.clientY - disY;
+
+ // 移动当前元素
+ dragDom.style.left = `${l + styL}px`;
+ dragDom.style.top = `${t + styT}px`;
+
+ //将此时的位置传出去
+ //binding.value({x:e.pageX,y:e.pageY})
+ };
+
+ document.onmouseup = function (e) {
+ document.onmousemove = null;
+ document.onmouseup = null;
+ };
+ }
+ dialogHeaderEl.onmousedown = moveDown;
+ let bodyHeight = 'auto';
+
+ function setMaxMin() {
+ if (el.fullscreen) {
+ let i = maxMin.querySelector('.el-icon-crop');
+ i.classList.remove('el-icon-crop');
+ i.classList.add('el-icon-full-screen');
+ maxMin.innerHTML = '';
+ maxMin.title = '最大化';
+ dragDom.style.height = nowHight + 'px';
+ dragDom.style.width = nowWidth + 'px';
+ dragDom.style.marginTop = window.innerHeight*0.07+'px';
+ el.fullscreen = false;
+ dialogHeaderEl.style.cursor = 'move';
+ dialogHeaderEl.onmousedown = moveDown;
+ //dragDom.querySelector('.el-dialog__body').style.height = bodyHeight;
+ hasSetBodyHight = false;
+ } else {
+ let i = maxMin.querySelector('.el-icon-full-screen');
+ i.classList.remove('el-icon-full-screen');
+ i.classList.add('el-icon-crop');
+ maxMin.title = '还原';
+ bodyHeight = dragDom.querySelector('.el-dialog__body').offsetHeight + 'px';
+ nowHight = dragDom.clientHeight;
+ nowWidth = dragDom.clientWidth;
+ nowMarginTop = dragDom.style.marginTop;
+ dragDom.style.left = 0;
+ dragDom.style.top = 0;
+ dragDom.style.height = window.innerHeight + 'px'
+ dragDom.style.width = "100VW";
+ dragDom.style.marginTop = 0;
+ el.fullscreen = true;
+ dialogHeaderEl.style.cursor = 'initial';
+ dialogHeaderEl.onmousedown = null;
+ if (!hasSetBodyHight) {
+ const footerHeight = dragDom.querySelector('.el-dialog__footer') && dragDom.querySelector('.el-dialog__footer').offsetHeight
+ dragDom.querySelector('.el-dialog__body').style.height =
+ 'calc(90% - ' + (dialogHeaderEl.offsetHeight + footerHeight) + 'px)'
+ /* dragDom.querySelector('.el-dialog__body').style.height =
+ window.innerHeight*0.9
+ - (dialogHeaderEl.offsetHeight + footerHeight) + 'px'*/
+ hasSetBodyHight = true
+ }
+ }
+ el.dispatchEvent(resizeEvent);
+ }
+
+ //点击放大缩小效果
+ maxMin.onclick = setMaxMin;
+ //双击头部效果
+ dialogHeaderEl.ondblclick = setMaxMin;
+ //拉伸
+ let resizeEl = document.createElement("div");
+ dragDom.appendChild(resizeEl);
+ //在弹窗右下角加上一个10-10px的控制块
+ resizeEl.style.cursor = 'se-resize';
+ resizeEl.style.position = 'absolute';
+ resizeEl.style.height = '10px';
+ resizeEl.style.width = '10px';
+ resizeEl.style.right = '0px';
+ resizeEl.style.bottom = '0px';
+ resizeEl.style.zIndex = '99';
+ //鼠标拉伸弹窗
+ resizeEl.onmousedown = (e) => {
+ // 记录初始x位置
+ const clientX = e.clientX;
+ // 鼠标按下,计算当前元素距离可视区的距离
+ const disX = e.clientX - resizeEl.offsetLeft;
+ const disY = e.clientY - resizeEl.offsetTop;
+ document.onmousemove = function (e) {
+ e.preventDefault(); // 移动时禁用默认事件
+ // 通过事件委托,计算移动的距离
+ const x = e.clientX - disX + (e.clientX - clientX);//这里 由于elementUI的dialog控制居中的,所以水平拉伸效果是双倍
+ const y = e.clientY - disY;
+ //比较是否小于最小宽高
+ dragDom.style.width = x > minWidth ? `${x}px` : minWidth + 'px';
+ dragDom.style.height = y > minHeight ? `${y}px` : minHeight + 'px';
+ if (!hasSetBodyHight) {
+ const footerHeight = dragDom.querySelector('.el-dialog__footer') && dragDom.querySelector('.el-dialog__footer').offsetHeight
+ dragDom.querySelector('.el-dialog__body').style.height = 'calc(90% - ' + (dialogHeaderEl.offsetHeight + footerHeight) + 'px)'
+ hasSetBodyHight = true
+ }
+ };
+ //拉伸结束
+ document.onmouseup = function (e) {
+ document.onmousemove = null;
+ document.onmouseup = null;
+ el.dispatchEvent(resizeEvent);
+ };
+ }
+ }
+}
diff --git a/ruoyi-ui/src/settings.js b/ruoyi-ui/src/settings.js
index c367d6d..ad78801 100644
--- a/ruoyi-ui/src/settings.js
+++ b/ruoyi-ui/src/settings.js
@@ -12,7 +12,7 @@ module.exports = {
/**
* 是否显示顶部导航
*/
- topNav: true,
+ topNav: false,
/**
* 是否显示 tagsView
diff --git a/ruoyi-ui/src/store/modules/settings.js b/ruoyi-ui/src/store/modules/settings.js
index ee38ede..c587891 100644
--- a/ruoyi-ui/src/store/modules/settings.js
+++ b/ruoyi-ui/src/store/modules/settings.js
@@ -8,8 +8,8 @@ const state = {
theme: storageSetting.theme || '#409EFF',
sideTheme: storageSetting.sideTheme || sideTheme,
showSettings: showSettings,
- //topNav: storageSetting.topNav === undefined ? topNav : storageSetting.topNav,
- topNav: storageSetting.topNav === undefined ? topNav : true,
+ topNav: storageSetting.topNav === undefined ? topNav : storageSetting.topNav,
+ //topNav: storageSetting.topNav === undefined ? topNav : true,
tagsView: storageSetting.tagsView === undefined ? tagsView : storageSetting.tagsView,
fixedHeader: storageSetting.fixedHeader === undefined ? fixedHeader : storageSetting.fixedHeader,
sidebarLogo: storageSetting.sidebarLogo === undefined ? sidebarLogo : storageSetting.sidebarLogo,
diff --git a/ruoyi-ui/src/views/priceVerification/priceVerification/hjInfo.vue b/ruoyi-ui/src/views/priceVerification/priceVerification/hjInfo.vue
index 1536794..76da996 100644
--- a/ruoyi-ui/src/views/priceVerification/priceVerification/hjInfo.vue
+++ b/ruoyi-ui/src/views/priceVerification/priceVerification/hjInfo.vue
@@ -65,6 +65,28 @@
+
+
+ 询价附件
+
+
+
+
+ {{(scope.row.fileSize / 1024).toFixed(2) + 'KB'}}
+ {{(scope.row.fileSize / 1024 / 1024).toFixed(2) + 'MB'}}
+
+
+
+
+
+
+ 下载
+
+
+
+
+
+
核价附件
@@ -108,6 +130,125 @@
+
+
+
+ 特缆协助
+
+
+
+
+
+
+
+
+
+
+ 上传文件 ({{this.quotJsqrTlFileNum}})
+
+
+
+
+
+
+
+
+
+
+
+
+ 低压协助
+
+
+
+
+
+
+
+
+
+
+ 上传文件 ({{this.quotJsqrDyFileNum}})
+
+
+
+
+
+
+
+
+
+
+
+
+ 中压协助
+
+
+
+
+
+
+
+
+
+
+ 上传文件 ({{this.quotJsqrZyFileNum}})
+
+
+
+
+
+
+
+
+
+
+
+
+ 其他协助
+
+
+
+
+
+
+
+
+
+
+ 上传文件 ({{this.quotJsqrQtFileNum}})
+
+
+
+
+
+
+
+
+
+
+
+