Merge remote-tracking branch 'origin/StableVersion' into localDevelop

This commit is contained in:
X1627315083
2024-05-28 16:06:01 +08:00
22 changed files with 342 additions and 219 deletions

View File

@@ -86,7 +86,7 @@
<i v-else class="fi fi-rr-picture centent clothes_item_icon" @click="openCurrent(1)"></i>
</div>
<div class="clothes_detail_item clothes_detail_item_print" :class="[current.id?'':'hideCursor']">
<div class="clothes_detail_item clothes_detail_item_print" :class="[current?.id?'':'hideCursor']">
<div class="clothes_item_header">
<i class="fi fi-rs-comments"></i>
<div>{{ $t('DesignDetail.CurrentPrint') }}</div>
@@ -100,7 +100,7 @@
</div>
</div>
<div class="clothes_detail_item clothes_detail_item_color" :class="[current.id?'':'hideCursor']">
<div class="clothes_detail_item clothes_detail_item_color" :class="[current?.id?'':'hideCursor']">
<div class="clothes_item_header">
<i class="fi fi-rs-comments"></i>
<div>{{ $t('DesignDetail.CurrentColor') }}</div>
@@ -278,6 +278,7 @@ export default defineComponent({
watch:{
designItemDetail:{
handler: async function(newVal,oldVal) {
let designItemDetail = JSON.parse(JSON.stringify(this.store.state.DesignDetailModule.designItemDetail))
this.ifSubmit = designItemDetail.ifSubmit?designItemDetail.ifSubmit:false
if(newVal.clothes.length == 0){
@@ -676,7 +677,7 @@ export default defineComponent({
changed:item.changed?item.changed:false,
designType:item.designType?item.designType:"Library",
offset:item.layersObject?.[1]?.offset == null?[0,0]:item.layersObject[1].offset,
scale:item.layersObject?.[1]?.scale?item.layersObject[1].scale:1,
scale:item.layersObject?.[1]?.scale?item.layersObject[1].scale:[1,1],
printObject:{
ifSingle:item.printObject.ifSingle == null ? false : item.printObject.ifSingle,
// path:item.printObject.path?item.printObject.path :'',
@@ -850,7 +851,9 @@ export default defineComponent({
}else{
this.deleteShow = false
let designItemDetail = JSON.parse(JSON.stringify(this.designItemDetail))
let data:any = this.setSubmitItem('preview',true)
if(!this.deleteItemShow){
return
@@ -858,10 +861,17 @@ export default defineComponent({
this.loadingShow = true
Https.axiosPost(Https.httpUrls.designSingle, data).then(
(rv) => {
designItemDetail.currentFullBodyView = rv.currentFullBodyView
designItemDetail.ifSubmit = true
this.designItemDetail.currentFullBodyView = rv.currentFullBodyView
this.designItemDetail.ifSubmit = true
this.loadingShow = false
// if(this.designItemDetail.clothes[this.designItemDetail.clothes.legnth-1] && !this.designItemDetail.clothes[this.designItemDetail.clothes.legnth-1].id){
// this.designItemDetail.clothes.split(this.designItemDetail.clothes.legnth-1,1)
// }
if(data.designSingleItemDTOList[data.designSingleItemDTOList.legnth-1] && !data.designSingleItemDTOList[data.designSingleItemDTOList.legnth-1].id){
data.designSingleItemDTOList.split(data.designSingleItemDTOList.legnth-1,1)
}
this.store.commit("setDesignItemDetail", designItemDetail);
console.log(123);
this.store.commit("setDesignPreviewData", data);
this.setRevocation(designItemDetail,data)
this.deleteItemShow = false
@@ -931,6 +941,7 @@ export default defineComponent({
"minIOPath": "",
"color": color,
gradient:gradient,
priority:10,
"printObject": {
"ifSingle": null,
"prints": [
@@ -944,10 +955,10 @@ export default defineComponent({
// let DesignDetailAlter:any = this.$refs.DesignDetailAlter
// DesignDetailAlter.changePlace()
this.designOrder = true
if(this.designItemDetail.clothes?.[this.designItemDetail?.clothes.length-1]?.id){
if(this.designItemDetail.clothes?.[this.designItemDetail?.clothes.length-1]?.id || this.designItemDetail.clothes?.length == 0){
this.designItemDetail.clothes.push(aa)
}else{
return
}
this.clothesDetail(aa,this.designItemDetail.clothes.length-1)
let DesignDetailAlter:any = this.$refs.DesignDetailAlter
@@ -971,8 +982,13 @@ export default defineComponent({
let designItemDetail = JSON.parse(JSON.stringify(this.store.state.DesignDetailModule.designItemDetail))
this.designOrder = true
this.current = designItemDetail.clothes[index]
if(this.current.id && !designItemDetail.clothes[designItemDetail.clothes.length-1].id){
if(clothes){
this.current = clothes
}else{
this.current = designItemDetail.clothes[index]
}
if(!this.current) return
if(this.current?.id && !designItemDetail?.clothes[designItemDetail.clothes.length-1].id){
designItemDetail.clothes.splice(designItemDetail.clothes.length-1,1)
this.store.commit('setDesignItemDetail',designItemDetail)
}
@@ -985,6 +1001,7 @@ export default defineComponent({
}
});
}
this.currentIndex = this.currentIndex>0?this.currentIndex:0
data.designSingleItemDTOList[this.currentIndex] = {
color:`${this.current.color.r} ${this.current.color.g} ${this.current.color.b}`,
@@ -994,7 +1011,7 @@ export default defineComponent({
path:this.current.minIOPath?this.current.minIOPath:'',
offset:this.current.layersObject?.[1]?.offset?this.current.layersObject[1].offset:[0,0],
priority:this.current.priority,
scale:this.current.layersObject?.[1]?.scale?this.current.layersObject[1].scale:1,
scale:this.current.layersObject?.[1]?.scale?this.current.layersObject[1].scale:[1,1],
printObject:{
ifSingle:this.current?.printObject?.ifSingle == null ? false : this.current?.printObject?.ifSingle,
// prints:this.current?.printObject[0]?.path == null ? [] : [{

View File

@@ -566,7 +566,17 @@ export default defineComponent({
init(num){
this.type_ = num
this.select = true
let arr = this.current.color
let arr
if(this.current?.color){
arr = this.current.color
}else{
arr = {
r: 0,
g: 0,
b: 0,
a:1,
}
}
// if(!arr[3]){
// arr[3] = 1
// }

View File

@@ -60,7 +60,7 @@
<img v-show="type_==1" class="result_appare_img" :src="sketchImg?.path?sketchImg?.path:current?.path" :title="current?.type">
<!-- <img v-show="type_==2" class="result_print_img" :src="current?.path" :title="current?.type" @click="setPrint"> -->
<div v-show="type_==2" class="result_print_img" @click="setPrint" :title="current?.type">
<img v-for="item in current.layersObject" :src="item.imageUrl" alt="">
<img v-for="item in current?.layersObject" :src="item.imageUrl" alt="">
</div>
</div>
@@ -84,7 +84,7 @@
</div>
</div>
</div>
<div v-show="type_ == 1 || type_ == 3" @click.stop="setPreview" class="subitOkPreviewBtn" :class="[ !sketchImg.id?!current.id?'active':'':'' ]">{{ $t('DesignDetailEnd.preview') }}</div>
<div v-show="type_ == 1 || type_ == 3" @click.stop="setPreview" class="subitOkPreviewBtn" :class="[ !sketchImg?.id?!current?.id?'active':'':'' ]">{{ $t('DesignDetailEnd.preview') }}</div>
<div v-if="type_ == 2 && current?.printObject?.prints?.[0]?.path != null" @click.stop="setPrint" class="subitOkPreviewBtn Guide_1_23">{{ $t('DesignDetailEnd.Layout') }}</div>
<div v-else-if="type_ == 2 && designItemDetail?.clothes?.[currentIndex]?.printObject?.prints?.[0]?.path != null && current?.printObject?.prints?.[0]?.path == null" @click.stop="setPreview" class="subitOkPreviewBtn">{{ $t('DesignDetailEnd.preview') }}</div>
<DesignPrintOperation v-if="!moible" ref="DesignPrintOperation"></DesignPrintOperation>
@@ -189,7 +189,7 @@ export default defineComponent({
this.type_ = num
this.colorList[this.selectIndex] = this.$parent.selectColor
this.overallSingle = this.current?.printObject?.ifSingle == null?false:this.current?.printObject?.ifSingle
this.systemDesignerPercentage = this.current?.printObject?.scale?this.current?.printObject?.scale:.3*100
this.systemDesignerPercentage = this.current?.printObject?.ifSingle?this.current?.printObject?.prints[0].scale?this.current?.printObject?.prints[0].scale*100:100:100
},
//模型
setSketchImg(v){
@@ -304,13 +304,16 @@ export default defineComponent({
}
}
})
index = index? index:0
if(!this.current.id){
data.designSingleItemDTOList[index].priority = zIndex+=1
if(index){
data.designSingleItemDTOList[index].priority = zIndex+=1
}
}
if(this.type_ == 1){
if(data.designSingleItemDTOList[index].path != this.sketchImg.minIOPath && this.sketchImg.id_){
data.designSingleItemDTOList[index].offset = [0,0]
data.designSingleItemDTOList[index].scale = 1
data.designSingleItemDTOList[index].scale = [1,1]
}
data.designSingleItemDTOList = this.soleId(data.designSingleItemDTOList,index)
this.sketchImg.id_ = data.designSingleItemDTOList[index].id

View File

@@ -41,6 +41,7 @@
<div v-show="!overallSingle" class="habit_System_Designer">
<div class="habit_System_Designer_text">{{ $t('DesignPrintOperation.Scale') }}</div>
<a-slider id="system_silder"
:min="1"
v-model:value="systemDesignerPercentage"
@afterChange="systemDesigner"
:tip-formatter="formatter"
@@ -296,15 +297,14 @@ export default defineComponent({
this.refetchTemplate(0)
}
})
}
},
systemDesigner(num) {
let DesignPrintOperationParent = this.$parent
DesignPrintOperationParent.systemDesignerPercentage = num
},
formatter(value) {
if(value<30)value = 30
return `${value*3}%`;
},
@@ -608,7 +608,7 @@ export default defineComponent({
let location
arr.forEach((v,index)=>{
if(!this.overallSingle){
scale = this.systemDesignerPercentage*3/100
scale = this.systemDesignerPercentage/100
// location = [arr[index].style.left.replace(/px/g,'')*sketchNum+this.print.width.replace(/px/g,'')/2-7,arr[index].style.top.replace(/px/g,'')*sketchNum+this.print.height.replace(/px/g,'')/2-7]
location = [arr[index].style.left.replace(/px/g,'')*sketchNum,arr[index].style.top.replace(/px/g,'')*sketchNum]
}else{
@@ -678,24 +678,28 @@ export default defineComponent({
index = ind
}
})
designItemDetail.currentFullBodyView = this.designItemDetailTS.rv.currentFullBodyView
designItemDetail.clothes[index].printObject.ifSingle = this.overallSingle
designItemDetail.clothes[index].layersObject = this.designItemDetailTS.rv.clothes[index].layersObject
designItemDetail.clothes[index].printObject.prints = this.computeZindex()
designItemDetail.ifSubmit = true
designItemDetail.clothes.forEach((item,i)=>{
let a
if(item.layersObject[0].imageCategory.indexOf("back") == -1){
a = item.layersObject[0]
item.layersObject[0] = item.layersObject[1]
item.layersObject[1] = a
}
item.layersObject[0].id = this.store.state.DesignDetailModule.designItemDetail.clothes[i].layersObject[0].id
item.layersObject[1].id = this.store.state.DesignDetailModule.designItemDetail.clothes[i].layersObject[1].id
})
this.store.commit("setDesignItemDetail", designItemDetail);
this.store.commit("setDesignPreviewData", this.designItemDetailTS.data);
this.setRevocation(designItemDetail,this.designItemDetailTS.data)
console.log(this.designItemDetailTS);
if(this.designItemDetailTS.rv){
designItemDetail.currentFullBodyView = this.designItemDetailTS.rv.currentFullBodyView
designItemDetail.clothes[index].printObject.ifSingle = this.overallSingle
designItemDetail.clothes[index].layersObject = this.designItemDetailTS.rv.clothes[index].layersObject
designItemDetail.clothes[index].printObject.prints = this.computeZindex()
designItemDetail.ifSubmit = true
designItemDetail.clothes.forEach((item,i)=>{
let a
if(item.layersObject[0].imageCategory.indexOf("back") == -1){
a = item.layersObject[0]
item.layersObject[0] = item.layersObject[1]
item.layersObject[1] = a
}
item.layersObject[0].id = this.store.state.DesignDetailModule.designItemDetail.clothes[i].layersObject[0]?.id
item.layersObject[1].id = this.store.state.DesignDetailModule.designItemDetail.clothes[i].layersObject[1]?.id
})
this.store.commit("setDesignItemDetail", designItemDetail);
this.store.commit("setDesignPreviewData", this.designItemDetailTS.data);
this.setRevocation(designItemDetail,this.designItemDetailTS.data)
this.designItemDetailTS = {}
}
this.designOpenrtion = false
if(this.driver__.driver){
driverObj__.moveNext();

View File

@@ -41,6 +41,7 @@
<div v-show="!overallSingle" class="habit_System_Designer">
<div class="habit_System_Designer_text">Scale</div>
<a-slider id="system_silder"
:min="1"
v-model:value="systemDesignerPercentage"
@afterChange="systemDesigner"
:tip-formatter="formatter"
@@ -610,7 +611,7 @@ export default defineComponent({
let location
arr.forEach((v,index)=>{
if(!this.overallSingle){
scale = this.systemDesignerPercentage*3/100
scale = this.systemDesignerPercentage/100
// location = [arr[index].style.left.replace(/px/g,'')*sketchNum+this.print.width.replace(/px/g,'')/2-7,arr[index].style.top.replace(/px/g,'')*sketchNum+this.print.height.replace(/px/g,'')/2-7]
location = [arr[index].style.left.replace(/px/g,'')*sketchNum,arr[index].style.top.replace(/px/g,'')*sketchNum]
}else{
@@ -681,27 +682,27 @@ export default defineComponent({
}
})
this.designOpenrtion = false
if(!this.designItemDetailTS.rv){
return
if(this.designItemDetailTS.rv){
designItemDetail.currentFullBodyView = this.designItemDetailTS.rv.currentFullBodyView
designItemDetail.clothes[index].printObject.ifSingle = this.overallSingle
designItemDetail.clothes[index].layersObject = this.designItemDetailTS.rv.clothes[index].layersObject
designItemDetail.clothes[index].printObject.prints = this.computeZindex()
designItemDetail.ifSubmit = true
designItemDetail.clothes.forEach((item,i)=>{
let a
if(item.layersObject[0].imageCategory.indexOf("back") == -1){
a = item.layersObject[0]
item.layersObject[0] = item.layersObject[1]
item.layersObject[1] = a
}
item.layersObject[0].id = this.store.state.DesignDetailModule.designItemDetail.clothes[i].layersObject[0].id
item.layersObject[1].id = this.store.state.DesignDetailModule.designItemDetail.clothes[i].layersObject[1].id
})
this.store.commit("setDesignItemDetail", designItemDetail);
this.store.commit("setDesignPreviewData", this.designItemDetailTS.data);
this.setRevocation(designItemDetail,this.designItemDetailTS.data)
this.designItemDetailTS = {}
}
designItemDetail.currentFullBodyView = this.designItemDetailTS.rv.currentFullBodyView
designItemDetail.clothes[index].printObject.ifSingle = this.overallSingle
designItemDetail.clothes[index].layersObject = this.designItemDetailTS.rv.clothes[index].layersObject
designItemDetail.clothes[index].printObject.prints = this.computeZindex()
designItemDetail.ifSubmit = true
designItemDetail.clothes.forEach((item,i)=>{
let a
if(item.layersObject[0].imageCategory.indexOf("back") == -1){
a = item.layersObject[0]
item.layersObject[0] = item.layersObject[1]
item.layersObject[1] = a
}
item.layersObject[0].id = this.store.state.DesignDetailModule.designItemDetail.clothes[i].layersObject[0].id
item.layersObject[1].id = this.store.state.DesignDetailModule.designItemDetail.clothes[i].layersObject[1].id
})
this.store.commit("setDesignItemDetail", designItemDetail);
this.store.commit("setDesignPreviewData", this.designItemDetailTS.data);
this.setRevocation(designItemDetail,this.designItemDetailTS.data)
if(this.driver__.driver){
driverObj__.moveNext();
}
@@ -755,6 +756,11 @@ export default defineComponent({
<style lang="less">
.designOpenrtionMobile_modal {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
-khtml-user-select: none;
user-select: none;
// max-width: 1440px;
.mark_loading{
position: absolute;

View File

@@ -97,18 +97,19 @@
<div class="habit_System_Designer">
<a-slider id="system_silder"
v-model:value="workspaceItem.systemDesignerPercentage"
@afterChange="systemDesigner"
@afterChange="setSystemDesigner"
:tip-formatter="formatter"
:tooltipVisible="false"
>
</a-slider>
<div class="habit_System_Designer_text_max">
<div class="habit_System_Designer_text">
{{ $t('Habit.System') }}<span>(100%)</span>
{{ $t('Habit.System') }}<span>({{systemDesigner.system}}%)</span>
</div>
<div class="habit_System_Designer_text">
{{ $t('Habit.Designer') }}<span>(100%)</span>
{{ $t('Habit.Designer') }}<span>({{systemDesigner.designer}}%)</span>
</div>
</div>
</div>
@@ -202,6 +203,10 @@ export default defineComponent({
mannequinType:'',
mannequinId:'',
})
let systemDesigner:any = ref({
system:0,
designer:0,
})
let mannequins:any = ref([{},{}])
let systemSeleves= ref(false);
let total= ref(0);
@@ -240,6 +245,7 @@ export default defineComponent({
return{
systemSeleves,
mannequins,
systemDesigner,
openType,
total,
driver__,
@@ -473,6 +479,7 @@ export default defineComponent({
// v.putName = false
// });
this.workspace.id = rv.id
if(str == 'detail') this.getDetail(rv.id)
this.total = rv.page.total
this.workspace.workspaceList = rv.page.content
@@ -653,10 +660,12 @@ export default defineComponent({
}
},
//设置系统设计占比
systemDesigner(num: number) {
setSystemDesigner(num: number) {
this.workspaceItem.systemDesignerPercentage = num
},
formatter(value: number) {
this.systemDesigner.system = 100 - value
this.systemDesigner.designer = value
let num = Math.abs((value-50)*2)
return `${num}%`;
},
@@ -968,7 +977,7 @@ export default defineComponent({
}
.habit_System_Designer {
margin-top: calc(8rem*1.2);
// margin-top: calc(8rem*1.2);
:deep(.ant-slider-track),
:deep(.ant-slider-rail) {

View File

@@ -139,7 +139,6 @@ export default defineComponent({
let front = []
let back = []
let body
designItemDetail.others.forEach((item) => {
if(item.type == 'Body'){
body = item
@@ -299,7 +298,7 @@ export default defineComponent({
w = (e.x - this.frontBack.front[this.imgDomIndex].centers.left)
h = (e.x - this.frontBack.front[this.imgDomIndex].centers.left)*num
width = w+'px'
height = w*num+'px'
// height = w*num+'px'
}else if(this.direction == 'top'){
num = width/height
this.frontBack.front[this.imgDomIndex].style.top = 'auto'
@@ -309,19 +308,19 @@ export default defineComponent({
h = (this.frontBack.front[this.imgDomIndex].centers.top - e.y)
height = h+'px'
width = h*num+'px'
// width = h*num+'px'
}else if(this.direction == 'bottom'){
num = width/height
h = (e.y - this.frontBack.front[this.imgDomIndex].centers.top)
height = h+'px'
width = h*num+'px'
// width = h*num+'px'
}else if(this.direction == 'left'){
this.frontBack.front[this.imgDomIndex].style.left = 'auto'
this.frontBack.front[this.imgDomIndex].style.right = parentNode.offsetWidth -imgDomWH.width - this.imgDom.offsetLeft+'px'
w = (this.frontBack.front[this.imgDomIndex].centers.left - e.x)
width = w+'px'
height = w*num+'px'
// height = w*num+'px'
}
//判断尺寸是否到边
this.frontBack.front[this.imgDomIndex].style.width = width
@@ -409,8 +408,10 @@ export default defineComponent({
if(item.id == arr[index].id && !arr[index].similarity){
let y = ((arr[index]?.style?.top.replace(/px/g,'')*ratio).toFixed(0) - arr[index]?.position[0])
let x = ((arr[index]?.style?.left.replace(/px/g,'')*ratio).toFixed(0) - arr[index]?.position[1])
let scale = arr[index]?.imageSize?Number(((arr[index]?.style?.width.replace(/px/g,'')*ratio)/(arr[index]?.imageSize[0]/arr[index].scale)).toFixed(2)):1
item.scale = scale
let scaleWidth = arr[index]?.imageSize?Number(((arr[index]?.style?.width.replace(/px/g,'')*ratio)/(arr[index]?.imageSize[0]/arr[index].scale[0])).toFixed(2)):1
let scaleHeight = arr[index]?.imageSize?Number(((arr[index]?.style?.height.replace(/px/g,'')*ratio)/(arr[index]?.imageSize[1]/arr[index].scale[1])).toFixed(2)):1
// let widthScale = (arr[index].style.width.replace(/px/g,'')/arr[index].style.height.replace(/px/g,'')).toFixed(2)
item.scale = [scaleWidth,scaleHeight]
let top = y == 0 ? item.offset[1]:y+item.offset[1]
let left = x == 0 ? item.offset[0]:x+item.offset[0]
item.offset = [left,top]

View File

@@ -296,7 +296,7 @@ export default defineComponent({
w = (e.changedTouches[0].pageX -imgDomWH.left)
h = (e.changedTouches[0].pageX -imgDomWH.left)*num
width = w+'px'
height = w*num+'px'
// height = w*num+'px'
}else if(this.direction == 'top'){
num = width/height
this.frontBack.front[this.imgDomIndex].style.top = 'auto'
@@ -307,18 +307,18 @@ export default defineComponent({
h = (this.frontBack.front[this.imgDomIndex].centers.top - e.changedTouches[0].pageY)
height = h+'px'
width = h*num+'px'
// width = h*num+'px'
}else if(this.direction == 'bottom'){
num = width/height
h = (e.changedTouches[0].pageY -imgDomWH.top)
height = h+'px'
width = h*num+'px'
// width = h*num+'px'
}else if(this.direction == 'left'){
w = (this.frontBack.front[this.imgDomIndex].centers.left - e.changedTouches[0].pageX)
this.frontBack.front[this.imgDomIndex].style.left = 'auto'
this.frontBack.front[this.imgDomIndex].style.right = this.frontBack.front[this.imgDomIndex].centers.right+'px'
width = w+'px'
height = w*num+'px'
// height = w*num+'px'
}
//判断尺寸是否到边
this.frontBack.front[this.imgDomIndex].style.width = width
@@ -403,12 +403,13 @@ export default defineComponent({
imageCategory1 = arr[1].imageCategory
}
arr.forEach((i)=>{
let imageCategory = i.imageCategory.split('_')[0]
if(item.id == i.id){
let y = ((i?.style?.top.replace(/px/g,'')*ratio).toFixed(0) - i?.position[0])
let x = ((i?.style?.left.replace(/px/g,'')*ratio).toFixed(0) - i?.position[1])
let scale = i?.imageSize?Number(((i?.style?.width.replace(/px/g,'')*ratio)/(i?.imageSize[0]/i.scale)).toFixed(2)):1
item.scale = scale
// let scale = i?.imageSize?Number(((i?.style?.width.replace(/px/g,'')*ratio)/(i?.imageSize[0]/i.scale)).toFixed(2)):1
let scaleWidth = i?.imageSize?Number(((i?.style?.width.replace(/px/g,'')*ratio)/(i?.imageSize[0]/i.scale[0])).toFixed(2)):1
let scaleHeight = i?.imageSize?Number(((i?.style?.height.replace(/px/g,'')*ratio)/(i?.imageSize[1]/i.scale[1])).toFixed(2)):1
item.scale = [scaleWidth,scaleHeight]
let top = y == 0 ? item.offset[1]:y+item.offset[1]
let left = x == 0 ? item.offset[0]:x+item.offset[0]
item.offset = [left,top]
@@ -449,6 +450,11 @@ export default defineComponent({
<style lang="less" scoped>
.designOpenrtion_modal {
// max-width: 1440px;
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
-khtml-user-select: none;
user-select: none;
.ant-modal-body{
padding: calc(4rem*1.2) calc(5rem*1.2) calc(0rem*1.2)!important;
// height: calc(65vh - 6.calc(4rem*1.2));