@vipl520/dk-ui 1.0.72 → 1.0.74
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.css +1 -1
- package/dist/index.js +13 -4
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.min.mjs +1 -1
- package/dist/index.min.mjs.map +1 -1
- package/dist/index.mjs +13 -4
- package/dist/web-types.json +1 -1
- package/es/page-diy/src/components/forms/DkCubeImageInput.vue2.mjs +0 -1
- package/es/page-diy/src/components/forms/DkCubeImageInput.vue2.mjs.map +1 -1
- package/es/page-diy/src/config/rule/min/common/DkMinCubeImage.mjs +3 -3
- package/es/page-diy/src/config/rule/min/common/DkMinCubeImage.mjs.map +1 -1
- package/es/page-diy/src/views/min/DkMinCubeImage.vue.d.ts +8 -1
- package/es/page-diy/src/views/min/DkMinCubeImage.vue.mjs +10 -0
- package/es/page-diy/src/views/min/DkMinCubeImage.vue.mjs.map +1 -1
- package/es/page-diy/style/index.css +1 -1
- package/es/page-diy/style/minViews/index.scss +6 -9
- package/lib/page-diy/src/components/forms/DkCubeImageInput.vue2.js +0 -1
- package/lib/page-diy/src/components/forms/DkCubeImageInput.vue2.js.map +1 -1
- package/lib/page-diy/src/config/rule/min/common/DkMinCubeImage.js +3 -3
- package/lib/page-diy/src/config/rule/min/common/DkMinCubeImage.js.map +1 -1
- package/lib/page-diy/src/views/min/DkMinCubeImage.vue.d.ts +8 -1
- package/lib/page-diy/src/views/min/DkMinCubeImage.vue.js +10 -0
- package/lib/page-diy/src/views/min/DkMinCubeImage.vue.js.map +1 -1
- package/lib/page-diy/style/index.css +1 -1
- package/lib/page-diy/style/minViews/index.scss +6 -9
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
@@ -12772,7 +12772,7 @@ var DkMinCubeImage$1 = {
|
|
12772
12772
|
return {
|
12773
12773
|
type: name$1,
|
12774
12774
|
props: {
|
12775
|
-
cubeData: { density:
|
12775
|
+
cubeData: { density: 5, selectedCubes: [] }
|
12776
12776
|
},
|
12777
12777
|
showStyle: true
|
12778
12778
|
};
|
@@ -12781,8 +12781,8 @@ var DkMinCubeImage$1 = {
|
|
12781
12781
|
return [
|
12782
12782
|
{
|
12783
12783
|
type: "switch",
|
12784
|
-
field: "
|
12785
|
-
title: "\
|
12784
|
+
field: "clickActive",
|
12785
|
+
title: "\u70B9\u51FB\u6548\u679C",
|
12786
12786
|
value: false
|
12787
12787
|
},
|
12788
12788
|
{
|
@@ -13889,6 +13889,9 @@ const _sfc_main$H = {
|
|
13889
13889
|
_imageStyle() {
|
13890
13890
|
// 默认返回的样式对象
|
13891
13891
|
const style = {};
|
13892
|
+
if (!this.imageStyle) {
|
13893
|
+
return style
|
13894
|
+
}
|
13892
13895
|
// 检查是否存在左右外边距并且没有设置宽度
|
13893
13896
|
if (typeof this.imageStyle.marginLeft !== 'undefined' && this.imageStyle.width === undefined) {
|
13894
13897
|
style.width = `calc(100% - ${this.imageStyle.marginLeft})`;
|
@@ -13937,6 +13940,13 @@ const _sfc_main$H = {
|
|
13937
13940
|
height: `${(endY - startY) * this.moduleSize}px`,
|
13938
13941
|
top: `${startY * this.moduleSize}px`,
|
13939
13942
|
left: `${startX * this.moduleSize}px`,
|
13943
|
+
position: 'absolute',
|
13944
|
+
backgroundColor: '#fff',
|
13945
|
+
border: '1px solid #ebedf0',
|
13946
|
+
textAlign: 'center',
|
13947
|
+
color: '#7d7e80',
|
13948
|
+
cursor: 'pointer',
|
13949
|
+
boxSizing: 'border-box',
|
13940
13950
|
}
|
13941
13951
|
},
|
13942
13952
|
getReferenceSize(cube) {
|
@@ -17430,7 +17440,6 @@ var _sfc_main$l = /* @__PURE__ */ defineComponent({
|
|
17430
17440
|
watch(
|
17431
17441
|
() => emitData,
|
17432
17442
|
() => {
|
17433
|
-
console.log("emitData", emitData.value);
|
17434
17443
|
emit("update:modelValue", emitData.value);
|
17435
17444
|
},
|
17436
17445
|
{
|
package/dist/web-types.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DkCubeImageInput.vue2.mjs","sources":["../../../../../src/page-diy/src/components/forms/DkCubeImageInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n name: 'DkCubeImageInput',\n});\n</script>\n<template>\n <div>\n <el-form :model=\"form\" label-width=\"auto\" style=\"max-width: 400px\" label-position=\"left\">\n <el-form-item label=\"魔方密度\">\n <el-select v-model=\"form.density\" @change=\"onChangeDensity()\">\n <el-option label=\"4x4\" :value=\"4\" />\n <el-option label=\"5x5\" :value=\"5\" />\n <el-option label=\"6x6\" :value=\"6\" />\n </el-select>\n </el-form-item>\n <el-form-item style=\"margin: 10px 0\">\n <div ref=\"designCube\" class=\"design-cube\">\n <ul v-for=\"col in form.density\" :key=\"col\" class=\"cube-col\">\n <li\n v-for=\"item in form.density\"\n :key=\"item\"\n :class=\"{\n 'item-selected': selectionStart?.x === col && selectionStart?.y === item,\n 'item-selecting': checkSelecting(col, item),\n }\"\n class=\"cube-item\"\n :data-x=\"col\"\n :data-y=\"item\"\n :style=\"itemStyle\"\n @click=\"onSelectCube(col, item)\"\n @mouseenter=\"onMousemove(col, item)\"\n >\n +\n </li>\n </ul>\n <!-- 已选中区域的覆盖层 -->\n <div\n v-for=\"(cube, index) in selectedCubes\"\n :key=\"index\"\n class=\"selected-area\"\n :class=\"{ 'selected-area-choose': selectedAreaIndex === index }\"\n :style=\"getSelectedAreaStyle(cube)\"\n @click=\"onClickSelectedArea(index)\"\n >\n <dk-icon icon=\"Close\" class=\"cube-close\" @click=\"onDeleteCubes(index)\"></dk-icon>\n <div v-if=\"!cube.image\">\n <div class=\"cube-selected-text\">{{ getReferenceSize(cube) }}</div>\n </div>\n <div v-else>\n <img :src=\"cube.image\" alt=\"\" />\n </div>\n </div>\n </div>\n </el-form-item>\n <div v-if=\"selectedCubes[selectedAreaIndex]\">\n <el-form-item label=\"选择图片\">\n <dk-image-input v-model=\"selectedCubes[selectedAreaIndex].image\"></dk-image-input>\n </el-form-item>\n <el-form-item label=\"点击效果\" style=\"padding: 10px 0\">\n <el-radio-group v-model=\"selectedCubes[selectedAreaIndex].clickType\">\n <el-radio value=\"path\">跳转页面</el-radio>\n <el-radio value=\"event\">触发事件</el-radio>\n </el-radio-group>\n </el-form-item>\n <el-form-item v-if=\"selectedCubes[selectedAreaIndex].clickType === 'path'\" label=\"地址\" style=\"padding: 10px 0\">\n <dk-url-input v-model=\"selectedCubes[selectedAreaIndex].path\"> </dk-url-input>\n </el-form-item>\n <el-form-item v-if=\"selectedCubes[selectedAreaIndex].clickType === 'event'\" label=\"事件\">\n <DkEventSelectInput v-model=\"selectedCubes[selectedAreaIndex].event\"> </DkEventSelectInput>\n </el-form-item>\n </div>\n </el-form>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, reactive, watch, ref, onMounted } from 'vue'\nimport { useElementSize } from '@vueuse/core'\nimport DkEventSelectInput from './DkEventSelectInput.vue'\n\n\nconst designCube: any = ref(null)\nconst { width } = useElementSize(designCube) // 当前组件宽度\n\nconst props = defineProps({\n modelValue: {\n default: () => {\n return {}\n },\n type: Object,\n },\n imageStyle: {\n default: () => {\n return {}\n },\n type: Object,\n },\n})\n\nconst form: any = reactive({\n density: 4,\n})\n\nconst itemStyle = computed(() => {\n const size = width.value / form.density\n return {\n width: size + 'px',\n height: size + 'px',\n }\n})\n\n// 定义选择区域的起点和终点\nconst selectionStart = ref<{ x: number; y: number } | null>(null)\nconst selectionEnd = ref<{ x: number; y: number } | null>(null)\nconst selectedCubes: any = ref([])\n\nconst emit = defineEmits(['input', 'update:modelValue'])\nconst emitData = computed(() => {\n return {\n density: form.density,\n selectedCubes: selectedCubes.value,\n }\n})\n\nconst onChangeDensity = () => {\n selectedCubes.value = []\n selectionStart.value = null\n}\n\nwatch(\n () => emitData,\n () => {\n console.log('emitData', emitData.value)\n emit('update:modelValue', emitData.value)\n },\n {\n deep: true,\n }\n)\nwatch(\n () => props.modelValue,\n () => {\n form.density = props.modelValue.density\n selectedCubes.value = props.modelValue.selectedCubes\n }\n)\nonMounted(() => {\n form.density = props.modelValue.density || 4\n selectedCubes.value = props.modelValue.selectedCubes || []\n})\n// 检查给定坐标是否在选择区域内或已被选中\nconst checkSelecting = (x: number, y: number) => {\n // 检查是否为已选中的矩形区域内的方块\n const isSelected = selectedCubes.value.some((cube: any) => {\n const startX = Math.min(cube.start.x, cube.end.x)\n const endX = Math.max(cube.start.x, cube.end.x)\n const startY = Math.min(cube.start.y, cube.end.y)\n const endY = Math.max(cube.start.y, cube.end.y)\n return x >= startX && x <= endX && y >= startY && y <= endY\n })\n\n if (isSelected) return false // 如果是已选中的区域,则不考虑为当前选择\n\n // 如果没有正在进行的选择操作,则仅返回是否已选中\n if (!selectionStart.value || !selectionEnd.value) return false\n\n // 计算当前拖动选择区域的边界\n const startX = Math.min(selectionStart.value.x, selectionEnd.value.x)\n const endX = Math.max(selectionStart.value.x, selectionEnd.value.x)\n const startY = Math.min(selectionStart.value.y, selectionEnd.value.y)\n const endY = Math.max(selectionStart.value.y, selectionEnd.value.y)\n\n // 检查新选择区域是否与任何已选中的区域重叠\n const overlapsWithSelected = selectedCubes.value.some((cube: any) => {\n const selStartX = Math.min(cube.start.x, cube.end.x)\n const selEndX = Math.max(cube.start.x, cube.end.x)\n const selStartY = Math.min(cube.start.y, cube.end.y)\n const selEndY = Math.max(cube.start.y, cube.end.y)\n\n // 检查是否有重叠\n return !(endX < selStartX || startX > selEndX || endY < selStartY || startY > selEndY)\n })\n\n if (overlapsWithSelected) return false // 如果有重叠,则不考虑为当前选择\n\n // 检查坐标是否位于当前拖动的选择区域内\n return x >= startX && x <= endX && y >= startY && y <= endY\n}\n\nconst moduleSize = computed(() => width.value / form.density)\n\nconst getSelectedAreaStyle = (cube: { start: { x: number; y: number }; end: { x: number; y: number } }) => {\n const startX = Math.min(cube.start.x, cube.end.x) - 1\n const endX = Math.max(cube.start.x, cube.end.x)\n const startY = Math.min(cube.start.y, cube.end.y) - 1\n const endY = Math.max(cube.start.y, cube.end.y)\n\n return {\n width: `${(endX - startX) * moduleSize.value}px`,\n height: `${(endY - startY) * moduleSize.value}px`,\n top: `${startY * moduleSize.value}px`,\n left: `${startX * moduleSize.value}px`,\n }\n}\n\nconst referenceWidth = 750 // 固定宽度\n\n// 计算参考尺寸的方法\nconst getReferenceSize = (cube: { start: { x: number; y: number }; end: { x: number; y: number } }) => {\n const startX = Math.min(cube.start.x, cube.end.x)\n const endX = Math.max(cube.start.x, cube.end.x)\n const startY = Math.min(cube.start.y, cube.end.y)\n const endY = Math.max(cube.start.y, cube.end.y)\n\n // 模块宽度和高度(假设魔方网格是正方形)\n const moduleWidth = referenceWidth / form.density\n\n // 如果选择的是单个模块,则宽度和高度都应该是单个模块的尺寸\n const width = (endX - startX + 1) * moduleWidth\n const height = (endY - startY + 1) * moduleWidth\n\n return `${Math.round(width)} x ${Math.round(height)} 像素`\n}\n\nconst selectedAreaIndex = ref(-1)\nconst onClickSelectedArea = (k: number) => {\n selectedAreaIndex.value = k\n}\n\nconst onDeleteCubes = (k: number) => {\n selectedAreaIndex.value = -1\n selectedCubes.value.splice(k, 1)\n}\n\nconst onSelectCube = (x: number, y: number) => {\n if (selectionStart.value == null) {\n selectionStart.value = {\n x,\n y,\n }\n } else if (checkSelecting(x, y)) {\n selectedCubes.value.push({\n start: selectionStart.value,\n end: { x, y },\n path: '',\n clickType: 'path',\n })\n selectionStart.value = null\n selectedAreaIndex.value = selectedCubes.value.length - 1\n }\n}\n\nconst onMousemove = (x: number, y: number) => {\n selectionEnd.value = { x, y }\n}\n</script>\n\n<style scoped lang=\"scss\"></style>\n"],"names":["__MACROS_defineComponent","startX","endX","startY","endY","width"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"DkCubeImageInput.vue2.mjs","sources":["../../../../../src/page-diy/src/components/forms/DkCubeImageInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n name: 'DkCubeImageInput',\n});\n</script>\n<template>\n <div>\n <el-form :model=\"form\" label-width=\"auto\" style=\"max-width: 400px\" label-position=\"left\">\n <el-form-item label=\"魔方密度\">\n <el-select v-model=\"form.density\" @change=\"onChangeDensity()\">\n <el-option label=\"4x4\" :value=\"4\" />\n <el-option label=\"5x5\" :value=\"5\" />\n <el-option label=\"6x6\" :value=\"6\" />\n </el-select>\n </el-form-item>\n <el-form-item style=\"margin: 10px 0\">\n <div ref=\"designCube\" class=\"design-cube\">\n <ul v-for=\"col in form.density\" :key=\"col\" class=\"cube-col\">\n <li\n v-for=\"item in form.density\"\n :key=\"item\"\n :class=\"{\n 'item-selected': selectionStart?.x === col && selectionStart?.y === item,\n 'item-selecting': checkSelecting(col, item),\n }\"\n class=\"cube-item\"\n :data-x=\"col\"\n :data-y=\"item\"\n :style=\"itemStyle\"\n @click=\"onSelectCube(col, item)\"\n @mouseenter=\"onMousemove(col, item)\"\n >\n +\n </li>\n </ul>\n <!-- 已选中区域的覆盖层 -->\n <div\n v-for=\"(cube, index) in selectedCubes\"\n :key=\"index\"\n class=\"selected-area\"\n :class=\"{ 'selected-area-choose': selectedAreaIndex === index }\"\n :style=\"getSelectedAreaStyle(cube)\"\n @click=\"onClickSelectedArea(index)\"\n >\n <dk-icon icon=\"Close\" class=\"cube-close\" @click=\"onDeleteCubes(index)\"></dk-icon>\n <div v-if=\"!cube.image\">\n <div class=\"cube-selected-text\">{{ getReferenceSize(cube) }}</div>\n </div>\n <div v-else>\n <img :src=\"cube.image\" alt=\"\" />\n </div>\n </div>\n </div>\n </el-form-item>\n <div v-if=\"selectedCubes[selectedAreaIndex]\">\n <el-form-item label=\"选择图片\">\n <dk-image-input v-model=\"selectedCubes[selectedAreaIndex].image\"></dk-image-input>\n </el-form-item>\n <el-form-item label=\"点击效果\" style=\"padding: 10px 0\">\n <el-radio-group v-model=\"selectedCubes[selectedAreaIndex].clickType\">\n <el-radio value=\"path\">跳转页面</el-radio>\n <el-radio value=\"event\">触发事件</el-radio>\n </el-radio-group>\n </el-form-item>\n <el-form-item v-if=\"selectedCubes[selectedAreaIndex].clickType === 'path'\" label=\"地址\" style=\"padding: 10px 0\">\n <dk-url-input v-model=\"selectedCubes[selectedAreaIndex].path\"> </dk-url-input>\n </el-form-item>\n <el-form-item v-if=\"selectedCubes[selectedAreaIndex].clickType === 'event'\" label=\"事件\">\n <DkEventSelectInput v-model=\"selectedCubes[selectedAreaIndex].event\"> </DkEventSelectInput>\n </el-form-item>\n </div>\n </el-form>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, reactive, watch, ref, onMounted } from 'vue'\nimport { useElementSize } from '@vueuse/core'\nimport DkEventSelectInput from './DkEventSelectInput.vue'\n\n\nconst designCube: any = ref(null)\nconst { width } = useElementSize(designCube) // 当前组件宽度\n\nconst props = defineProps({\n modelValue: {\n default: () => {\n return {}\n },\n type: Object,\n },\n imageStyle: {\n default: () => {\n return {}\n },\n type: Object,\n },\n})\n\nconst form: any = reactive({\n density: 4,\n})\n\nconst itemStyle = computed(() => {\n const size = width.value / form.density\n return {\n width: size + 'px',\n height: size + 'px',\n }\n})\n\n// 定义选择区域的起点和终点\nconst selectionStart = ref<{ x: number; y: number } | null>(null)\nconst selectionEnd = ref<{ x: number; y: number } | null>(null)\nconst selectedCubes: any = ref([])\n\nconst emit = defineEmits(['input', 'update:modelValue'])\nconst emitData = computed(() => {\n return {\n density: form.density,\n selectedCubes: selectedCubes.value,\n }\n})\n\nconst onChangeDensity = () => {\n selectedCubes.value = []\n selectionStart.value = null\n}\n\nwatch(\n () => emitData,\n () => {\n emit('update:modelValue', emitData.value)\n },\n {\n deep: true,\n }\n)\nwatch(\n () => props.modelValue,\n () => {\n form.density = props.modelValue.density\n selectedCubes.value = props.modelValue.selectedCubes\n }\n)\nonMounted(() => {\n form.density = props.modelValue.density || 4\n selectedCubes.value = props.modelValue.selectedCubes || []\n})\n// 检查给定坐标是否在选择区域内或已被选中\nconst checkSelecting = (x: number, y: number) => {\n // 检查是否为已选中的矩形区域内的方块\n const isSelected = selectedCubes.value.some((cube: any) => {\n const startX = Math.min(cube.start.x, cube.end.x)\n const endX = Math.max(cube.start.x, cube.end.x)\n const startY = Math.min(cube.start.y, cube.end.y)\n const endY = Math.max(cube.start.y, cube.end.y)\n return x >= startX && x <= endX && y >= startY && y <= endY\n })\n\n if (isSelected) return false // 如果是已选中的区域,则不考虑为当前选择\n\n // 如果没有正在进行的选择操作,则仅返回是否已选中\n if (!selectionStart.value || !selectionEnd.value) return false\n\n // 计算当前拖动选择区域的边界\n const startX = Math.min(selectionStart.value.x, selectionEnd.value.x)\n const endX = Math.max(selectionStart.value.x, selectionEnd.value.x)\n const startY = Math.min(selectionStart.value.y, selectionEnd.value.y)\n const endY = Math.max(selectionStart.value.y, selectionEnd.value.y)\n\n // 检查新选择区域是否与任何已选中的区域重叠\n const overlapsWithSelected = selectedCubes.value.some((cube: any) => {\n const selStartX = Math.min(cube.start.x, cube.end.x)\n const selEndX = Math.max(cube.start.x, cube.end.x)\n const selStartY = Math.min(cube.start.y, cube.end.y)\n const selEndY = Math.max(cube.start.y, cube.end.y)\n\n // 检查是否有重叠\n return !(endX < selStartX || startX > selEndX || endY < selStartY || startY > selEndY)\n })\n\n if (overlapsWithSelected) return false // 如果有重叠,则不考虑为当前选择\n\n // 检查坐标是否位于当前拖动的选择区域内\n return x >= startX && x <= endX && y >= startY && y <= endY\n}\n\nconst moduleSize = computed(() => width.value / form.density)\n\nconst getSelectedAreaStyle = (cube: { start: { x: number; y: number }; end: { x: number; y: number } }) => {\n const startX = Math.min(cube.start.x, cube.end.x) - 1\n const endX = Math.max(cube.start.x, cube.end.x)\n const startY = Math.min(cube.start.y, cube.end.y) - 1\n const endY = Math.max(cube.start.y, cube.end.y)\n\n return {\n width: `${(endX - startX) * moduleSize.value}px`,\n height: `${(endY - startY) * moduleSize.value}px`,\n top: `${startY * moduleSize.value}px`,\n left: `${startX * moduleSize.value}px`,\n }\n}\n\nconst referenceWidth = 750 // 固定宽度\n\n// 计算参考尺寸的方法\nconst getReferenceSize = (cube: { start: { x: number; y: number }; end: { x: number; y: number } }) => {\n const startX = Math.min(cube.start.x, cube.end.x)\n const endX = Math.max(cube.start.x, cube.end.x)\n const startY = Math.min(cube.start.y, cube.end.y)\n const endY = Math.max(cube.start.y, cube.end.y)\n\n // 模块宽度和高度(假设魔方网格是正方形)\n const moduleWidth = referenceWidth / form.density\n\n // 如果选择的是单个模块,则宽度和高度都应该是单个模块的尺寸\n const width = (endX - startX + 1) * moduleWidth\n const height = (endY - startY + 1) * moduleWidth\n\n return `${Math.round(width)} x ${Math.round(height)} 像素`\n}\n\nconst selectedAreaIndex = ref(-1)\nconst onClickSelectedArea = (k: number) => {\n selectedAreaIndex.value = k\n}\n\nconst onDeleteCubes = (k: number) => {\n selectedAreaIndex.value = -1\n selectedCubes.value.splice(k, 1)\n}\n\nconst onSelectCube = (x: number, y: number) => {\n if (selectionStart.value == null) {\n selectionStart.value = {\n x,\n y,\n }\n } else if (checkSelecting(x, y)) {\n selectedCubes.value.push({\n start: selectionStart.value,\n end: { x, y },\n path: '',\n clickType: 'path',\n })\n selectionStart.value = null\n selectedAreaIndex.value = selectedCubes.value.length - 1\n }\n}\n\nconst onMousemove = (x: number, y: number) => {\n selectionEnd.value = { x, y }\n}\n</script>\n\n<style scoped lang=\"scss\"></style>\n"],"names":["__MACROS_defineComponent","startX","endX","startY","endY","width"],"mappings":"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"}
|
@@ -8,7 +8,7 @@ var DkMinCubeImage = {
|
|
8
8
|
return {
|
9
9
|
type: name,
|
10
10
|
props: {
|
11
|
-
cubeData: { density:
|
11
|
+
cubeData: { density: 5, selectedCubes: [] }
|
12
12
|
},
|
13
13
|
showStyle: true
|
14
14
|
};
|
@@ -17,8 +17,8 @@ var DkMinCubeImage = {
|
|
17
17
|
return [
|
18
18
|
{
|
19
19
|
type: "switch",
|
20
|
-
field: "
|
21
|
-
title: "\
|
20
|
+
field: "clickActive",
|
21
|
+
title: "\u70B9\u51FB\u6548\u679C",
|
22
22
|
value: false
|
23
23
|
},
|
24
24
|
{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DkMinCubeImage.mjs","sources":["../../../../../../../src/page-diy/src/config/rule/min/common/DkMinCubeImage.js"],"sourcesContent":["const label = '魔方图片'\nconst name = 'DkMinCubeImage'\nexport default {\n icon: 'game-icons:ice-cube',\n label,\n name,\n rule() {\n return {\n type: name,\n props: {\n cubeData: { density:
|
1
|
+
{"version":3,"file":"DkMinCubeImage.mjs","sources":["../../../../../../../src/page-diy/src/config/rule/min/common/DkMinCubeImage.js"],"sourcesContent":["const label = '魔方图片'\nconst name = 'DkMinCubeImage'\nexport default {\n icon: 'game-icons:ice-cube',\n label,\n name,\n rule() {\n return {\n type: name,\n props: {\n cubeData: { density: 5, selectedCubes: [] },\n },\n showStyle: true,\n }\n },\n props() {\n return [\n {\n type: 'switch',\n field: 'clickActive',\n title: '点击效果',\n value: false,\n },\n {\n type: 'DkStyleInput',\n field: 'imageStyle',\n title: '图片样式',\n props: {\n isDrawer: true,\n drawerProps: {\n title: '卡片样式',\n size: '400px',\n zIndex: 100,\n },\n hideComponents: ['DkStyleFontInput', 'DkStyleBackgroundInput'],\n },\n },\n {\n type: 'DkCubeImageInput',\n field: 'cubeData',\n title: '',\n value: { density: 4, selectedCubes: [] },\n },\n ]\n },\n}\n"],"names":[],"mappings":"AAAA,MAAM,KAAQ,GAAA,0BAAA,CAAA;AACd,MAAM,IAAO,GAAA,gBAAA,CAAA;AACb,qBAAe;AAAA,EACb,IAAM,EAAA,qBAAA;AAAA,EACN,KAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAO,GAAA;AACL,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,IAAA;AAAA,MACN,KAAO,EAAA;AAAA,QACL,UAAU,EAAE,OAAA,EAAS,CAAG,EAAA,aAAA,EAAe,EAAG,EAAA;AAAA,OAC5C;AAAA,MACA,SAAW,EAAA,IAAA;AAAA,KACb,CAAA;AAAA,GACF;AAAA,EACA,KAAQ,GAAA;AACN,IAAO,OAAA;AAAA,MACL;AAAA,QACE,IAAM,EAAA,QAAA;AAAA,QACN,KAAO,EAAA,aAAA;AAAA,QACP,KAAO,EAAA,0BAAA;AAAA,QACP,KAAO,EAAA,KAAA;AAAA,OACT;AAAA,MACA;AAAA,QACE,IAAM,EAAA,cAAA;AAAA,QACN,KAAO,EAAA,YAAA;AAAA,QACP,KAAO,EAAA,0BAAA;AAAA,QACP,KAAO,EAAA;AAAA,UACL,QAAU,EAAA,IAAA;AAAA,UACV,WAAa,EAAA;AAAA,YACX,KAAO,EAAA,0BAAA;AAAA,YACP,IAAM,EAAA,OAAA;AAAA,YACN,MAAQ,EAAA,GAAA;AAAA,WACV;AAAA,UACA,cAAA,EAAgB,CAAC,kBAAA,EAAoB,wBAAwB,CAAA;AAAA,SAC/D;AAAA,OACF;AAAA,MACA;AAAA,QACE,IAAM,EAAA,kBAAA;AAAA,QACN,KAAO,EAAA,UAAA;AAAA,QACP,KAAO,EAAA,EAAA;AAAA,QACP,OAAO,EAAE,OAAA,EAAS,CAAG,EAAA,aAAA,EAAe,EAAG,EAAA;AAAA,OACzC;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAA;;;;"}
|
@@ -21,7 +21,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
21
21
|
}, {}, {
|
22
22
|
moduleSize(): number;
|
23
23
|
cubeHeight(): number;
|
24
|
-
_imageStyle():
|
24
|
+
_imageStyle(): {
|
25
25
|
width: string;
|
26
26
|
height: string;
|
27
27
|
};
|
@@ -32,6 +32,13 @@ declare const _default: import("vue").DefineComponent<{
|
|
32
32
|
height: string;
|
33
33
|
top: string;
|
34
34
|
left: string;
|
35
|
+
position: string;
|
36
|
+
backgroundColor: string;
|
37
|
+
border: string;
|
38
|
+
textAlign: string;
|
39
|
+
color: string;
|
40
|
+
cursor: string;
|
41
|
+
boxSizing: string;
|
35
42
|
};
|
36
43
|
getReferenceSize(cube: any): string;
|
37
44
|
}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
@@ -77,6 +77,9 @@ const _sfc_main = {
|
|
77
77
|
_imageStyle() {
|
78
78
|
// 默认返回的样式对象
|
79
79
|
const style = {};
|
80
|
+
if (!this.imageStyle) {
|
81
|
+
return style
|
82
|
+
}
|
80
83
|
// 检查是否存在左右外边距并且没有设置宽度
|
81
84
|
if (typeof this.imageStyle.marginLeft !== 'undefined' && this.imageStyle.width === undefined) {
|
82
85
|
style.width = `calc(100% - ${this.imageStyle.marginLeft})`;
|
@@ -125,6 +128,13 @@ const _sfc_main = {
|
|
125
128
|
height: `${(endY - startY) * this.moduleSize}px`,
|
126
129
|
top: `${startY * this.moduleSize}px`,
|
127
130
|
left: `${startX * this.moduleSize}px`,
|
131
|
+
position: 'absolute',
|
132
|
+
backgroundColor: '#fff',
|
133
|
+
border: '1px solid #ebedf0',
|
134
|
+
textAlign: 'center',
|
135
|
+
color: '#7d7e80',
|
136
|
+
cursor: 'pointer',
|
137
|
+
boxSizing: 'border-box',
|
128
138
|
}
|
129
139
|
},
|
130
140
|
getReferenceSize(cube) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DkMinCubeImage.vue.mjs","sources":["../../../../../src/page-diy/src/views/min/DkMinCubeImage.vue"],"sourcesContent":["<template>\n <div ref=\"cubeContainer\" class=\"dk-min-cube-image\" :style=\"{ height: `${cubeHeight}px` }\">\n <template v-if=\"cubeData.selectedCubes.length > 0\">\n <div\n v-for=\"(cube, index) in cubeData.selectedCubes\"\n :key=\"index\"\n class=\"selected-area\"\n :style=\"getSelectedAreaStyle(cube)\"\n >\n <img\n v-if=\"cube.image\"\n :src=\"cube.image\"\n alt=\"Selected Cube Image\"\n class=\"selected-image\"\n :style=\"_imageStyle\"\n />\n <div v-else class=\"cube-selected-text\">{{ getReferenceSize(cube) }}</div>\n </div>\n </template>\n <div v-else style=\"display: flex; align-items: center; justify-content: center; height: 100%; color: #999\">\n 请点击后在右侧配置魔方图片\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, onMounted, onBeforeUnmount, onUpdated, nextTick } from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nexport default {\n name: 'DkMinCubeImage',\n props: {\n showText: { default: false, type: Boolean },\n imageStyle: { default: () => {}, type: Object },\n cubeData: { default: () => {}, type: Object },\n fit: { default: 'cover', type: String },\n },\n setup(props) {\n const cubeContainer = ref(null)\n const containerWidth = ref(0)\n\n // 使用useResizeObserver来监听cubeContainer尺寸变化\n useResizeObserver(cubeContainer, (entries) => {\n for (const entry of entries) {\n containerWidth.value = entry.contentRect.width\n }\n })\n\n // 更新模块尺寸和其他依赖于containerWidth的计算属性\n const updateModuleSize = () => {\n if (cubeContainer.value) {\n containerWidth.value = cubeContainer.value.offsetWidth\n }\n }\n\n onMounted(() => {\n nextTick(() => {\n updateModuleSize()\n })\n })\n\n onUpdated(() => {\n nextTick(() => {\n updateModuleSize()\n })\n })\n\n // 其他逻辑保持不变...\n\n return {\n cubeContainer,\n containerWidth,\n // 返回其他需要在模板中使用的变量和方法\n }\n },\n data() {\n return {\n // containerWidth: 0,\n }\n },\n computed: {\n moduleSize() {\n // 假设魔方网格是正方形的,所以宽高相同\n return this.containerWidth / this.cubeData.density || 0\n },\n cubeHeight() {\n if (!this.cubeData.selectedCubes || this.cubeData.selectedCubes.length === 0) {\n return this.moduleSize // 如果没有选中的模块,则使用单个模块的高度\n }\n\n let maxY = 0\n\n this.cubeData.selectedCubes.forEach((cube) => {\n const startY = Math.min(cube.start.y, cube.end.y)\n const endY = Math.max(cube.start.y, cube.end.y)\n // 使用最大的 endY + 1 确保包含整个模块\n maxY = Math.max(maxY, endY)\n })\n\n return maxY * this.moduleSize\n },\n _imageStyle() {\n // 默认返回的样式对象\n const style = {}\n // 检查是否存在左右外边距并且没有设置宽度\n if (typeof this.imageStyle.marginLeft !== 'undefined' && this.imageStyle.width === undefined) {\n style.width = `calc(100% - ${this.imageStyle.marginLeft})`\n }\n if (typeof this.imageStyle.marginRight !== 'undefined' && this.imageStyle.width === undefined) {\n // 如果同时存在左右外边距,则都需要考虑\n const totalMargin = parseFloat(this.imageStyle.marginLeft || 0) + parseFloat(this.imageStyle.marginRight || 0)\n style.width = `calc(100% - ${totalMargin}px)`\n }\n\n // 检查是否存在上下外边距并且没有设置高度\n if (typeof this.imageStyle.marginTop !== 'undefined' && this.imageStyle.height === undefined) {\n style.height = `calc(100% - ${this.imageStyle.marginTop})`\n }\n if (typeof this.imageStyle.marginBottom !== 'undefined' && this.imageStyle.height === undefined) {\n // 如果同时存在上下外边距,则都需要考虑\n const totalMargin = parseFloat(this.imageStyle.marginTop || 0) + parseFloat(this.imageStyle.marginBottom || 0)\n style.height = `calc(100% - ${totalMargin}px)`\n }\n\n // 返回最终的样式对象\n return Object.assign({}, this.imageStyle, style)\n },\n },\n mounted() {\n this.updateContainerWidth()\n window.addEventListener('resize', this.updateContainerWidth)\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.updateContainerWidth)\n },\n methods: {\n updateContainerWidth() {\n if (this.$refs.cubeContainer) {\n this.containerWidth = this.$refs.cubeContainer.offsetWidth\n }\n },\n getSelectedAreaStyle(cube) {\n const startX = Math.min(cube.start.x, cube.end.x) - 1\n const endX = Math.max(cube.start.x, cube.end.x)\n const startY = Math.min(cube.start.y, cube.end.y) - 1\n const endY = Math.max(cube.start.y, cube.end.y)\n\n return {\n width: `${(endX - startX) * this.moduleSize}px`,\n height: `${(endY - startY) * this.moduleSize}px`,\n top: `${startY * this.moduleSize}px`,\n left: `${startX * this.moduleSize}px`,\n }\n },\n getReferenceSize(cube) {\n const startX = Math.min(cube.start.x, cube.end.x)\n const endX = Math.max(cube.start.x, cube.end.x)\n const startY = Math.min(cube.start.y, cube.end.y)\n const endY = Math.max(cube.start.y, cube.end.y)\n\n const width = (endX - startX + 1) * this.moduleSize\n const height = (endY - startY + 1) * this.moduleSize\n\n return `${Math.round(width)} x ${Math.round(height)} 像素`\n },\n },\n}\n</script>\n"],"names":["_createElementBlock","_openBlock","_Fragment","_normalizeStyle","_toDisplayString"],"mappings":";;;;AA4BA,MAAK,SAAU,GAAA;AACb,EAAA,IAAI,EAAE,gBAAgB;AACtB,EAAA,KAAK,EAAE;AACL,IAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS;AAC3C,IAAA,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ;AAC/C,IAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ;AAC7C,IAAA,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ;GACxC;EACD,KAAK,CAAC,KAAK,EAAE;IACX,MAAM,aAAY,GAAI,GAAG,CAAC,IAAI,EAAA;IAC9B,MAAM,cAAa,GAAI,GAAG,CAAC,CAAC,EAAA;;AAE5B;AACA,IAAA,iBAAiB,CAAC,aAAa,EAAE,CAAC,OAAO,KAAK;MAC5C,KAAK,MAAM,KAAM,IAAG,OAAO,EAAE;AAC3B,QAAA,cAAc,CAAC,KAAM,GAAE,KAAK,CAAC,WAAW,CAAC,MAAI;AAC/C,OAAA;KACD,EAAA;;AAED;IACA,MAAM,mBAAmB,MAAM;MAC7B,IAAI,aAAa,CAAC,KAAK,EAAE;QACvB,cAAc,CAAC,KAAM,GAAE,aAAa,CAAC,KAAK,CAAC,YAAU;AACvD,OAAA;AACF,MAAA;;AAEA,IAAA,SAAS,CAAC,MAAM;MACd,QAAQ,CAAC,MAAM;AACb,QAAA,gBAAgB,GAAC;OAClB,EAAA;KACF,EAAA;;AAED,IAAA,SAAS,CAAC,MAAM;MACd,QAAQ,CAAC,MAAM;AACb,QAAA,gBAAgB,GAAC;OAClB,EAAA;KACF,EAAA;;;;AAID,IAAA,OAAO;MACL,aAAa;AACb,MAAA,cAAc;AACd;AACF,KAAA;GACD;AACD,EAAA,IAAI,GAAG;AACL,IAAA,OAAO;AACL;AACF,KAAA;GACD;AACD,EAAA,QAAQ,EAAE;IACR,UAAU,GAAG;AACX;MACA,OAAO,IAAI,CAAC,iBAAiB,IAAI,CAAC,QAAQ,CAAC,OAAQ,IAAG,CAAA;KACvD;IACD,UAAU,GAAG;AACX,MAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAY,IAAK,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAO,KAAI,CAAC,EAAE;AAC5E,QAAA,OAAO,IAAI,CAAC,UAAS;AACvB,OAAA;;AAEA,MAAA,IAAI,OAAO,EAAA;;AAEX,MAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC5C,QAAA,MAAM,SAAS,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAA;AAChD,QAAA,MAAM,IAAK,GAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAA;AAC9C;QACA,IAAK,GAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAA;OAC3B,EAAA;;MAED,OAAO,IAAG,GAAI,IAAI,CAAC,UAAS;KAC7B;IACD,WAAW,GAAG;;MAEZ,MAAM,KAAM,GAAE,GAAC;AACf;AACA,MAAA,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,UAAW,KAAI,WAAY,IAAG,IAAI,CAAC,UAAU,CAAC,KAAI,KAAM,SAAS,EAAE;QAC5F,KAAK,CAAC,KAAM,GAAE,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAA;AAC3D,OAAA;AACA,MAAA,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,WAAY,KAAI,WAAY,IAAG,IAAI,CAAC,UAAU,CAAC,KAAI,KAAM,SAAS,EAAE;AAC7F;QACA,MAAM,WAAY,GAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAE,GAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,WAAU,IAAK,CAAC,EAAA;AAC7G,QAAA,KAAK,CAAC,KAAI,GAAI,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,EAAA;AAC9C,OAAA;;AAEA;AACA,MAAA,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,eAAe,IAAI,CAAC,UAAU,CAAC,MAAK,KAAM,SAAS,EAAE;QAC5F,KAAK,CAAC,MAAK,GAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAA;AAC3D,OAAA;AACA,MAAA,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,YAAa,KAAI,WAAY,IAAG,IAAI,CAAC,UAAU,CAAC,WAAW,SAAS,EAAE;AAC/F;QACA,MAAM,WAAY,GAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAQ,IAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,YAAW,IAAK,CAAC,EAAA;AAC7G,QAAA,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,EAAA;AAC/C,OAAA;;;AAGA,MAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAA;KAChD;GACF;AACD,EAAA,OAAO,GAAG;IACR,IAAI,CAAC,oBAAoB,GAAC;IAC1B,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EAAA;GAC5D;AACD,EAAA,aAAa,GAAG;IACd,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EAAA;GAC/D;AACD,EAAA,OAAO,EAAE;IACP,oBAAoB,GAAG;MACrB,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;QAC5B,IAAI,CAAC,cAAe,GAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAU;AAC3D,OAAA;KACD;IACD,oBAAoB,CAAC,IAAI,EAAE;MACzB,MAAM,MAAK,GAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAA;AACpD,MAAA,MAAM,IAAK,GAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAA;MAC9C,MAAM,MAAK,GAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAA;AACpD,MAAA,MAAM,IAAK,GAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAA;;AAE9C,MAAA,OAAO;AACL,QAAA,KAAK,EAAE,CAAC,EAAE,CAAC,IAAK,GAAE,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AAC/C,QAAA,MAAM,EAAE,CAAC,EAAE,CAAC,IAAG,GAAI,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AAChD,QAAA,GAAG,EAAE,CAAC,EAAE,MAAK,GAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AACpC,QAAA,IAAI,EAAE,CAAC,EAAE,MAAK,GAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AACvC,OAAA;KACD;IACD,gBAAgB,CAAC,IAAI,EAAE;AACrB,MAAA,MAAM,SAAS,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAA;AAChD,MAAA,MAAM,IAAK,GAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAA;AAC9C,MAAA,MAAM,SAAS,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAA;AAChD,MAAA,MAAM,IAAK,GAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAA;;AAE9C,MAAA,MAAM,KAAM,GAAE,CAAC,IAAK,GAAE,SAAS,CAAC,IAAI,IAAI,CAAC,WAAS;AAClD,MAAA,MAAM,MAAO,GAAE,CAAC,IAAK,GAAE,SAAS,CAAC,IAAI,IAAI,CAAC,WAAS;;MAEnD,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAE,GAAE,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAE,GAAE,CAAA;KACxD;GACF;AACH,EAAA;;;;;AArJoB,EAAA,KAAK,EAAC,oBAAoB;;;;AAG9B,EAAA,KAA8F,EAA9F,CAA8F,SAAA,CAAA,MAAA,CAAA,aAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,OAAA,CAAA,MAAA,CAAA;;;;uBAlB5GA,kBAqBM,CAAA,KAAA,EAAA;AArBD,IAAA,GAAG,EAAC,eAAe;AAAC,IAAA,KAAK,EAAC,mBAAmB;AAAE,IAAA,KAAK,8BAAe,QAAU,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;KAChE,MAAQ,CAAA,QAAA,CAAC,aAAa,CAAC,MAAM,GAAA,CAAA;AAC3C,SAAAC,SAAA,CAAA,IAAA,CAAA,EAAAD,kBAAA,CAcME,iCAboB,MAAQ,CAAA,QAAA,CAAC,aAAa,EAAtC,CAAA,IAAI,EAAE,KAAK,KAAA;+BADrBF,kBAcM,CAAA,KAAA,EAAA;AAZH,YAAA,GAAG,EAAE,KAAK;AACX,YAAA,KAAK,EAAC,eAAe;YACpB,KAAK,EAAAG,cAAA,CAAE,QAAoB,CAAA,oBAAA,CAAC,IAAI,CAAA,CAAA;;AAGzB,YAAA,CAAA,IAAI,CAAC,KAAK;8BADlBH,kBAME,CAAA,KAAA,EAAA;;kBAJC,GAAG,EAAE,IAAI,CAAC,KAAK;AAChB,kBAAA,GAAG,EAAC,qBAAqB;AACzB,kBAAA,KAAK,EAAC,gBAAgB;AACrB,kBAAA,KAAK,iBAAE,QAAW,CAAA,WAAA,CAAA;;AAErB,iBAAAC,SAAA,EAAA,EAAAD,kBAAA,CAAyE,KAAzE,EAAA,UAAyE,EAA/BI,eAAA,CAAA,QAAA,CAAA,gBAAgB,CAAC,IAAI,CAAA,CAAA,EAAA,CAAA,YAAA,CAAA;;;sBAGnEJ,kBAEM,CAAA,KAAA,EAFN,UAEM,EAFqG,iBAE3G,CAAA,CAAA;;;;;;;"}
|
1
|
+
{"version":3,"file":"DkMinCubeImage.vue.mjs","sources":["../../../../../src/page-diy/src/views/min/DkMinCubeImage.vue"],"sourcesContent":["<template>\n <div ref=\"cubeContainer\" class=\"dk-min-cube-image\" :style=\"{ height: `${cubeHeight}px` }\">\n <template v-if=\"cubeData.selectedCubes.length > 0\">\n <div\n v-for=\"(cube, index) in cubeData.selectedCubes\"\n :key=\"index\"\n class=\"selected-area\"\n :style=\"getSelectedAreaStyle(cube)\"\n >\n <img\n v-if=\"cube.image\"\n :src=\"cube.image\"\n alt=\"Selected Cube Image\"\n class=\"selected-image\"\n :style=\"_imageStyle\"\n />\n <div v-else class=\"cube-selected-text\">{{ getReferenceSize(cube) }}</div>\n </div>\n </template>\n <div v-else style=\"display: flex; align-items: center; justify-content: center; height: 100%; color: #999\">\n 请点击后在右侧配置魔方图片\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, onMounted, onBeforeUnmount, onUpdated, nextTick } from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nexport default {\n name: 'DkMinCubeImage',\n props: {\n showText: { default: false, type: Boolean },\n imageStyle: { default: () => {}, type: Object },\n cubeData: { default: () => {}, type: Object },\n fit: { default: 'cover', type: String },\n },\n setup(props) {\n const cubeContainer = ref(null)\n const containerWidth = ref(0)\n\n // 使用useResizeObserver来监听cubeContainer尺寸变化\n useResizeObserver(cubeContainer, (entries) => {\n for (const entry of entries) {\n containerWidth.value = entry.contentRect.width\n }\n })\n\n // 更新模块尺寸和其他依赖于containerWidth的计算属性\n const updateModuleSize = () => {\n if (cubeContainer.value) {\n containerWidth.value = cubeContainer.value.offsetWidth\n }\n }\n\n onMounted(() => {\n nextTick(() => {\n updateModuleSize()\n })\n })\n\n onUpdated(() => {\n nextTick(() => {\n updateModuleSize()\n })\n })\n\n // 其他逻辑保持不变...\n\n return {\n cubeContainer,\n containerWidth,\n // 返回其他需要在模板中使用的变量和方法\n }\n },\n data() {\n return {\n // containerWidth: 0,\n }\n },\n computed: {\n moduleSize() {\n // 假设魔方网格是正方形的,所以宽高相同\n return this.containerWidth / this.cubeData.density || 0\n },\n cubeHeight() {\n if (!this.cubeData.selectedCubes || this.cubeData.selectedCubes.length === 0) {\n return this.moduleSize // 如果没有选中的模块,则使用单个模块的高度\n }\n\n let maxY = 0\n\n this.cubeData.selectedCubes.forEach((cube) => {\n const startY = Math.min(cube.start.y, cube.end.y)\n const endY = Math.max(cube.start.y, cube.end.y)\n // 使用最大的 endY + 1 确保包含整个模块\n maxY = Math.max(maxY, endY)\n })\n\n return maxY * this.moduleSize\n },\n _imageStyle() {\n // 默认返回的样式对象\n const style = {}\n if (!this.imageStyle) {\n return style\n }\n // 检查是否存在左右外边距并且没有设置宽度\n if (typeof this.imageStyle.marginLeft !== 'undefined' && this.imageStyle.width === undefined) {\n style.width = `calc(100% - ${this.imageStyle.marginLeft})`\n }\n if (typeof this.imageStyle.marginRight !== 'undefined' && this.imageStyle.width === undefined) {\n // 如果同时存在左右外边距,则都需要考虑\n const totalMargin = parseFloat(this.imageStyle.marginLeft || 0) + parseFloat(this.imageStyle.marginRight || 0)\n style.width = `calc(100% - ${totalMargin}px)`\n }\n\n // 检查是否存在上下外边距并且没有设置高度\n if (typeof this.imageStyle.marginTop !== 'undefined' && this.imageStyle.height === undefined) {\n style.height = `calc(100% - ${this.imageStyle.marginTop})`\n }\n if (typeof this.imageStyle.marginBottom !== 'undefined' && this.imageStyle.height === undefined) {\n // 如果同时存在上下外边距,则都需要考虑\n const totalMargin = parseFloat(this.imageStyle.marginTop || 0) + parseFloat(this.imageStyle.marginBottom || 0)\n style.height = `calc(100% - ${totalMargin}px)`\n }\n\n // 返回最终的样式对象\n return Object.assign({}, this.imageStyle, style)\n },\n },\n mounted() {\n this.updateContainerWidth()\n window.addEventListener('resize', this.updateContainerWidth)\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.updateContainerWidth)\n },\n methods: {\n updateContainerWidth() {\n if (this.$refs.cubeContainer) {\n this.containerWidth = this.$refs.cubeContainer.offsetWidth\n }\n },\n getSelectedAreaStyle(cube) {\n const startX = Math.min(cube.start.x, cube.end.x) - 1\n const endX = Math.max(cube.start.x, cube.end.x)\n const startY = Math.min(cube.start.y, cube.end.y) - 1\n const endY = Math.max(cube.start.y, cube.end.y)\n\n return {\n width: `${(endX - startX) * this.moduleSize}px`,\n height: `${(endY - startY) * this.moduleSize}px`,\n top: `${startY * this.moduleSize}px`,\n left: `${startX * this.moduleSize}px`,\n position: 'absolute',\n backgroundColor: '#fff',\n border: '1px solid #ebedf0',\n textAlign: 'center',\n color: '#7d7e80',\n cursor: 'pointer',\n boxSizing: 'border-box',\n }\n },\n getReferenceSize(cube) {\n const startX = Math.min(cube.start.x, cube.end.x)\n const endX = Math.max(cube.start.x, cube.end.x)\n const startY = Math.min(cube.start.y, cube.end.y)\n const endY = Math.max(cube.start.y, cube.end.y)\n\n const width = (endX - startX + 1) * this.moduleSize\n const height = (endY - startY + 1) * this.moduleSize\n\n return `${Math.round(width)} x ${Math.round(height)} 像素`\n },\n },\n}\n</script>\n"],"names":["_createElementBlock","_openBlock","_Fragment","_normalizeStyle","_toDisplayString"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
@charset "UTF-8";.dk-page-diy{min-width:1000px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.dk-page-diy ._fc-l,.dk-page-diy ._fc-m,.dk-page-diy ._fc-r{background:#fff;box-sizing:border-box;height:calc(100vh - 180px);position:relative}.dk-page-diy ._fc-l::-webkit-scrollbar,.dk-page-diy ._fc-m::-webkit-scrollbar,.dk-page-diy ._fc-r::-webkit-scrollbar{display:none}.dk-page-diy ._fc-l .el-tabs__item,.dk-page-diy ._fc-m .el-tabs__item,.dk-page-diy ._fc-r .el-tabs__item{font-weight:800}.dk-page-diy ._fc-l .el-tabs__nav-wrap,.dk-page-diy ._fc-m .el-tabs__nav-wrap,.dk-page-diy ._fc-r .el-tabs__nav-wrap{padding:0 20px}.dk-page-diy ._fc-l{overflow:inherit!important;display:flex;flex:0 0 auto;flex-direction:column;top:0}.dk-page-diy ._fc-l ._fc-l-group{padding:0 12px}.dk-page-diy ._fc-l ._fc-l-title{font-weight:600;font-size:14px;margin:18px 0 5px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.dk-page-diy ._fc-l ._fc-l-item{display:inline-block;background:#fff;color:#000;min-width:70px;width:80px;height:70px;line-height:1;text-align:center;transition:all .2s ease;cursor:move;border-radius:6px;position:relative}.dk-page-diy ._fc-l ._fc-l-item.not-drag{cursor:not-allowed;background:#f6f6f6!important;color:#000!important}.dk-page-diy ._fc-l ._fc-l-item ._fc-l-name{font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.dk-page-diy ._fc-l ._fc-l-item ._fc-l-count{background-color:#409eff;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff;position:absolute;top:5px;right:20px;z-index:1;transform:translateY(-50%) translateX(100%)}.dk-page-diy ._fc-l ._fc-l-item ._fc-l-icon{padding:10px 5px 12px}.dk-page-diy ._fc-l ._fc-l-item:hover{background:#409eff;color:#fff}.dk-page-diy ._fc-l.item-box ._fc-l-groups{height:calc(100vh - 220px);overflow:auto;flex:1 1 0%}.dk-page-diy ._fc-l.item-box ._fc-l-groups::-webkit-scrollbar{display:none}.dk-page-diy ._fc-l.item-box ._fc-l-groups ._fc-l-items ._fc-l-item{margin:5px;width:76px;box-shadow:1px 1px 4px rgba(0,0,0,.1019607843)}.dk-page-diy ._fc-l:hover .aside-toggle{display:block}.dk-page-diy ._fc-l .children-list{width:100%;position:relative;background:#fff;bottom:0;overflow:auto;z-index:2;height:calc(100vh - 240px)}.dk-page-diy ._fc-l .children-list .el-tree-node-content{width:100%;display:flex;align-items:center;justify-content:space-between}.dk-page-diy ._fc-l .children-list .el-tree-node-content .close-rule{position:absolute;right:0;padding:2px 10px;box-sizing:initial}.dk-page-diy ._fc-l .children-list .el-tree-node-content .close-rule:hover{color:#409eff!important}.dk-page-diy ._fc-l .children-list .el-tree-node-content:hover .close-rule{display:inline-flex}.dk-page-diy ._fc-l .children-list .el-tree-node-content ._fc-tree-node{display:flex;align-items:center;justify-content:space-between;cursor:move;height:26px;line-height:26px;padding-right:5px}.dk-page-diy ._fc-l .children-list .el-tree-node-content ._fc-tree-node ._fc-tree-icon{margin-right:5px}.dk-page-diy ._fc-l .children-list .aside-resizer{width:100%;height:4px;margin:-2px 0;cursor:n-resize;z-index:3}.dk-page-diy ._fc-l .children-list::-webkit-scrollbar{display:none}.dk-page-diy ._fc-m{background:#ebeced;width:100%}.dk-page-diy ._fc-m ._fc-m-tools{background:#fff;height:40px;align-items:center;display:flex;justify-content:flex-end;border:1px solid #ececec;border-top:0 none}.dk-page-diy ._fc-m ._fc-m-drag{overflow:auto;box-sizing:border-box}.dk-page-diy ._fc-m .form-create ._fc-l-item{background:#409eff;width:100%;height:30px;overflow:hidden;transition:all .3s ease;display:flex;justify-content:center;align-items:center;color:#fff}.dk-page-diy ._fc-m .form-create ._fc-l-item.sortable-chosen ._fc-l-count,.dk-page-diy ._fc-m .form-create ._fc-l-item.sortable-chosen ._fc-l-icon,.dk-page-diy ._fc-m .form-create ._fc-l-item.sortable-chosen ._fc-l-name{display:none}.dk-page-diy ._fc-m .form-create ._fc-l-item.sortable-chosen:after{content:"放在这里";color:#fff;font-size:14px}.dk-page-diy ._fc-m .form-create ._fc-l-item ._fc-l-icon{margin:0 10px}.dk-page-diy ._fc-r{width:calc(100% - 800px);overflow:inherit!important}.dk-page-diy ._fc-r .el-tabs__nav{width:100%}.dk-page-diy ._fc-r .el-tabs__item{width:33%;text-align:center}.dk-page-diy ._fc-r .el-tabs__content{padding:0 20px;height:calc(100vh - 235px);overflow:auto}.dk-page-diy ._fc-r .el-tabs__content::-webkit-scrollbar{width:5px}.dk-page-diy ._fc-r .el-tabs__nav-wrap::after{height:1px;background-color:#ececec}.dk-page-diy ._fc-r ._fc-r-tabs{display:flex;cursor:pointer;padding:0;border-bottom:1px solid #ececec}.dk-page-diy ._fc-r ._fc-r-tab{height:40px;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:600;color:#303133;position:relative;flex:1;text-align:center}.dk-page-diy ._fc-r ._fc-r-tab.active{color:#409eff;border-bottom:2px solid #409eff}.dk-page-diy ._fc-r:hover .aside-toggle{display:block}.dk-page-diy ._fc-r .el-form-item__content{display:block}.dk-page-diy ._fc-r .el-form-item__content .form-help{line-height:1.5;margin-top:4px;color:#888;font-size:12px}.dk-page-diy ._fc-m-drag,.dk-page-diy .draggable-drag{min-height:630px;height:100%;position:relative}.dk-page-diy ._fc-m-drag .chosen,.dk-page-diy .draggable-drag .chosen{opacity:1!important}.dk-page-diy .aside-resizer{cursor:ew-resize;height:100%;margin:0 -2px;position:absolute;top:0;width:4px;z-index:1;right:0}.dk-page-diy .aside-resizer:hover{background:rgba(204,204,204,.5)}.dk-page-diy .aside-toggle{background:inherit;cursor:pointer;padding:20px 5px;position:absolute;top:50%;transform:translateY(-50%);z-index:1;display:none}.dk-page-diy .drag-tool{padding:var(--padding);position:relative;min-height:var(--minHeight);box-sizing:border-box;word-wrap:break-word;word-break:break-all;margin:var(--margin);outline:var(--showDashed) dashed #a2d1ff;overflow:var(--overflow)}.dk-page-diy .drag-tool:hover{outline:2px dashed #a2d1ff}.dk-page-diy .drag-tool .drag-tool{margin:5px}.dk-page-diy .drag-tool+.drag-tool{margin-top:5px}.dk-page-diy .drag-tool .drag-content{overflow:hidden}.dk-page-diy .drag-tool .drag-content .drag-tool .del{right:0;top:0}.dk-page-diy .drag-tool .drag-r{display:none}.dk-page-diy .drag-tool:hover .drag-r{display:block}.dk-page-diy .drag-tool .drag-r{position:absolute;right:2px;bottom:2px;z-index:1200}.dk-page-diy .drag-tool .drag-l{position:absolute;top:0;left:0;z-index:1904}.dk-page-diy .drag-tool .drag-btn{height:18px;width:18px;color:#fff;background-color:#666;text-align:center;line-height:20px;padding-bottom:1px;float:left;cursor:pointer;justify-content:center;display:none;opacity:.5}.dk-page-diy .drag-tool .drag-btn+.drag-btn{margin-left:2px}.dk-page-diy .drag-tool .drag-btn:hover{background-color:var(--el-color-primary);opacity:1}.dk-page-diy .drag-tool .drag-btn-danger{background-color:var(--el-color-danger)!important}.dk-page-diy .drag-tool .drag-btn i{font-size:13px}.dk-page-diy .drag-tool .drag-mask{z-index:1199;position:absolute;top:0;left:0;right:0;bottom:0}.dk-page-diy .drag-tool.active{outline:2px solid #409eff}.dk-page-diy .drag-tool.active>.drag-r .drag-btn{display:block}.dk-page-diy .drag-tool.active>.drag-l .drag-btn{display:block}.dk-page-diy .drag-tool.active>.del{display:block}.dk-page-diy .drag-tool.active>.op{display:block}.dk-page-diy .preview-phone{overflow:auto;box-shadow:inset 0 2px 5px 1px rgba(62,62,62,.0901960784);height:100%}.dk-page-diy .preview-phone::-webkit-scrollbar{width:8px}.dk-page-diy .preview-phone .phone{background:#fff;width:375px;margin:20px auto;box-shadow:0 5px 10px rgba(0,0,0,.2);min-height:700px}.dk-page-diy .preview-phone .phone .phone-header{height:75px;margin-bottom:1px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.dk-page-diy .preview-phone .phone .phone-header img{width:100%}.dk-page-diy .preview-phone .phone .phone-header .phone-header-top{display:flex;align-items:flex-start;justify-content:space-between;height:30px;font-size:12px}.dk-page-diy .preview-phone .phone .phone-header .phone-header-top .phone-time{margin:10px}.dk-page-diy .preview-phone .phone .phone-header .phone-header-top .phone-time span{margin-right:5px}.dk-page-diy .preview-phone .phone .phone-header .phone-header-top .phone-bangs{background:#000;width:200px;height:30px;border-bottom-right-radius:20px;border-bottom-left-radius:20px}.dk-page-diy .preview-phone .phone .phone-header .phone-header-top .phone-battery{margin:10px;display:flex;align-items:center;height:18px}.dk-page-diy .preview-phone .phone .phone-header .phone-header-top .phone-battery img{margin-left:5px}.dk-page-diy .preview-phone .phone .phone-header .phone-title{display:flex;justify-content:space-between;align-items:center;height:40px}.dk-page-diy .preview-phone .phone .phone-header .phone-title .phone-title-icon{margin:5px}.dk-page-diy .preview-phone .phone .phone-header-min{background-image:url(https://demo-saas.site.niucloud.com/admin/assets/diy_preview_head-8c072698.png);background-repeat:no-repeat;background-position:center;background-size:cover;position:relative}.dk-page-diy .preview-phone .phone .phone-header-min .close-button{position:absolute;top:34px;right:27px}.dk-page-diy .preview-phone .phone .phone-header-min .close-button:hover .close-button-mask{background:rgba(0,0,0,.0666666667)}.dk-page-diy .preview-phone .phone .phone-header-min .close-button .close-button-mask{width:20px;height:20px;border-radius:100%;cursor:pointer}.dk-page-diy .preview-phone .phone .phone-header-min .more-button-mask{position:absolute;top:34px;right:70px;width:25px;cursor:pointer;border-radius:40px;height:20px}.dk-page-diy .preview-phone .phone .phone-header-min .more-button-mask:hover{background:rgba(0,0,0,.0666666667)}.dk-page-diy .preview-phone .phone .phone-body{background:#f5f5f5;background-size:100% auto!important;overflow:visible;background-repeat:no-repeat;background-origin:initial;background-clip:initial}.dk-page-diy .preview-phone .phone .phone-body .ghost{box-shadow:var(--el-box-shadow)}.dk-page-diy .dk-view-bullet-chat{height:30px;line-height:30px;color:#fff;background:rgba(0,0,0,.6);border-radius:100px}.dk-page-diy .dk-view-bullet-chat .bullet-content{display:flex;align-items:center;height:20px;margin:5px;font-size:12px}.dk-page-diy .dk-view-bullet-chat .bullet-content img{width:20px;height:20px;border-radius:100%}.dk-page-diy .dk-view-bullet-chat .bullet-content span{padding:0 5px}.dk-page-diy .dk-view-common-btn .btn{display:flex;align-items:center;justify-content:center}.dk-page-diy .dk-view-common-btn .btn .van-icon{font-size:1.2em}.dk-page-diy .dk-view-common-btn .f-btn{display:flex;flex-direction:column;align-items:center;justify-content:space-evenly}.dk-page-diy .dk-view-common-btn .f-btn .image-content{display:inherit}.dk-page-diy .dk-view-common-btn .f-btn .f-btn-content{display:flex;align-items:center;justify-content:center;border-radius:100%}.dk-page-diy .dk-view-common-btn .f-img{display:flex;flex-direction:column;align-items:center;justify-content:space-evenly}.dk-page-diy .dk-view-image.dk-mobile-image-default{display:flex;flex-direction:column}.dk-page-diy .dk-view-image.dk-mobile-image-default .van-image{display:block}.dk-page-diy .dk-view-image.dk-mobile-image-default .dk-mobile-image-content{display:block}.dk-page-diy .dk-view-image.dk-mobile-image-slide{width:100%;overflow-x:scroll;white-space:nowrap}.dk-page-diy .dk-view-image.dk-mobile-image-slide .dk-mobile-image-content{position:relative;display:inline-block;margin-right:10px;vertical-align:top}.dk-page-diy .dk-view-image .dk-mobile-image-content{position:relative;overflow:hidden}.dk-page-diy .dk-view-image .dk-mobile-image-content:last-child{margin:0!important}.dk-page-diy .dk-view-image .dk-mobile-image-content .text-type-footer{text-align:center;height:48px;line-height:48px}.dk-page-diy .dk-view-image .dk-mobile-image-content .text-type-default{color:#fff;text-align:center;position:absolute;background:linear-gradient(180deg,transparent,rgba(0,0,0,.75));bottom:0;height:48px;line-height:48px;width:100%}.dk-page-diy .dk-view-dialog .preview{display:flex;align-items:center;justify-content:center;height:40px;text-align:center;background:#fff}.dk-page-diy .dk-view-music{width:100%;display:flex;align-items:center;justify-content:center}.dk-page-diy .dk-view-music .dk-music-icon{background:#fff;border-radius:100%;border:2px solid #fff;font-weight:800;box-sizing:content-box;color:#f56c6c}.dk-page-diy .dk-view-music .dk-music-img{border-radius:100%}.dk-page-diy .dk-view-music .changeRight{animation-name:changeRight}.dk-page-diy .dk-view-music .changeLeft{animation-name:changeLeft}@keyframes changeRight{0%{-webkit-transform:rotate(0)}50%{-webkit-transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes changeLeft{0%{-webkit-transform:rotate(0)}50%{-webkit-transform:rotate(-180deg)}100%{-webkit-transform:rotate(-360deg)}}.dk-page-diy .dk-view-swipe .image{width:100%}.dk-page-diy .dk-view-tabbar .van-tabbar,.dk-page-diy .dk-view-tabbar .van-tabbar-item--active{background:0 0}.dk-page-diy .dk-view-title{display:flex;align-items:center;justify-content:space-between}.dk-page-diy .dk-view-title .title-left{display:flex;align-items:center}.dk-page-diy .dk-view-video{display:flex;align-items:center;justify-content:center;width:100%;min-height:240px;color:#eee;background:#222}.dk-page-diy .dk-view-video .dk-video-content{width:100%;height:100%;text-align:center}.dk-page-diy .dk-view-video .dk-video-content p{font-size:12px;color:#999}.dk-page-diy .dk-view-video .dk-video-content .poster{width:100%;height:100%}.dk-page-diy .dk-view-video .el-icon-video-play{font-size:50px}.dk-page-diy .dk-view-video .video-preview{position:absolute;top:0;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;background:#000;opacity:.8}.dk-page-diy .dk-min-swipe .image{width:100%}.dk-page-diy .dk-min-swipe .swipe-title{position:absolute;bottom:0;background:rgba(0,0,0,.3333333333);width:100%;color:#fff;padding:5px}.dk-page-diy .dk-min-area{position:relative}.dk-page-diy .hot-item{display:flex;align-items:center;justify-content:center;color:#fff}.dk-page-diy .dk-min-image.dk-mobile-image-row{display:flex;flex-direction:row}.dk-page-diy .dk-min-image.dk-mobile-image-row .dk-mobile-image-content{display:block}.dk-page-diy .dk-min-image.dk-mobile-image-column{display:flex;flex-direction:column}.dk-page-diy .dk-min-image.dk-mobile-image-slide{width:100%;overflow-x:scroll;white-space:nowrap}.dk-page-diy .dk-min-image.dk-mobile-image-slide .dk-mobile-image-content{position:relative;display:inline-block;margin-right:10px;vertical-align:top}.dk-page-diy .dk-min-image .dk-mobile-image-content{position:relative;overflow:hidden}.dk-page-diy .dk-min-image .dk-mobile-image-content:last-child{margin:0!important}.dk-page-diy .dk-min-image .dk-mobile-image-content .text-type-footer{text-align:center}.dk-page-diy .dk-min-image .dk-mobile-image-content .text-type-default{color:#fff;text-align:center;position:absolute;background:linear-gradient(180deg,transparent,rgba(0,0,0,.75));bottom:0;height:32px;line-height:32px;width:100%}.dk-page-diy .dk-app-gold-grid:deep .van-grid-item__content{background:0 0}.dk-page-diy .dk-min-cube-image{position:relative;width:100%}.dk-page-diy .dk-min-cube-image .selected-area{z-index:1;position:absolute}.dk-page-diy .dk-min-cube-image .selected-area .selected-image{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.dk-page-diy .dk-min-cube-image .selected-area .cube-selected-text{position:absolute;bottom:0;left:0;width:100%;background-color:rgba(255,255,255,.8);padding:4px;box-sizing:border-box;text-align:center;font-size:12px;color:#333}.dk-page-diy .drag-mask{z-index:-10!important}.diy-cloud .diy-header{display:flex;justify-content:space-between}.diy-cloud .diy-header .diy-search{width:500px;display:flex;align-items:center}.diy-cloud .diy-content{padding:20px 0}.diy-cloud .diy-content ul{height:520px}.diy-cloud .diy-content ul li{float:left;width:calc(16.6% - 10px);text-align:center;margin:5px;position:relative;transition:all .3s ease 0s;cursor:pointer;border-radius:10px;overflow:hidden;border:1px solid #ccc}.diy-cloud .diy-content ul li .cover{width:180px;height:240px;transition:all .3s ease 0s}.diy-cloud .diy-content ul li .title{position:absolute;bottom:0;padding:4px 10px;background:#fff;color:#000;text-align:center;width:100%}.diy-cloud .diy-content ul li .type{position:absolute;bottom:40px;padding:4px 10px;color:#000;text-align:center;width:100%}.diy-cloud .diy-content ul li .tag-list{position:absolute;bottom:30px;padding:4px 10px;color:#000;text-align:right;width:100%}.diy-cloud .diy-content ul li .tag-list .tag{font-size:12px;margin-top:17px;text-align:right;padding:2px 6px;top:180px;right:6px;background-color:rgba(0,0,0,.6);color:#fff;border-radius:4px;margin-left:5px}.diy-cloud .diy-content ul li .mask{position:absolute;height:240px;width:180px;top:0;background:rgba(0,0,0,.3019607843)}.diy-cloud .diy-content ul li:hover{box-shadow:0 4px 12px 0 rgba(0,13,71,.2)}.diy-cloud .diy-content ul li.choose{transition:all .1s ease 0s;border:1px solid #1989fa}.diy-cloud .diy-footer{text-align:center;padding:10px}.design-cube{position:relative;width:100%}.design-cube .cube-col{float:left;padding:0;margin:0;list-style:none}.design-cube .cube-item{box-sizing:border-box;display:flex;align-items:center;justify-content:space-around;text-align:center;cursor:pointer;background:#f8f8f8;border-right:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5;border-left:1px solid #e5e5e5}.design-cube .cube-item:first-child{border-top:1px solid #e5e5e5}.design-cube .cube-item.item-selected,.design-cube .cube-item.item-selecting{background:#e0edff}.design-cube .selected-area{position:absolute;box-sizing:border-box;overflow:hidden;color:#7d7e80;text-align:center;cursor:pointer;background-color:#fff;border:1px solid #ebedf0}.design-cube .selected-area img{width:100%}.design-cube .selected-area.selected-area-choose{border:1px solid red}.design-cube .selected-area .cube-selected-text{position:absolute;top:50%;left:50%;width:100%;font-size:12px;transform:translate(-50%) translateY(-50%)}.design-cube .selected-area .cube-close{position:absolute;top:5px;right:5px;z-index:99;font-size:18px}
|
1
|
+
@charset "UTF-8";.dk-page-diy{min-width:1000px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.dk-page-diy ._fc-l,.dk-page-diy ._fc-m,.dk-page-diy ._fc-r{background:#fff;box-sizing:border-box;height:calc(100vh - 180px);position:relative}.dk-page-diy ._fc-l::-webkit-scrollbar,.dk-page-diy ._fc-m::-webkit-scrollbar,.dk-page-diy ._fc-r::-webkit-scrollbar{display:none}.dk-page-diy ._fc-l .el-tabs__item,.dk-page-diy ._fc-m .el-tabs__item,.dk-page-diy ._fc-r .el-tabs__item{font-weight:800}.dk-page-diy ._fc-l .el-tabs__nav-wrap,.dk-page-diy ._fc-m .el-tabs__nav-wrap,.dk-page-diy ._fc-r .el-tabs__nav-wrap{padding:0 20px}.dk-page-diy ._fc-l{overflow:inherit!important;display:flex;flex:0 0 auto;flex-direction:column;top:0}.dk-page-diy ._fc-l ._fc-l-group{padding:0 12px}.dk-page-diy ._fc-l ._fc-l-title{font-weight:600;font-size:14px;margin:18px 0 5px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.dk-page-diy ._fc-l ._fc-l-item{display:inline-block;background:#fff;color:#000;min-width:70px;width:80px;height:70px;line-height:1;text-align:center;transition:all .2s ease;cursor:move;border-radius:6px;position:relative}.dk-page-diy ._fc-l ._fc-l-item.not-drag{cursor:not-allowed;background:#f6f6f6!important;color:#000!important}.dk-page-diy ._fc-l ._fc-l-item ._fc-l-name{font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.dk-page-diy ._fc-l ._fc-l-item ._fc-l-count{background-color:#409eff;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff;position:absolute;top:5px;right:20px;z-index:1;transform:translateY(-50%) translateX(100%)}.dk-page-diy ._fc-l ._fc-l-item ._fc-l-icon{padding:10px 5px 12px}.dk-page-diy ._fc-l ._fc-l-item:hover{background:#409eff;color:#fff}.dk-page-diy ._fc-l.item-box ._fc-l-groups{height:calc(100vh - 220px);overflow:auto;flex:1 1 0%}.dk-page-diy ._fc-l.item-box ._fc-l-groups::-webkit-scrollbar{display:none}.dk-page-diy ._fc-l.item-box ._fc-l-groups ._fc-l-items ._fc-l-item{margin:5px;width:76px;box-shadow:1px 1px 4px rgba(0,0,0,.1019607843)}.dk-page-diy ._fc-l:hover .aside-toggle{display:block}.dk-page-diy ._fc-l .children-list{width:100%;position:relative;background:#fff;bottom:0;overflow:auto;z-index:2;height:calc(100vh - 240px)}.dk-page-diy ._fc-l .children-list .el-tree-node-content{width:100%;display:flex;align-items:center;justify-content:space-between}.dk-page-diy ._fc-l .children-list .el-tree-node-content .close-rule{position:absolute;right:0;padding:2px 10px;box-sizing:initial}.dk-page-diy ._fc-l .children-list .el-tree-node-content .close-rule:hover{color:#409eff!important}.dk-page-diy ._fc-l .children-list .el-tree-node-content:hover .close-rule{display:inline-flex}.dk-page-diy ._fc-l .children-list .el-tree-node-content ._fc-tree-node{display:flex;align-items:center;justify-content:space-between;cursor:move;height:26px;line-height:26px;padding-right:5px}.dk-page-diy ._fc-l .children-list .el-tree-node-content ._fc-tree-node ._fc-tree-icon{margin-right:5px}.dk-page-diy ._fc-l .children-list .aside-resizer{width:100%;height:4px;margin:-2px 0;cursor:n-resize;z-index:3}.dk-page-diy ._fc-l .children-list::-webkit-scrollbar{display:none}.dk-page-diy ._fc-m{background:#ebeced;width:100%}.dk-page-diy ._fc-m ._fc-m-tools{background:#fff;height:40px;align-items:center;display:flex;justify-content:flex-end;border:1px solid #ececec;border-top:0 none}.dk-page-diy ._fc-m ._fc-m-drag{overflow:auto;box-sizing:border-box}.dk-page-diy ._fc-m .form-create ._fc-l-item{background:#409eff;width:100%;height:30px;overflow:hidden;transition:all .3s ease;display:flex;justify-content:center;align-items:center;color:#fff}.dk-page-diy ._fc-m .form-create ._fc-l-item.sortable-chosen ._fc-l-count,.dk-page-diy ._fc-m .form-create ._fc-l-item.sortable-chosen ._fc-l-icon,.dk-page-diy ._fc-m .form-create ._fc-l-item.sortable-chosen ._fc-l-name{display:none}.dk-page-diy ._fc-m .form-create ._fc-l-item.sortable-chosen:after{content:"放在这里";color:#fff;font-size:14px}.dk-page-diy ._fc-m .form-create ._fc-l-item ._fc-l-icon{margin:0 10px}.dk-page-diy ._fc-r{width:calc(100% - 800px);overflow:inherit!important}.dk-page-diy ._fc-r .el-tabs__nav{width:100%}.dk-page-diy ._fc-r .el-tabs__item{width:33%;text-align:center}.dk-page-diy ._fc-r .el-tabs__content{padding:0 20px;height:calc(100vh - 235px);overflow:auto}.dk-page-diy ._fc-r .el-tabs__content::-webkit-scrollbar{width:5px}.dk-page-diy ._fc-r .el-tabs__nav-wrap::after{height:1px;background-color:#ececec}.dk-page-diy ._fc-r ._fc-r-tabs{display:flex;cursor:pointer;padding:0;border-bottom:1px solid #ececec}.dk-page-diy ._fc-r ._fc-r-tab{height:40px;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:600;color:#303133;position:relative;flex:1;text-align:center}.dk-page-diy ._fc-r ._fc-r-tab.active{color:#409eff;border-bottom:2px solid #409eff}.dk-page-diy ._fc-r:hover .aside-toggle{display:block}.dk-page-diy ._fc-r .el-form-item__content{display:block}.dk-page-diy ._fc-r .el-form-item__content .form-help{line-height:1.5;margin-top:4px;color:#888;font-size:12px}.dk-page-diy ._fc-m-drag,.dk-page-diy .draggable-drag{min-height:630px;height:100%;position:relative}.dk-page-diy ._fc-m-drag .chosen,.dk-page-diy .draggable-drag .chosen{opacity:1!important}.dk-page-diy .aside-resizer{cursor:ew-resize;height:100%;margin:0 -2px;position:absolute;top:0;width:4px;z-index:1;right:0}.dk-page-diy .aside-resizer:hover{background:rgba(204,204,204,.5)}.dk-page-diy .aside-toggle{background:inherit;cursor:pointer;padding:20px 5px;position:absolute;top:50%;transform:translateY(-50%);z-index:1;display:none}.dk-page-diy .drag-tool{padding:var(--padding);position:relative;min-height:var(--minHeight);box-sizing:border-box;word-wrap:break-word;word-break:break-all;margin:var(--margin);outline:var(--showDashed) dashed #a2d1ff;overflow:var(--overflow)}.dk-page-diy .drag-tool:hover{outline:2px dashed #a2d1ff}.dk-page-diy .drag-tool .drag-tool{margin:5px}.dk-page-diy .drag-tool+.drag-tool{margin-top:5px}.dk-page-diy .drag-tool .drag-content{overflow:hidden}.dk-page-diy .drag-tool .drag-content .drag-tool .del{right:0;top:0}.dk-page-diy .drag-tool .drag-r{display:none}.dk-page-diy .drag-tool:hover .drag-r{display:block}.dk-page-diy .drag-tool .drag-r{position:absolute;right:2px;bottom:2px;z-index:1200}.dk-page-diy .drag-tool .drag-l{position:absolute;top:0;left:0;z-index:1904}.dk-page-diy .drag-tool .drag-btn{height:18px;width:18px;color:#fff;background-color:#666;text-align:center;line-height:20px;padding-bottom:1px;float:left;cursor:pointer;justify-content:center;display:none;opacity:.5}.dk-page-diy .drag-tool .drag-btn+.drag-btn{margin-left:2px}.dk-page-diy .drag-tool .drag-btn:hover{background-color:var(--el-color-primary);opacity:1}.dk-page-diy .drag-tool .drag-btn-danger{background-color:var(--el-color-danger)!important}.dk-page-diy .drag-tool .drag-btn i{font-size:13px}.dk-page-diy .drag-tool .drag-mask{z-index:1199;position:absolute;top:0;left:0;right:0;bottom:0}.dk-page-diy .drag-tool.active{outline:2px solid #409eff}.dk-page-diy .drag-tool.active>.drag-r .drag-btn{display:block}.dk-page-diy .drag-tool.active>.drag-l .drag-btn{display:block}.dk-page-diy .drag-tool.active>.del{display:block}.dk-page-diy .drag-tool.active>.op{display:block}.dk-page-diy .preview-phone{overflow:auto;box-shadow:inset 0 2px 5px 1px rgba(62,62,62,.0901960784);height:100%}.dk-page-diy .preview-phone::-webkit-scrollbar{width:8px}.dk-page-diy .preview-phone .phone{background:#fff;width:375px;margin:20px auto;box-shadow:0 5px 10px rgba(0,0,0,.2);min-height:700px}.dk-page-diy .preview-phone .phone .phone-header{height:75px;margin-bottom:1px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.dk-page-diy .preview-phone .phone .phone-header img{width:100%}.dk-page-diy .preview-phone .phone .phone-header .phone-header-top{display:flex;align-items:flex-start;justify-content:space-between;height:30px;font-size:12px}.dk-page-diy .preview-phone .phone .phone-header .phone-header-top .phone-time{margin:10px}.dk-page-diy .preview-phone .phone .phone-header .phone-header-top .phone-time span{margin-right:5px}.dk-page-diy .preview-phone .phone .phone-header .phone-header-top .phone-bangs{background:#000;width:200px;height:30px;border-bottom-right-radius:20px;border-bottom-left-radius:20px}.dk-page-diy .preview-phone .phone .phone-header .phone-header-top .phone-battery{margin:10px;display:flex;align-items:center;height:18px}.dk-page-diy .preview-phone .phone .phone-header .phone-header-top .phone-battery img{margin-left:5px}.dk-page-diy .preview-phone .phone .phone-header .phone-title{display:flex;justify-content:space-between;align-items:center;height:40px}.dk-page-diy .preview-phone .phone .phone-header .phone-title .phone-title-icon{margin:5px}.dk-page-diy .preview-phone .phone .phone-header-min{background-image:url(https://demo-saas.site.niucloud.com/admin/assets/diy_preview_head-8c072698.png);background-repeat:no-repeat;background-position:center;background-size:cover;position:relative}.dk-page-diy .preview-phone .phone .phone-header-min .close-button{position:absolute;top:34px;right:27px}.dk-page-diy .preview-phone .phone .phone-header-min .close-button:hover .close-button-mask{background:rgba(0,0,0,.0666666667)}.dk-page-diy .preview-phone .phone .phone-header-min .close-button .close-button-mask{width:20px;height:20px;border-radius:100%;cursor:pointer}.dk-page-diy .preview-phone .phone .phone-header-min .more-button-mask{position:absolute;top:34px;right:70px;width:25px;cursor:pointer;border-radius:40px;height:20px}.dk-page-diy .preview-phone .phone .phone-header-min .more-button-mask:hover{background:rgba(0,0,0,.0666666667)}.dk-page-diy .preview-phone .phone .phone-body{background:#f5f5f5;background-size:100% auto!important;overflow:visible;background-repeat:no-repeat;background-origin:initial;background-clip:initial}.dk-page-diy .preview-phone .phone .phone-body .ghost{box-shadow:var(--el-box-shadow)}.dk-page-diy .dk-view-bullet-chat{height:30px;line-height:30px;color:#fff;background:rgba(0,0,0,.6);border-radius:100px}.dk-page-diy .dk-view-bullet-chat .bullet-content{display:flex;align-items:center;height:20px;margin:5px;font-size:12px}.dk-page-diy .dk-view-bullet-chat .bullet-content img{width:20px;height:20px;border-radius:100%}.dk-page-diy .dk-view-bullet-chat .bullet-content span{padding:0 5px}.dk-page-diy .dk-view-common-btn .btn{display:flex;align-items:center;justify-content:center}.dk-page-diy .dk-view-common-btn .btn .van-icon{font-size:1.2em}.dk-page-diy .dk-view-common-btn .f-btn{display:flex;flex-direction:column;align-items:center;justify-content:space-evenly}.dk-page-diy .dk-view-common-btn .f-btn .image-content{display:inherit}.dk-page-diy .dk-view-common-btn .f-btn .f-btn-content{display:flex;align-items:center;justify-content:center;border-radius:100%}.dk-page-diy .dk-view-common-btn .f-img{display:flex;flex-direction:column;align-items:center;justify-content:space-evenly}.dk-page-diy .dk-view-image.dk-mobile-image-default{display:flex;flex-direction:column}.dk-page-diy .dk-view-image.dk-mobile-image-default .van-image{display:block}.dk-page-diy .dk-view-image.dk-mobile-image-default .dk-mobile-image-content{display:block}.dk-page-diy .dk-view-image.dk-mobile-image-slide{width:100%;overflow-x:scroll;white-space:nowrap}.dk-page-diy .dk-view-image.dk-mobile-image-slide .dk-mobile-image-content{position:relative;display:inline-block;margin-right:10px;vertical-align:top}.dk-page-diy .dk-view-image .dk-mobile-image-content{position:relative;overflow:hidden}.dk-page-diy .dk-view-image .dk-mobile-image-content:last-child{margin:0!important}.dk-page-diy .dk-view-image .dk-mobile-image-content .text-type-footer{text-align:center;height:48px;line-height:48px}.dk-page-diy .dk-view-image .dk-mobile-image-content .text-type-default{color:#fff;text-align:center;position:absolute;background:linear-gradient(180deg,transparent,rgba(0,0,0,.75));bottom:0;height:48px;line-height:48px;width:100%}.dk-page-diy .dk-view-dialog .preview{display:flex;align-items:center;justify-content:center;height:40px;text-align:center;background:#fff}.dk-page-diy .dk-view-music{width:100%;display:flex;align-items:center;justify-content:center}.dk-page-diy .dk-view-music .dk-music-icon{background:#fff;border-radius:100%;border:2px solid #fff;font-weight:800;box-sizing:content-box;color:#f56c6c}.dk-page-diy .dk-view-music .dk-music-img{border-radius:100%}.dk-page-diy .dk-view-music .changeRight{animation-name:changeRight}.dk-page-diy .dk-view-music .changeLeft{animation-name:changeLeft}@keyframes changeRight{0%{-webkit-transform:rotate(0)}50%{-webkit-transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes changeLeft{0%{-webkit-transform:rotate(0)}50%{-webkit-transform:rotate(-180deg)}100%{-webkit-transform:rotate(-360deg)}}.dk-page-diy .dk-view-swipe .image{width:100%}.dk-page-diy .dk-view-tabbar .van-tabbar,.dk-page-diy .dk-view-tabbar .van-tabbar-item--active{background:0 0}.dk-page-diy .dk-view-title{display:flex;align-items:center;justify-content:space-between}.dk-page-diy .dk-view-title .title-left{display:flex;align-items:center}.dk-page-diy .dk-view-video{display:flex;align-items:center;justify-content:center;width:100%;min-height:240px;color:#eee;background:#222}.dk-page-diy .dk-view-video .dk-video-content{width:100%;height:100%;text-align:center}.dk-page-diy .dk-view-video .dk-video-content p{font-size:12px;color:#999}.dk-page-diy .dk-view-video .dk-video-content .poster{width:100%;height:100%}.dk-page-diy .dk-view-video .el-icon-video-play{font-size:50px}.dk-page-diy .dk-view-video .video-preview{position:absolute;top:0;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;background:#000;opacity:.8}.dk-page-diy .dk-min-swipe .image{width:100%}.dk-page-diy .dk-min-swipe .swipe-title{position:absolute;bottom:0;background:rgba(0,0,0,.3333333333);width:100%;color:#fff;padding:5px}.dk-page-diy .dk-min-area{position:relative}.dk-page-diy .hot-item{display:flex;align-items:center;justify-content:center;color:#fff}.dk-page-diy .dk-min-image.dk-mobile-image-row{display:flex;flex-direction:row}.dk-page-diy .dk-min-image.dk-mobile-image-row .dk-mobile-image-content{display:block}.dk-page-diy .dk-min-image.dk-mobile-image-column{display:flex;flex-direction:column}.dk-page-diy .dk-min-image.dk-mobile-image-slide{width:100%;overflow-x:scroll;white-space:nowrap}.dk-page-diy .dk-min-image.dk-mobile-image-slide .dk-mobile-image-content{position:relative;display:inline-block;margin-right:10px;vertical-align:top}.dk-page-diy .dk-min-image .dk-mobile-image-content{position:relative;overflow:hidden}.dk-page-diy .dk-min-image .dk-mobile-image-content:last-child{margin:0!important}.dk-page-diy .dk-min-image .dk-mobile-image-content .text-type-footer{text-align:center}.dk-page-diy .dk-min-image .dk-mobile-image-content .text-type-default{color:#fff;text-align:center;position:absolute;background:linear-gradient(180deg,transparent,rgba(0,0,0,.75));bottom:0;height:32px;line-height:32px;width:100%}.dk-page-diy .dk-app-gold-grid:deep .van-grid-item__content{background:0 0}.dk-page-diy .dk-min-cube-image{position:relative;width:100%}.dk-page-diy .dk-min-cube-image .selected-area{z-index:1;position:absolute;display:flex;align-items:center}.dk-page-diy .dk-min-cube-image .selected-area .selected-image{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.dk-page-diy .dk-min-cube-image .selected-area .cube-selected-text{width:100%;background-color:rgba(255,255,255,.8);padding:4px;box-sizing:border-box;text-align:center;font-size:12px}.diy-cloud .diy-header{display:flex;justify-content:space-between}.diy-cloud .diy-header .diy-search{width:500px;display:flex;align-items:center}.diy-cloud .diy-content{padding:20px 0}.diy-cloud .diy-content ul{height:520px}.diy-cloud .diy-content ul li{float:left;width:calc(16.6% - 10px);text-align:center;margin:5px;position:relative;transition:all .3s ease 0s;cursor:pointer;border-radius:10px;overflow:hidden;border:1px solid #ccc}.diy-cloud .diy-content ul li .cover{width:180px;height:240px;transition:all .3s ease 0s}.diy-cloud .diy-content ul li .title{position:absolute;bottom:0;padding:4px 10px;background:#fff;color:#000;text-align:center;width:100%}.diy-cloud .diy-content ul li .type{position:absolute;bottom:40px;padding:4px 10px;color:#000;text-align:center;width:100%}.diy-cloud .diy-content ul li .tag-list{position:absolute;bottom:30px;padding:4px 10px;color:#000;text-align:right;width:100%}.diy-cloud .diy-content ul li .tag-list .tag{font-size:12px;margin-top:17px;text-align:right;padding:2px 6px;top:180px;right:6px;background-color:rgba(0,0,0,.6);color:#fff;border-radius:4px;margin-left:5px}.diy-cloud .diy-content ul li .mask{position:absolute;height:240px;width:180px;top:0;background:rgba(0,0,0,.3019607843)}.diy-cloud .diy-content ul li:hover{box-shadow:0 4px 12px 0 rgba(0,13,71,.2)}.diy-cloud .diy-content ul li.choose{transition:all .1s ease 0s;border:1px solid #1989fa}.diy-cloud .diy-footer{text-align:center;padding:10px}.design-cube{position:relative;width:100%}.design-cube .cube-col{float:left;padding:0;margin:0;list-style:none}.design-cube .cube-item{box-sizing:border-box;display:flex;align-items:center;justify-content:space-around;text-align:center;cursor:pointer;background:#f8f8f8;border-right:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5;border-left:1px solid #e5e5e5}.design-cube .cube-item:first-child{border-top:1px solid #e5e5e5}.design-cube .cube-item.item-selected,.design-cube .cube-item.item-selecting{background:#e0edff}.design-cube .selected-area{position:absolute;box-sizing:border-box;overflow:hidden;color:#7d7e80;text-align:center;cursor:pointer;background-color:#fff;border:1px solid #ebedf0}.design-cube .selected-area img{width:100%}.design-cube .selected-area.selected-area-choose{border:1px solid red}.design-cube .selected-area .cube-selected-text{position:absolute;top:50%;left:50%;width:100%;font-size:12px;transform:translate(-50%) translateY(-50%)}.design-cube .selected-area .cube-close{position:absolute;top:5px;right:5px;z-index:99;font-size:18px}
|
@@ -93,6 +93,8 @@
|
|
93
93
|
.selected-area {
|
94
94
|
z-index: 1;
|
95
95
|
position: absolute;
|
96
|
+
display: flex;
|
97
|
+
align-items: center;
|
96
98
|
|
97
99
|
.selected-image {
|
98
100
|
width: 100%;
|
@@ -101,23 +103,18 @@
|
|
101
103
|
}
|
102
104
|
|
103
105
|
.cube-selected-text {
|
104
|
-
position: absolute;
|
105
|
-
bottom: 0;
|
106
|
-
left: 0;
|
107
106
|
width: 100%;
|
108
107
|
background-color: rgba(255, 255, 255, 0.8); /* 半透明背景以提高可读性 */
|
109
108
|
padding: 4px;
|
110
109
|
box-sizing: border-box;
|
111
110
|
text-align: center;
|
112
111
|
font-size: 12px;
|
113
|
-
color: #333;
|
114
112
|
}
|
115
113
|
}
|
116
114
|
}
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
}
|
115
|
+
//
|
116
|
+
//.drag-mask {
|
117
|
+
// z-index: -10 !important;
|
118
|
+
//}
|
122
119
|
|
123
120
|
/* stylelint-enable */
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DkCubeImageInput.vue2.js","sources":["../../../../../src/page-diy/src/components/forms/DkCubeImageInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n name: 'DkCubeImageInput',\n});\n</script>\n<template>\n <div>\n <el-form :model=\"form\" label-width=\"auto\" style=\"max-width: 400px\" label-position=\"left\">\n <el-form-item label=\"魔方密度\">\n <el-select v-model=\"form.density\" @change=\"onChangeDensity()\">\n <el-option label=\"4x4\" :value=\"4\" />\n <el-option label=\"5x5\" :value=\"5\" />\n <el-option label=\"6x6\" :value=\"6\" />\n </el-select>\n </el-form-item>\n <el-form-item style=\"margin: 10px 0\">\n <div ref=\"designCube\" class=\"design-cube\">\n <ul v-for=\"col in form.density\" :key=\"col\" class=\"cube-col\">\n <li\n v-for=\"item in form.density\"\n :key=\"item\"\n :class=\"{\n 'item-selected': selectionStart?.x === col && selectionStart?.y === item,\n 'item-selecting': checkSelecting(col, item),\n }\"\n class=\"cube-item\"\n :data-x=\"col\"\n :data-y=\"item\"\n :style=\"itemStyle\"\n @click=\"onSelectCube(col, item)\"\n @mouseenter=\"onMousemove(col, item)\"\n >\n +\n </li>\n </ul>\n <!-- 已选中区域的覆盖层 -->\n <div\n v-for=\"(cube, index) in selectedCubes\"\n :key=\"index\"\n class=\"selected-area\"\n :class=\"{ 'selected-area-choose': selectedAreaIndex === index }\"\n :style=\"getSelectedAreaStyle(cube)\"\n @click=\"onClickSelectedArea(index)\"\n >\n <dk-icon icon=\"Close\" class=\"cube-close\" @click=\"onDeleteCubes(index)\"></dk-icon>\n <div v-if=\"!cube.image\">\n <div class=\"cube-selected-text\">{{ getReferenceSize(cube) }}</div>\n </div>\n <div v-else>\n <img :src=\"cube.image\" alt=\"\" />\n </div>\n </div>\n </div>\n </el-form-item>\n <div v-if=\"selectedCubes[selectedAreaIndex]\">\n <el-form-item label=\"选择图片\">\n <dk-image-input v-model=\"selectedCubes[selectedAreaIndex].image\"></dk-image-input>\n </el-form-item>\n <el-form-item label=\"点击效果\" style=\"padding: 10px 0\">\n <el-radio-group v-model=\"selectedCubes[selectedAreaIndex].clickType\">\n <el-radio value=\"path\">跳转页面</el-radio>\n <el-radio value=\"event\">触发事件</el-radio>\n </el-radio-group>\n </el-form-item>\n <el-form-item v-if=\"selectedCubes[selectedAreaIndex].clickType === 'path'\" label=\"地址\" style=\"padding: 10px 0\">\n <dk-url-input v-model=\"selectedCubes[selectedAreaIndex].path\"> </dk-url-input>\n </el-form-item>\n <el-form-item v-if=\"selectedCubes[selectedAreaIndex].clickType === 'event'\" label=\"事件\">\n <DkEventSelectInput v-model=\"selectedCubes[selectedAreaIndex].event\"> </DkEventSelectInput>\n </el-form-item>\n </div>\n </el-form>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, reactive, watch, ref, onMounted } from 'vue'\nimport { useElementSize } from '@vueuse/core'\nimport DkEventSelectInput from './DkEventSelectInput.vue'\n\n\nconst designCube: any = ref(null)\nconst { width } = useElementSize(designCube) // 当前组件宽度\n\nconst props = defineProps({\n modelValue: {\n default: () => {\n return {}\n },\n type: Object,\n },\n imageStyle: {\n default: () => {\n return {}\n },\n type: Object,\n },\n})\n\nconst form: any = reactive({\n density: 4,\n})\n\nconst itemStyle = computed(() => {\n const size = width.value / form.density\n return {\n width: size + 'px',\n height: size + 'px',\n }\n})\n\n// 定义选择区域的起点和终点\nconst selectionStart = ref<{ x: number; y: number } | null>(null)\nconst selectionEnd = ref<{ x: number; y: number } | null>(null)\nconst selectedCubes: any = ref([])\n\nconst emit = defineEmits(['input', 'update:modelValue'])\nconst emitData = computed(() => {\n return {\n density: form.density,\n selectedCubes: selectedCubes.value,\n }\n})\n\nconst onChangeDensity = () => {\n selectedCubes.value = []\n selectionStart.value = null\n}\n\nwatch(\n () => emitData,\n () => {\n console.log('emitData', emitData.value)\n emit('update:modelValue', emitData.value)\n },\n {\n deep: true,\n }\n)\nwatch(\n () => props.modelValue,\n () => {\n form.density = props.modelValue.density\n selectedCubes.value = props.modelValue.selectedCubes\n }\n)\nonMounted(() => {\n form.density = props.modelValue.density || 4\n selectedCubes.value = props.modelValue.selectedCubes || []\n})\n// 检查给定坐标是否在选择区域内或已被选中\nconst checkSelecting = (x: number, y: number) => {\n // 检查是否为已选中的矩形区域内的方块\n const isSelected = selectedCubes.value.some((cube: any) => {\n const startX = Math.min(cube.start.x, cube.end.x)\n const endX = Math.max(cube.start.x, cube.end.x)\n const startY = Math.min(cube.start.y, cube.end.y)\n const endY = Math.max(cube.start.y, cube.end.y)\n return x >= startX && x <= endX && y >= startY && y <= endY\n })\n\n if (isSelected) return false // 如果是已选中的区域,则不考虑为当前选择\n\n // 如果没有正在进行的选择操作,则仅返回是否已选中\n if (!selectionStart.value || !selectionEnd.value) return false\n\n // 计算当前拖动选择区域的边界\n const startX = Math.min(selectionStart.value.x, selectionEnd.value.x)\n const endX = Math.max(selectionStart.value.x, selectionEnd.value.x)\n const startY = Math.min(selectionStart.value.y, selectionEnd.value.y)\n const endY = Math.max(selectionStart.value.y, selectionEnd.value.y)\n\n // 检查新选择区域是否与任何已选中的区域重叠\n const overlapsWithSelected = selectedCubes.value.some((cube: any) => {\n const selStartX = Math.min(cube.start.x, cube.end.x)\n const selEndX = Math.max(cube.start.x, cube.end.x)\n const selStartY = Math.min(cube.start.y, cube.end.y)\n const selEndY = Math.max(cube.start.y, cube.end.y)\n\n // 检查是否有重叠\n return !(endX < selStartX || startX > selEndX || endY < selStartY || startY > selEndY)\n })\n\n if (overlapsWithSelected) return false // 如果有重叠,则不考虑为当前选择\n\n // 检查坐标是否位于当前拖动的选择区域内\n return x >= startX && x <= endX && y >= startY && y <= endY\n}\n\nconst moduleSize = computed(() => width.value / form.density)\n\nconst getSelectedAreaStyle = (cube: { start: { x: number; y: number }; end: { x: number; y: number } }) => {\n const startX = Math.min(cube.start.x, cube.end.x) - 1\n const endX = Math.max(cube.start.x, cube.end.x)\n const startY = Math.min(cube.start.y, cube.end.y) - 1\n const endY = Math.max(cube.start.y, cube.end.y)\n\n return {\n width: `${(endX - startX) * moduleSize.value}px`,\n height: `${(endY - startY) * moduleSize.value}px`,\n top: `${startY * moduleSize.value}px`,\n left: `${startX * moduleSize.value}px`,\n }\n}\n\nconst referenceWidth = 750 // 固定宽度\n\n// 计算参考尺寸的方法\nconst getReferenceSize = (cube: { start: { x: number; y: number }; end: { x: number; y: number } }) => {\n const startX = Math.min(cube.start.x, cube.end.x)\n const endX = Math.max(cube.start.x, cube.end.x)\n const startY = Math.min(cube.start.y, cube.end.y)\n const endY = Math.max(cube.start.y, cube.end.y)\n\n // 模块宽度和高度(假设魔方网格是正方形)\n const moduleWidth = referenceWidth / form.density\n\n // 如果选择的是单个模块,则宽度和高度都应该是单个模块的尺寸\n const width = (endX - startX + 1) * moduleWidth\n const height = (endY - startY + 1) * moduleWidth\n\n return `${Math.round(width)} x ${Math.round(height)} 像素`\n}\n\nconst selectedAreaIndex = ref(-1)\nconst onClickSelectedArea = (k: number) => {\n selectedAreaIndex.value = k\n}\n\nconst onDeleteCubes = (k: number) => {\n selectedAreaIndex.value = -1\n selectedCubes.value.splice(k, 1)\n}\n\nconst onSelectCube = (x: number, y: number) => {\n if (selectionStart.value == null) {\n selectionStart.value = {\n x,\n y,\n }\n } else if (checkSelecting(x, y)) {\n selectedCubes.value.push({\n start: selectionStart.value,\n end: { x, y },\n path: '',\n clickType: 'path',\n })\n selectionStart.value = null\n selectedAreaIndex.value = selectedCubes.value.length - 1\n }\n}\n\nconst onMousemove = (x: number, y: number) => {\n selectionEnd.value = { x, y }\n}\n</script>\n\n<style scoped lang=\"scss\"></style>\n"],"names":["__MACROS_defineComponent","ref","useElementSize","reactive","computed","watch","onMounted","startX","endX","startY","endY","width"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"DkCubeImageInput.vue2.js","sources":["../../../../../src/page-diy/src/components/forms/DkCubeImageInput.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n name: 'DkCubeImageInput',\n});\n</script>\n<template>\n <div>\n <el-form :model=\"form\" label-width=\"auto\" style=\"max-width: 400px\" label-position=\"left\">\n <el-form-item label=\"魔方密度\">\n <el-select v-model=\"form.density\" @change=\"onChangeDensity()\">\n <el-option label=\"4x4\" :value=\"4\" />\n <el-option label=\"5x5\" :value=\"5\" />\n <el-option label=\"6x6\" :value=\"6\" />\n </el-select>\n </el-form-item>\n <el-form-item style=\"margin: 10px 0\">\n <div ref=\"designCube\" class=\"design-cube\">\n <ul v-for=\"col in form.density\" :key=\"col\" class=\"cube-col\">\n <li\n v-for=\"item in form.density\"\n :key=\"item\"\n :class=\"{\n 'item-selected': selectionStart?.x === col && selectionStart?.y === item,\n 'item-selecting': checkSelecting(col, item),\n }\"\n class=\"cube-item\"\n :data-x=\"col\"\n :data-y=\"item\"\n :style=\"itemStyle\"\n @click=\"onSelectCube(col, item)\"\n @mouseenter=\"onMousemove(col, item)\"\n >\n +\n </li>\n </ul>\n <!-- 已选中区域的覆盖层 -->\n <div\n v-for=\"(cube, index) in selectedCubes\"\n :key=\"index\"\n class=\"selected-area\"\n :class=\"{ 'selected-area-choose': selectedAreaIndex === index }\"\n :style=\"getSelectedAreaStyle(cube)\"\n @click=\"onClickSelectedArea(index)\"\n >\n <dk-icon icon=\"Close\" class=\"cube-close\" @click=\"onDeleteCubes(index)\"></dk-icon>\n <div v-if=\"!cube.image\">\n <div class=\"cube-selected-text\">{{ getReferenceSize(cube) }}</div>\n </div>\n <div v-else>\n <img :src=\"cube.image\" alt=\"\" />\n </div>\n </div>\n </div>\n </el-form-item>\n <div v-if=\"selectedCubes[selectedAreaIndex]\">\n <el-form-item label=\"选择图片\">\n <dk-image-input v-model=\"selectedCubes[selectedAreaIndex].image\"></dk-image-input>\n </el-form-item>\n <el-form-item label=\"点击效果\" style=\"padding: 10px 0\">\n <el-radio-group v-model=\"selectedCubes[selectedAreaIndex].clickType\">\n <el-radio value=\"path\">跳转页面</el-radio>\n <el-radio value=\"event\">触发事件</el-radio>\n </el-radio-group>\n </el-form-item>\n <el-form-item v-if=\"selectedCubes[selectedAreaIndex].clickType === 'path'\" label=\"地址\" style=\"padding: 10px 0\">\n <dk-url-input v-model=\"selectedCubes[selectedAreaIndex].path\"> </dk-url-input>\n </el-form-item>\n <el-form-item v-if=\"selectedCubes[selectedAreaIndex].clickType === 'event'\" label=\"事件\">\n <DkEventSelectInput v-model=\"selectedCubes[selectedAreaIndex].event\"> </DkEventSelectInput>\n </el-form-item>\n </div>\n </el-form>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, reactive, watch, ref, onMounted } from 'vue'\nimport { useElementSize } from '@vueuse/core'\nimport DkEventSelectInput from './DkEventSelectInput.vue'\n\n\nconst designCube: any = ref(null)\nconst { width } = useElementSize(designCube) // 当前组件宽度\n\nconst props = defineProps({\n modelValue: {\n default: () => {\n return {}\n },\n type: Object,\n },\n imageStyle: {\n default: () => {\n return {}\n },\n type: Object,\n },\n})\n\nconst form: any = reactive({\n density: 4,\n})\n\nconst itemStyle = computed(() => {\n const size = width.value / form.density\n return {\n width: size + 'px',\n height: size + 'px',\n }\n})\n\n// 定义选择区域的起点和终点\nconst selectionStart = ref<{ x: number; y: number } | null>(null)\nconst selectionEnd = ref<{ x: number; y: number } | null>(null)\nconst selectedCubes: any = ref([])\n\nconst emit = defineEmits(['input', 'update:modelValue'])\nconst emitData = computed(() => {\n return {\n density: form.density,\n selectedCubes: selectedCubes.value,\n }\n})\n\nconst onChangeDensity = () => {\n selectedCubes.value = []\n selectionStart.value = null\n}\n\nwatch(\n () => emitData,\n () => {\n emit('update:modelValue', emitData.value)\n },\n {\n deep: true,\n }\n)\nwatch(\n () => props.modelValue,\n () => {\n form.density = props.modelValue.density\n selectedCubes.value = props.modelValue.selectedCubes\n }\n)\nonMounted(() => {\n form.density = props.modelValue.density || 4\n selectedCubes.value = props.modelValue.selectedCubes || []\n})\n// 检查给定坐标是否在选择区域内或已被选中\nconst checkSelecting = (x: number, y: number) => {\n // 检查是否为已选中的矩形区域内的方块\n const isSelected = selectedCubes.value.some((cube: any) => {\n const startX = Math.min(cube.start.x, cube.end.x)\n const endX = Math.max(cube.start.x, cube.end.x)\n const startY = Math.min(cube.start.y, cube.end.y)\n const endY = Math.max(cube.start.y, cube.end.y)\n return x >= startX && x <= endX && y >= startY && y <= endY\n })\n\n if (isSelected) return false // 如果是已选中的区域,则不考虑为当前选择\n\n // 如果没有正在进行的选择操作,则仅返回是否已选中\n if (!selectionStart.value || !selectionEnd.value) return false\n\n // 计算当前拖动选择区域的边界\n const startX = Math.min(selectionStart.value.x, selectionEnd.value.x)\n const endX = Math.max(selectionStart.value.x, selectionEnd.value.x)\n const startY = Math.min(selectionStart.value.y, selectionEnd.value.y)\n const endY = Math.max(selectionStart.value.y, selectionEnd.value.y)\n\n // 检查新选择区域是否与任何已选中的区域重叠\n const overlapsWithSelected = selectedCubes.value.some((cube: any) => {\n const selStartX = Math.min(cube.start.x, cube.end.x)\n const selEndX = Math.max(cube.start.x, cube.end.x)\n const selStartY = Math.min(cube.start.y, cube.end.y)\n const selEndY = Math.max(cube.start.y, cube.end.y)\n\n // 检查是否有重叠\n return !(endX < selStartX || startX > selEndX || endY < selStartY || startY > selEndY)\n })\n\n if (overlapsWithSelected) return false // 如果有重叠,则不考虑为当前选择\n\n // 检查坐标是否位于当前拖动的选择区域内\n return x >= startX && x <= endX && y >= startY && y <= endY\n}\n\nconst moduleSize = computed(() => width.value / form.density)\n\nconst getSelectedAreaStyle = (cube: { start: { x: number; y: number }; end: { x: number; y: number } }) => {\n const startX = Math.min(cube.start.x, cube.end.x) - 1\n const endX = Math.max(cube.start.x, cube.end.x)\n const startY = Math.min(cube.start.y, cube.end.y) - 1\n const endY = Math.max(cube.start.y, cube.end.y)\n\n return {\n width: `${(endX - startX) * moduleSize.value}px`,\n height: `${(endY - startY) * moduleSize.value}px`,\n top: `${startY * moduleSize.value}px`,\n left: `${startX * moduleSize.value}px`,\n }\n}\n\nconst referenceWidth = 750 // 固定宽度\n\n// 计算参考尺寸的方法\nconst getReferenceSize = (cube: { start: { x: number; y: number }; end: { x: number; y: number } }) => {\n const startX = Math.min(cube.start.x, cube.end.x)\n const endX = Math.max(cube.start.x, cube.end.x)\n const startY = Math.min(cube.start.y, cube.end.y)\n const endY = Math.max(cube.start.y, cube.end.y)\n\n // 模块宽度和高度(假设魔方网格是正方形)\n const moduleWidth = referenceWidth / form.density\n\n // 如果选择的是单个模块,则宽度和高度都应该是单个模块的尺寸\n const width = (endX - startX + 1) * moduleWidth\n const height = (endY - startY + 1) * moduleWidth\n\n return `${Math.round(width)} x ${Math.round(height)} 像素`\n}\n\nconst selectedAreaIndex = ref(-1)\nconst onClickSelectedArea = (k: number) => {\n selectedAreaIndex.value = k\n}\n\nconst onDeleteCubes = (k: number) => {\n selectedAreaIndex.value = -1\n selectedCubes.value.splice(k, 1)\n}\n\nconst onSelectCube = (x: number, y: number) => {\n if (selectionStart.value == null) {\n selectionStart.value = {\n x,\n y,\n }\n } else if (checkSelecting(x, y)) {\n selectedCubes.value.push({\n start: selectionStart.value,\n end: { x, y },\n path: '',\n clickType: 'path',\n })\n selectionStart.value = null\n selectedAreaIndex.value = selectedCubes.value.length - 1\n }\n}\n\nconst onMousemove = (x: number, y: number) => {\n selectionEnd.value = { x, y }\n}\n</script>\n\n<style scoped lang=\"scss\"></style>\n"],"names":["__MACROS_defineComponent","ref","useElementSize","reactive","computed","watch","onMounted","startX","endX","startY","endY","width"],"mappings":"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"}
|
@@ -12,7 +12,7 @@ var DkMinCubeImage = {
|
|
12
12
|
return {
|
13
13
|
type: name,
|
14
14
|
props: {
|
15
|
-
cubeData: { density:
|
15
|
+
cubeData: { density: 5, selectedCubes: [] }
|
16
16
|
},
|
17
17
|
showStyle: true
|
18
18
|
};
|
@@ -21,8 +21,8 @@ var DkMinCubeImage = {
|
|
21
21
|
return [
|
22
22
|
{
|
23
23
|
type: "switch",
|
24
|
-
field: "
|
25
|
-
title: "\
|
24
|
+
field: "clickActive",
|
25
|
+
title: "\u70B9\u51FB\u6548\u679C",
|
26
26
|
value: false
|
27
27
|
},
|
28
28
|
{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DkMinCubeImage.js","sources":["../../../../../../../src/page-diy/src/config/rule/min/common/DkMinCubeImage.js"],"sourcesContent":["const label = '魔方图片'\nconst name = 'DkMinCubeImage'\nexport default {\n icon: 'game-icons:ice-cube',\n label,\n name,\n rule() {\n return {\n type: name,\n props: {\n cubeData: { density:
|
1
|
+
{"version":3,"file":"DkMinCubeImage.js","sources":["../../../../../../../src/page-diy/src/config/rule/min/common/DkMinCubeImage.js"],"sourcesContent":["const label = '魔方图片'\nconst name = 'DkMinCubeImage'\nexport default {\n icon: 'game-icons:ice-cube',\n label,\n name,\n rule() {\n return {\n type: name,\n props: {\n cubeData: { density: 5, selectedCubes: [] },\n },\n showStyle: true,\n }\n },\n props() {\n return [\n {\n type: 'switch',\n field: 'clickActive',\n title: '点击效果',\n value: false,\n },\n {\n type: 'DkStyleInput',\n field: 'imageStyle',\n title: '图片样式',\n props: {\n isDrawer: true,\n drawerProps: {\n title: '卡片样式',\n size: '400px',\n zIndex: 100,\n },\n hideComponents: ['DkStyleFontInput', 'DkStyleBackgroundInput'],\n },\n },\n {\n type: 'DkCubeImageInput',\n field: 'cubeData',\n title: '',\n value: { density: 4, selectedCubes: [] },\n },\n ]\n },\n}\n"],"names":[],"mappings":";;;;AAAA,MAAM,KAAQ,GAAA,0BAAA,CAAA;AACd,MAAM,IAAO,GAAA,gBAAA,CAAA;AACb,qBAAe;AAAA,EACb,IAAM,EAAA,qBAAA;AAAA,EACN,KAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAO,GAAA;AACL,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,IAAA;AAAA,MACN,KAAO,EAAA;AAAA,QACL,UAAU,EAAE,OAAA,EAAS,CAAG,EAAA,aAAA,EAAe,EAAG,EAAA;AAAA,OAC5C;AAAA,MACA,SAAW,EAAA,IAAA;AAAA,KACb,CAAA;AAAA,GACF;AAAA,EACA,KAAQ,GAAA;AACN,IAAO,OAAA;AAAA,MACL;AAAA,QACE,IAAM,EAAA,QAAA;AAAA,QACN,KAAO,EAAA,aAAA;AAAA,QACP,KAAO,EAAA,0BAAA;AAAA,QACP,KAAO,EAAA,KAAA;AAAA,OACT;AAAA,MACA;AAAA,QACE,IAAM,EAAA,cAAA;AAAA,QACN,KAAO,EAAA,YAAA;AAAA,QACP,KAAO,EAAA,0BAAA;AAAA,QACP,KAAO,EAAA;AAAA,UACL,QAAU,EAAA,IAAA;AAAA,UACV,WAAa,EAAA;AAAA,YACX,KAAO,EAAA,0BAAA;AAAA,YACP,IAAM,EAAA,OAAA;AAAA,YACN,MAAQ,EAAA,GAAA;AAAA,WACV;AAAA,UACA,cAAA,EAAgB,CAAC,kBAAA,EAAoB,wBAAwB,CAAA;AAAA,SAC/D;AAAA,OACF;AAAA,MACA;AAAA,QACE,IAAM,EAAA,kBAAA;AAAA,QACN,KAAO,EAAA,UAAA;AAAA,QACP,KAAO,EAAA,EAAA;AAAA,QACP,OAAO,EAAE,OAAA,EAAS,CAAG,EAAA,aAAA,EAAe,EAAG,EAAA;AAAA,OACzC;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAA;;;;"}
|
@@ -21,7 +21,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
21
21
|
}, {}, {
|
22
22
|
moduleSize(): number;
|
23
23
|
cubeHeight(): number;
|
24
|
-
_imageStyle():
|
24
|
+
_imageStyle(): {
|
25
25
|
width: string;
|
26
26
|
height: string;
|
27
27
|
};
|
@@ -32,6 +32,13 @@ declare const _default: import("vue").DefineComponent<{
|
|
32
32
|
height: string;
|
33
33
|
top: string;
|
34
34
|
left: string;
|
35
|
+
position: string;
|
36
|
+
backgroundColor: string;
|
37
|
+
border: string;
|
38
|
+
textAlign: string;
|
39
|
+
color: string;
|
40
|
+
cursor: string;
|
41
|
+
boxSizing: string;
|
35
42
|
};
|
36
43
|
getReferenceSize(cube: any): string;
|
37
44
|
}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
@@ -81,6 +81,9 @@ const _sfc_main = {
|
|
81
81
|
_imageStyle() {
|
82
82
|
// 默认返回的样式对象
|
83
83
|
const style = {};
|
84
|
+
if (!this.imageStyle) {
|
85
|
+
return style
|
86
|
+
}
|
84
87
|
// 检查是否存在左右外边距并且没有设置宽度
|
85
88
|
if (typeof this.imageStyle.marginLeft !== 'undefined' && this.imageStyle.width === undefined) {
|
86
89
|
style.width = `calc(100% - ${this.imageStyle.marginLeft})`;
|
@@ -129,6 +132,13 @@ const _sfc_main = {
|
|
129
132
|
height: `${(endY - startY) * this.moduleSize}px`,
|
130
133
|
top: `${startY * this.moduleSize}px`,
|
131
134
|
left: `${startX * this.moduleSize}px`,
|
135
|
+
position: 'absolute',
|
136
|
+
backgroundColor: '#fff',
|
137
|
+
border: '1px solid #ebedf0',
|
138
|
+
textAlign: 'center',
|
139
|
+
color: '#7d7e80',
|
140
|
+
cursor: 'pointer',
|
141
|
+
boxSizing: 'border-box',
|
132
142
|
}
|
133
143
|
},
|
134
144
|
getReferenceSize(cube) {
|