diff --git a/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/build/MybatisPlusUtil.java b/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/build/MybatisPlusUtil.java index 9ca4e3d..de8cc31 100644 --- a/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/build/MybatisPlusUtil.java +++ b/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/build/MybatisPlusUtil.java @@ -327,8 +327,7 @@ public class MybatisPlusUtil { if (ignoreKeys.contains(orderField)) { continue; } - - if ("desc".equalsIgnoreCase(QueryConfigUtils.toStr(s2[1],""))) { + if (s2.length > 1 && "desc".equalsIgnoreCase(QueryConfigUtils.toStr(s2[1],""))) { queryWrapper.orderByDesc(orderField); } else { queryWrapper.orderByAsc(orderField); @@ -366,6 +365,7 @@ public class MybatisPlusUtil { // 条件查询 if (QueryConfigUtils.isNotEmpty(filter)) { Set keySet = options.keySet(); + // 过滤配置 Map filterMap = new HashMap<>(); for (String s : keySet) { // 处理驼峰字段 diff --git a/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/build/QueryConfigUtils.java b/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/build/QueryConfigUtils.java index b2977f4..f1abdd6 100644 --- a/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/build/QueryConfigUtils.java +++ b/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/build/QueryConfigUtils.java @@ -74,6 +74,7 @@ public class QueryConfigUtils { registerWrapperHandler(new BetweenHandler<>()); registerWrapperHandler(new EqHandler<>()); registerWrapperHandler(new GeHandler<>()); + registerWrapperHandler(new GtHandler<>()); registerWrapperHandler(new InHandler<>()); registerWrapperHandler(new InSetHandler<>()); registerWrapperHandler(new KeywordHandler<>()); @@ -447,7 +448,7 @@ public class QueryConfigUtils { } /** - * 跳过数据 + * 跳过数据处理器 * * @param str str * @return boolean diff --git a/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/build/where/handler/GeHandler.java b/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/build/where/handler/GeHandler.java index 13d1b93..d51560a 100644 --- a/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/build/where/handler/GeHandler.java +++ b/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/build/where/handler/GeHandler.java @@ -1,13 +1,11 @@ package cn.hangtag.framework.mybatis.build.where.handler; -import cn.hangtag.framework.mybatis.build.QueryConfigUtils; import cn.hangtag.framework.mybatis.build.WrapperInfo; import cn.hangtag.framework.mybatis.build.enums.QueryFilterTypeEnum; import cn.hangtag.framework.mybatis.build.where.WhereWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import java.util.List; public class GeHandler implements WhereWrapper { @Override public QueryFilterTypeEnum getType() { diff --git a/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/build/where/handler/GtHandler.java b/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/build/where/handler/GtHandler.java new file mode 100644 index 0000000..a4c54fa --- /dev/null +++ b/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/build/where/handler/GtHandler.java @@ -0,0 +1,19 @@ +package cn.hangtag.framework.mybatis.build.where.handler; + + +import cn.hangtag.framework.mybatis.build.WrapperInfo; +import cn.hangtag.framework.mybatis.build.enums.QueryFilterTypeEnum; +import cn.hangtag.framework.mybatis.build.where.WhereWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; + +public class GtHandler implements WhereWrapper { + @Override + public QueryFilterTypeEnum getType() { + return QueryFilterTypeEnum.GT; + } + + @Override + public QueryWrapper handler(WrapperInfo wrapperInfo) { + return wrapperInfo.getQueryWrapper().gt(wrapperInfo.getField(), wrapperInfo.getValue()); + } +} diff --git a/hangtag-ui/hangtag-ui-admin/package.json b/hangtag-ui/hangtag-ui-admin/package.json index 231a7ef..ea734b3 100644 --- a/hangtag-ui/hangtag-ui-admin/package.json +++ b/hangtag-ui/hangtag-ui-admin/package.json @@ -54,6 +54,7 @@ "crypto-js": "^4.2.0", "dayjs": "^1.11.10", "diagram-js": "^12.8.0", + "dom-to-image": "^2.6.0", "driver.js": "^1.3.1", "echarts": "^5.5.0", "echarts-wordcloud": "^2.1.0", diff --git a/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/DraftDesignImageLibDialog/index.vue b/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/DraftDesignImageLibDialog/index.vue index cf5d456..1d69648 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/DraftDesignImageLibDialog/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/DraftDesignImageLibDialog/index.vue @@ -211,13 +211,8 @@ const updateVisible = (visible: boolean) => { defineExpose({}) // 提供 open 方法,用于打开弹窗 const submit = () => { - // 转成base64 - convertImageToBase64(that.iconUrl).then((res:string) => { - that.iconUrl = res; - emit("update:modelValue", that.iconUrl) - updateVisible(false) - }) - + emit("update:modelValue", that.iconUrl) + updateVisible(false) } const clearData = ()=>{ that.iconUrl = ''; diff --git a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPreviewDialog.vue b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPreviewDialog.vue index ce2d9d4..1a1e3ce 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPreviewDialog.vue +++ b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPreviewDialog.vue @@ -13,7 +13,7 @@ @@ -60,10 +60,13 @@ const previewByDraftDesignId = (id: string | number,prop={})=>{ that.loading = false; },100) } -const submit = async ()=>{ - const res = await designPropEditRef.value.getPropInfo() - emit("submit",res); - updateVisible(false) +const submit = ()=>{ + useMessage().confirm("是否提交?").then(async (r) => { + const res = await designPropEditRef.value.getPropInfo() + emit("submit",res); + updateVisible(false) + }) + } defineExpose({ preview, diff --git a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPropEdit.vue b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPropEdit.vue index f8b1621..1d4945c 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPropEdit.vue +++ b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPropEdit.vue @@ -1,93 +1,88 @@ - - diff --git a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/node/ShapeCircleNode.vue b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/node/ShapeCircleNode.vue index fd89086..955d319 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/node/ShapeCircleNode.vue +++ b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/node/ShapeCircleNode.vue @@ -181,20 +181,22 @@ export default defineComponent({ // this.cellInfo.showInput = val }, changSize(size: any) { + if(size && size.width){ + this.sizeWInfo.width = size.width; + this.sizeWInfo.height = size.height; + this.minSize = Math.min(size.height, size.width) + let s = size.height + 12; + if (s > 60) { + s = s + s / 3 + } + if (s < 6) { + s = 6 + } else if (s >= 1000) { + s = 1000 + } + this.fontSize = s; + } - this.sizeWInfo.width = size.width; - this.sizeWInfo.height = size.height; - this.minSize = Math.min(size.height, size.width) - let s = size.height + 12; - if (s > 60) { - s = s + s / 3 - } - if (s < 6) { - s = 6 - } else if (s >= 1000) { - s = 1000 - } - this.fontSize = s; this.changeFontSize(); }, changeFontSize() { diff --git a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/node/ShapeImageNode.vue b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/node/ShapeImageNode.vue index 5b2adbf..2675f46 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/node/ShapeImageNode.vue +++ b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/node/ShapeImageNode.vue @@ -6,6 +6,22 @@ :class="{ 'node-content-group' : cellInfo.editMode && cellInfo.propGroupId }" :title="cellInfo.propGroupName" v-reSize="changSize"> + + + /> - - @@ -110,7 +114,6 @@ export default defineComponent({ fillColor: '', // 填充颜色 fillOpacity: '', // 填充颜色的不透明度 href: '', - hrefBase64: null, opacity: '', // 元素的不透明度 strokeDashoffset: '', // 虚线起始偏移量 strokeLinecap: undefined, // 线段末端的样式:"round" | "butt" | "square" | "inherit" | undefined @@ -194,6 +197,9 @@ export default defineComponent({ setInput(val: boolean) { }, changSize(size: any) { + if(!size){ + return; + } this.sizeWInfo.width = size.width; this.sizeWInfo.height = size.height; this.minSize = Math.min(size.height, size.width) @@ -206,7 +212,6 @@ export default defineComponent({ } else if (s >= 1000) { s = 1000 } - // this.nodeInfo.store.data.size.width = size.width; this.fontSize = s; this.changeFontSize(); @@ -235,7 +240,7 @@ export default defineComponent({ y: 0, // 矩形左上角的 y 坐标 rx: 0, // 矩形的圆角 x 半径 ry: 0, // 矩形的圆角 y 半径 - fillColor: '#000000', // 填充颜色 + fillColor: 'rgba(0,0,0,0)', // 填充颜色 href: '', label: '图片', fillOpacity: '', // 填充颜色的不透明度 @@ -253,11 +258,21 @@ export default defineComponent({ } }, info) - if(this.cellInfo.style.shape.href){ + if(!this.hrefBase64 && this.cellInfo.style.shape.href && this.cellInfo.style.shape.href.indexOf("data:image") < 0){ + // DataUri.imageToDataUri(this.cellInfo.style.shape.href, + // function (nu, url) { + // console.log("base64 完成") + // // 第一个参数无效,用的只是第二个参数,但是第一个参数不写不行 + // // @ts-ignore + // this.hrefBase64 = url; // 给图片标签赋值 + // } + + // ); convertImageToBase64(this.cellInfo.style.shape.href).then((res)=>{ - // @ts-ignore - // 待优化 this.hrefBase64 = res - this.cellInfo.style.shape.href = res + // @ts-ignore 待优化 + this.hrefBase64 = res + console.log("base64 完成") + // this.cellInfo.style.shape.href = res }) } setTimeout(() => { diff --git a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/node/TextCellNode.vue b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/node/TextCellNode.vue deleted file mode 100644 index a6028b6..0000000 --- a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/node/TextCellNode.vue +++ /dev/null @@ -1,282 +0,0 @@ - - - - - - diff --git a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/config/index.ts b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/config/index.ts index e5a11ea..a487301 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/config/index.ts +++ b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/config/index.ts @@ -68,12 +68,12 @@ export const graphOptions = (elId:string, viewMode = false) => { vertexDeletable: true // 边的路径点是否可以被删除 }, // 对齐线 - snapline: true, // 撤销/重做 + snapline: viewMode, // 撤销/重做 history: !viewMode, // // 显示网格 grid: { - visible: true, + visible: !viewMode, size: 2, // 网格大小 type: 'doubleMesh', // // 'dot' | 'fixedDot' | 'mesh' args: [{ @@ -91,7 +91,7 @@ export const graphOptions = (elId:string, viewMode = false) => { }, panning: { // 画布移动 - enabled: false, + enabled: viewMode, pageVisible: false, // 是否分页 pageBreak: true, pannable: true,// 是否平移 diff --git a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/index.vue b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/index.vue index 3b46a23..951035e 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/index.vue @@ -277,7 +277,7 @@ const rightKeyMenu = computed(() => { value: 'mergeGroup', icon: 'icon-lk_cell_add', disabled: disabledMenu.value, - label: '设置洗涤说明', + label: '设置图文变量', handler: (item) => { const cells = that.selectedCellsList if (cells.length === 0) { @@ -302,7 +302,7 @@ const rightKeyMenu = computed(() => { value: 'mergeGroup', icon: 'icon-lk_cell_tree', disabled: disabledMenu.value, - label: '设为属性项', + label: '设为变量', handler: (item) => { const cells = that.selectedCellsList if (cells.length === 0) { @@ -470,7 +470,7 @@ const init = (isDesignMode: boolean, bgConfig: any, data = {}, propDataInfo = {} size: 'auto auto', opacity: 1, angle: 20, - color: '#F5F7FD', + color: '#F5F7FD', ...bgConfig.background || {} }, } as any @@ -481,19 +481,22 @@ const init = (isDesignMode: boolean, bgConfig: any, data = {}, propDataInfo = {} height: maxSize, } graph = new Graph(options) -// 画布拖动组件 - graph.use( - new Scroller({ - enabled: true, - pageVisible: true, // 是否分页 - pageBreak: false, - pannable: true,// 是否平移 - // pageWidth: that.pageConfig.editArea.width * 10, - // pageHeight: that.pageConfig.editArea.height * 10, - // modifiers: ['ctrl', 'meta'], - }), - ) + if (that.editState) { + + // 画布拖动组件 + graph.use( + new Scroller({ + enabled: true, + pageVisible: true, // 是否分页 + pageBreak: false, + pannable: true,// 是否平移 + // pageWidth: that.pageConfig.editArea.width * 10, + // pageHeight: that.pageConfig.editArea.height * 10, + // modifiers: ['ctrl', 'meta'], + }), + ) + // 参考线 graph.use( new Snapline({ @@ -700,6 +703,7 @@ const toPngUrl = (callback: (url: string) => void, options?: { let widthScale = options && options.widthScale ? options.widthScale : 5 let heightScale = options && options.heightScale ? options.heightScale : 5 + graph.toPNG((dataUri) => { that.previewUrl = dataUri; callback(that.previewUrl) @@ -714,9 +718,42 @@ const toPngUrl = (callback: (url: string) => void, options?: { bottom: 0 }, quality: 1, + copyStyles: true, ...options }) } +const toSVGData = (callback: (url: string) => void, options?: { + width: number, + height: number, + widthScale: number, + heightScale: number, + padding: { + top: number, + left: number, + right: number, + bottom: number + } +}) => { + + let widthScale = options && options.widthScale ? options.widthScale : 5 + let heightScale = options && options.heightScale ? options.heightScale : 5 + + graph.toSVG((dataUri) => { + that.previewUrl = dataUri; + callback(that.previewUrl) + }, { + viewBox: { + x: 0, + y: 0, + width: that.pageConfig.width * (widthScale), + height: that.pageConfig.height * (heightScale), + }, + preserveDimensions:{ + width: that.pageConfig.width * (widthScale), + height: that.pageConfig.height * (heightScale), + }, + }) +} const setPropList = (propDataInfo) => { const keys = Object.keys(propDataInfo) for (let i = 0; i < keys.length; i++) { @@ -937,7 +974,9 @@ const getDeviceDPI = () => { } let rulerContainer = document.createElement('div'); const addDrawRuler = () => { - + if(!that.editState){ + return; + } // 计算每个像素对应的毫米数 const dpi = getDeviceDPI(); const mmPerInch = 25.4; // 1 英寸 = 25.4 毫米 @@ -1601,6 +1640,7 @@ defineExpose({ init, getPropInfo, toPngUrl, + toSVGData, clearData, getJson, }) diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/productcareitem/ProductCareItemForm.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/productcareitem/ProductCareItemForm.vue index cba390e..2dd355c 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/productcareitem/ProductCareItemForm.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/productcareitem/ProductCareItemForm.vue @@ -85,28 +85,7 @@ {{ scope.$index + 1 }} - - - -