This commit is contained in:
X1627315083
2024-12-18 17:38:43 +08:00
90 changed files with 3220 additions and 865 deletions

View File

@@ -178,7 +178,7 @@
<label class="uploadImage">
<i class="fi fi-br-upload" ></i>
<input type="file" @change="uploadImage">
<input type="file" @change="uploadImage" accept="image/*">
</label>
<i class="icon iconfont" @click="setOperation('text')" :class="{active:operation == 'text'}">T</i>
<i class="icon iconfont icon-IC-yehua" @click="setLiquefaction()"></i>
@@ -302,7 +302,7 @@
</div>
</template>
<script>
import {defineComponent, computed, h, ref, nextTick, inject, reactive, onMounted,
import {defineComponent, computed, h, ref, nextTick, inject, reactive, onMounted,onBeforeUnmount
} from "vue";
import { Https } from "@/tool/https";
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
@@ -734,6 +734,7 @@ export default defineComponent({
imgUrl = data.designOutfitUrl;
imgWidth[key] = setImageWidth(key,img);
}
if(key == 'upImgFiles')imgWidth[key] = setImageWidth(key,img);
let url = imgUrl.split('?')[0]
var match = url.match(/:(\d+)\/(.*)/);
@@ -1197,8 +1198,10 @@ export default defineComponent({
// let brushwork = ref('')
// 监听键盘的 keydown 和 keyup 事件
let keyDown = []
let oldOperation = ''
let canvasKeyDown = (event) => {
if(keyDown.indexOf(event.key)>-1){
event.preventDefault();
if(keyDown.indexOf(event.code)>-1){
}else{
keyDown.push(event.code)
if(event.key === 'Enter' && operation.value == 'fold'){
@@ -1213,13 +1216,54 @@ export default defineComponent({
copy()
}else if(keyDown.indexOf('ControlLeft') > -1 && keyDown.indexOf('KeyV') > -1){
paste()
}else if(keyDown.indexOf('BracketLeft') > -1){
let width = canvasPencilWidth.value[operation.value]
console.log(width);
canvasPencilWidth.value[operation.value] = (width - 5) < 3?3:(width - 5)
console.log(canvasPencilWidth.value[operation.value]);
setPencilWidth()
}else if(keyDown.indexOf('BracketRight') > -1){
let width = canvasPencilWidth.value[operation.value]
canvasPencilWidth.value[operation.value] = (width + 5) > 50?50:(width + 5)
setPencilWidth()
}else if(keyDown.indexOf('KeyI') > -1){
getColor()//吸色
}else if(keyDown.indexOf('ControlLeft') > -1 && keyDown.indexOf('KeyD') > -1){
canvas.discardActiveObject().renderAll();
}else if(keyDown.indexOf('ControlLeft') > -1 && keyDown.indexOf('KeyO') > -1){
let input = document.querySelector('.uploadImage input')
input.click()
}else if(keyDown.indexOf('Backquote') > -1){
if(operation.value == 'pencil' || operation.value == 'texture'){
oldOperation = operation.value
setOperation('eraser')
}
}
}
}
let getColor = async ()=>{
try {
const dropper = new EyeDropper();
const result = await dropper.open();
let hex = result.sRGBHex.replace("#", "");
// 将十六进制颜色码拆分成红、绿、蓝三个部分
// const r = parseInt(hex.substring(0, 2), 16);
// const g = parseInt(hex.substring(2, 4), 16);
// const b = parseInt(hex.substring(4, 6), 16);
canvasPencilColor.value = result.sRGBHex;
setPencilColor()
} catch (e) {
message.info(this.t('ColorboardUpload.jsContent1'))
}
}
let canvasKeyUp = (event) =>{
keyDown = keyDown.filter(function(item) {
return event.code !== item;
})
if(event.code == 'Backquote' && oldOperation){
setOperation(oldOperation)
oldOperation = ''
}
}
let setCanvasKeyDown = (event)=>{
// let e = event || window.event
@@ -1378,6 +1422,7 @@ export default defineComponent({
Https.axiosPost(Https.httpUrls.canvasElementUpload, formData,config).then((rv)=>{
rv.imgUrl = rv.minioUrl
fabric.Image.fromURL(rv.minioUrl,(img) => {
console.log(canvas.wrapperEl.parentNode.scrollTop);
setCanvasImage(img,"upImgFiles",0,canvas.wrapperEl.parentNode.scrollTop,rv)
canvas.add(img);
},{ crossOrigin: "Anonymous" })
@@ -1570,6 +1615,7 @@ export default defineComponent({
setFontFamily()
return
}
console.log(canvasPencilColor.value);
// brushIndicator.fill = canvasPencilColor.value;
if(canvas.freeDrawingBrush.isEraser){
}else{
@@ -2061,6 +2107,10 @@ export default defineComponent({
fontFamily.value = arr[0].value
});
onBeforeUnmount(()=>{
document.removeEventListener("keydown", setCanvasKeyDown);
document.removeEventListener("keyup", clearCanvasKeyDown);
})
return {
toSvg,
t,