Compare commits
15 Commits
82941bca7c
...
StableVers
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3ed5a37e5b | ||
|
|
5546c71ec0 | ||
|
|
8a7776a4b6 | ||
|
|
a1281c8e3f | ||
|
|
9a40e69081 | ||
|
|
e27b43dc67 | ||
|
|
b6a55a8124 | ||
| 6cace08a51 | |||
| 6207095221 | |||
|
|
7bb38bf2e5 | ||
|
|
743fc762d6 | ||
| 7297e4e7a4 | |||
| 3bff1ebb66 | |||
| 0d1656ee0a | |||
| 7d0873d874 |
File diff suppressed because it is too large
Load Diff
@@ -321,6 +321,7 @@ export default defineComponent({
|
||||
data = setEditData()
|
||||
if (!data.userName || !data.userEmail || !data.validEndTime || !data.systemUser)
|
||||
return message.warning('Please check the input box marked with *')
|
||||
delete data.userName
|
||||
Https.axiosPost(Https.httpUrls.modifyUser, {}, { params: data }).then(rv => {
|
||||
if (rv) {
|
||||
cancelDsign()
|
||||
|
||||
99
src/component/Administrator/globalAwardPopularity.vue
Normal file
99
src/component/Administrator/globalAwardPopularity.vue
Normal file
@@ -0,0 +1,99 @@
|
||||
<template>
|
||||
<div class="admin_page globalAwardPopularity" ref="adminPage">
|
||||
<div class="admin_table_search">
|
||||
<div class="admin_state">
|
||||
<div class="admin_state_item">
|
||||
<span>Current Time:</span>
|
||||
<span>{{ currentTimeStr }}</span>
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>Raw Visi Count:</span>
|
||||
<span>{{ rawVisitCount }}</span>
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>Unique Visit Count:</span>
|
||||
<span>{{ uniqueVisitCount }}</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="admin_search">
|
||||
<div class="admin_search_item" @click="getGlobalAwardPopularity">
|
||||
<i class="fi fi-br-refresh"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="admin_table_content" ref="questionnaireTable">
|
||||
|
||||
</div> -->
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts">
|
||||
import { defineComponent, ref, createVNode,toRefs, computed,reactive, onMounted, nextTick } from "vue";
|
||||
import { Https } from "@/tool/https";
|
||||
import type { TableColumnsType } from 'ant-design-vue';
|
||||
|
||||
export default defineComponent({
|
||||
components: {},
|
||||
setup() {
|
||||
const currentTime = ref(new Date())
|
||||
const currentTimeStr = computed(()=>{
|
||||
return currentTime.value.toLocaleString()
|
||||
})
|
||||
const rawVisitCount = ref(0)
|
||||
const uniqueVisitCount = ref(0)
|
||||
const getGlobalAwardPopularity = () => {
|
||||
Https.axiosGet(Https.httpUrls.getGlobalAwardPopularity,).then((rv)=>{
|
||||
currentTime.value = new Date()
|
||||
rawVisitCount.value = rv.rawVisitCount
|
||||
uniqueVisitCount.value = rv.uniqueVisitCount
|
||||
})
|
||||
}
|
||||
onMounted(()=>{
|
||||
getGlobalAwardPopularity()
|
||||
})
|
||||
return {
|
||||
currentTimeStr,
|
||||
getGlobalAwardPopularity,
|
||||
rawVisitCount,
|
||||
uniqueVisitCount,
|
||||
};
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
methods: {},
|
||||
});
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.admin_page.globalAwardPopularity{
|
||||
.admin_table_search{
|
||||
// flex: 1;
|
||||
width: min-content;
|
||||
justify-content: flex-start;
|
||||
border-radius: 2rem;
|
||||
box-shadow: 0 0 1rem rgba(0, 0, 0, 0.2);
|
||||
margin-left: 2rem;
|
||||
flex-wrap: nowrap;
|
||||
gap: 3rem;
|
||||
}
|
||||
.admin_state{
|
||||
flex-direction: column;
|
||||
width: auto;
|
||||
cursor: auto;
|
||||
.admin_state_item{
|
||||
> span{
|
||||
font-size: 2rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
.admin_search{
|
||||
i{
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -409,7 +409,7 @@ export class BrushIndicator {
|
||||
// this.show(e.e);
|
||||
this._mouseEnterHandler && this._mouseEnterHandler(e)
|
||||
} else {
|
||||
// requestIdleCallback(() => {
|
||||
// setTimeout(() => {
|
||||
// this.updatePosition(e.e);
|
||||
// });
|
||||
|
||||
|
||||
@@ -133,11 +133,12 @@ export class RedGreenModeManager {
|
||||
this.canvas.on("mouse:up", (event) => {
|
||||
// 可以在这里添加更多逻辑,比如生成图片或更新状态
|
||||
nextTick(() => {
|
||||
requestIdleCallback(async () => {
|
||||
setTimeout(async () => {
|
||||
if (!this.isInitialized) {
|
||||
console.warn("红绿图模式未初始化,无法处理鼠标事件");
|
||||
return;
|
||||
}
|
||||
console.log("鼠标抬起事件触发", this.onImageGenerated);
|
||||
if (this.onImageGenerated) {
|
||||
const imageData = await this.canvasManager.exportImage({
|
||||
restoreOpacityInRedGreen: true, // 恢复红绿图模式下的透明度
|
||||
|
||||
@@ -37,7 +37,6 @@ export class ThumbnailManager {
|
||||
|
||||
// 延迟执行,避免阻塞UI
|
||||
fabricObjects.length > 0 &&
|
||||
requestIdleCallback(() => {
|
||||
setTimeout(async () => {
|
||||
const base64 = await this._generateLayerThumbnailNow(fabricObjects, layer);
|
||||
// this.layerThumbnails.set(layerId, base64);
|
||||
@@ -55,7 +54,6 @@ export class ThumbnailManager {
|
||||
console.error("生成图层缩略图时出错:", error);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -65,7 +63,7 @@ export class ThumbnailManager {
|
||||
generateAllLayerThumbnails(layers) {
|
||||
if (!layers || !Array.isArray(layers)) return;
|
||||
|
||||
requestIdleCallback(() => {
|
||||
setTimeout(() => {
|
||||
setTimeout(() => {
|
||||
layers.forEach((layer) => {
|
||||
if (layer && layer.id) {
|
||||
|
||||
@@ -155,7 +155,7 @@ export class LiquifyRealTimeUpdater {
|
||||
// 使用requestAnimationFrame进行批量渲染优化
|
||||
// if (!this.renderingScheduled && !this.config.skipRenderDuringDrag) {
|
||||
// this.renderingScheduled = true;
|
||||
// requestIdleCallback(() => {
|
||||
// setTimeout(() => {
|
||||
// this.canvas.renderAll();
|
||||
// this.renderingScheduled = false;
|
||||
// });
|
||||
|
||||
@@ -331,7 +331,6 @@ export default defineComponent({
|
||||
store.commit('DesignDetail/setCurrentDetailType',str)
|
||||
}
|
||||
const setClothes = async (list:any,str:string)=>{
|
||||
console.log(JSON.parse(JSON.stringify(list)))
|
||||
let clothesList:any = []
|
||||
if(detailData.isEditPattern.value == 'editSketch')await detailDom.canvasBox.submitBase64Data().then((rv)=>{
|
||||
detailData.selectDetail.sketchString = rv
|
||||
@@ -369,7 +368,6 @@ export default defineComponent({
|
||||
// }else if(isCurrent){
|
||||
|
||||
// }
|
||||
console.log(JSON.parse(JSON.stringify(detailData.selectDetail.color)),'=====')
|
||||
color = list[i].color?.rgba?.r != null?`${list[i].color.rgba.r} ${list[i].color.rgba.g} ${list[i].color.rgba.b}`:''
|
||||
gradient = list[i].gradient
|
||||
if((detailData.currentDetailType == 'sketch' && newData?.sketch) || detailData.isEditPattern.value == 'editSketch'){
|
||||
@@ -565,11 +563,14 @@ export default defineComponent({
|
||||
}
|
||||
}else{
|
||||
//走画布合成图片并且直接分割
|
||||
if(detailData.isEditPattern.value !== 'canvasEditor'){
|
||||
if(detailDom.detailRight?.privewDetail)await (detailDom.detailRight as any).privewDetail()
|
||||
if(detailData.isEditPattern.value !== 'canvasEditor' && detailData.isEditPattern.value !== 'redGreenExample'){
|
||||
if(detailData.isEditPattern.value !== 'canvasEditor'){
|
||||
if(detailDom.detailRight?.privewDetail)await (detailDom.detailRight as any).privewDetail()
|
||||
}
|
||||
let otherData = await updateOtherLayers('single')
|
||||
await detailDom.canvasBox.updateOtherLayers(otherData)
|
||||
}
|
||||
|
||||
await detailDom.canvasBox.privewDetail()
|
||||
await upDateFrontBackSketch()
|
||||
await uploadSelectDetail()
|
||||
@@ -625,7 +626,7 @@ export default defineComponent({
|
||||
if(detailData.isEditPattern.value && detailData.isEditPattern.value == str){
|
||||
// await detailDom.canvasBox.saveCanvas()
|
||||
await (detailDom.canvasBox as any).privewDetail()
|
||||
if(detailData.isEditPattern.value == 'canvasEditor')await uploadSelectDetail()
|
||||
if(detailData.isEditPattern.value == 'canvasEditor' || detailData.isEditPattern.value == 'redGreenExample')await uploadSelectDetail()
|
||||
detailData.isEditPattern.value = ''
|
||||
}else{
|
||||
// if(detailData.isEditPattern.value && (str == 'canvasEditor' || str == 'redGreenExample')){
|
||||
@@ -780,8 +781,7 @@ export default defineComponent({
|
||||
color.gradient = canvasColor.gradient
|
||||
}
|
||||
}
|
||||
|
||||
if(detailData.isEditPattern.value == 'canvasEditor'){
|
||||
if(detailData.isEditPattern.value == 'canvasEditor' || detailData.isEditPattern.value == 'redGreenExample'){
|
||||
delete detailData.selectDetail.newDetail
|
||||
detailData.selectDetail.trims.prints = allInfo.trims || []
|
||||
detailData.selectDetail.printObject.prints = allInfo.prints || []
|
||||
@@ -804,7 +804,6 @@ export default defineComponent({
|
||||
if(detailData.currentDetailType == 'color'){
|
||||
detailData.detailLeftColorKey++
|
||||
}
|
||||
|
||||
}
|
||||
const canvasReload = async ()=>{
|
||||
if(detailData.isEditPattern.value){
|
||||
|
||||
@@ -124,7 +124,11 @@ export default defineComponent({
|
||||
const handleResize = ()=>{
|
||||
clearTimeout(time)
|
||||
time = setTimeout(()=>{
|
||||
store.commit('DesignDetail/setDesignDetail',getDetailListData.designDetail)
|
||||
let data = {
|
||||
...getDetailListData.designDetail,
|
||||
fromType:'resize',
|
||||
}
|
||||
store.commit('DesignDetail/setDesignDetail',data)
|
||||
getDetailListDom.position?.updataPosition?.()
|
||||
getDetailListDom.modelNav?.setItemPosition?.()
|
||||
getDetailListDom.position?.updateRect?.()
|
||||
|
||||
@@ -189,11 +189,11 @@ export default defineComponent({
|
||||
}
|
||||
return { scaleX, scaleY, rotate };
|
||||
}
|
||||
const initMoveableForSelected = () => {
|
||||
const initMoveableForSelected = async (isDestroy:boolean = false) => {
|
||||
// 销毁旧的实例
|
||||
if(selectItem.imgDomIndex == -1)return
|
||||
if (moveableInstance.value) {
|
||||
moveableInstance.value.destroy();
|
||||
if (moveableInstance?.value?.destroy && !isDestroy) {
|
||||
moveableInstance?.value?.destroy();
|
||||
}
|
||||
|
||||
const selectedEl = elementRefs.value[selectItem.imgDomIndex];
|
||||
@@ -509,7 +509,7 @@ export default defineComponent({
|
||||
watch(()=>detailData.frontBack.front.length,(newValue,oldValue)=>{
|
||||
if(selectItem.selectDetail?.id)selectItem.imgDomIndex = detailData.frontBack.front.findIndex((item:any)=>item.id == selectItem.selectDetail?.id)
|
||||
setTimeout(()=>{
|
||||
initMoveableForSelected()
|
||||
initMoveableForSelected(oldValue == 0)
|
||||
},100)
|
||||
})
|
||||
const setRevocation = async ()=>{
|
||||
|
||||
@@ -243,7 +243,7 @@ export default defineComponent({
|
||||
}
|
||||
.eventsDetail_content_right {
|
||||
.modal_title_text {
|
||||
letter-spacing: 0.4rem;
|
||||
letter-spacing: 0.3rem;
|
||||
font-weight: 600;
|
||||
&-header {
|
||||
display: flex;
|
||||
@@ -310,5 +310,9 @@ export default defineComponent({
|
||||
color: rgba(0, 0, 0, 0.45);
|
||||
font-size: var(--aida-fsize1-4);
|
||||
font-weight: 400;
|
||||
letter-spacing: 0.3rem;
|
||||
}
|
||||
.modal_title_text.content.award{
|
||||
line-height: 1.3;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -734,7 +734,9 @@ export default defineComponent({
|
||||
let maxImg = 8
|
||||
if (this.type_.type2 == 'Sketchboard') {
|
||||
maxImg = 20
|
||||
}
|
||||
}else if(this.type_.type2 == 'Printboard'){
|
||||
maxImg = 16
|
||||
}
|
||||
let parent: any = this.$parent
|
||||
if (parent.isUseGenerate) {
|
||||
// parent.useGenerate.designType = 'collection'
|
||||
|
||||
@@ -745,6 +745,12 @@ export default defineComponent({
|
||||
"userLikeId": likeItem.id
|
||||
}
|
||||
arrData.push(obj)
|
||||
designData.selectLikeDesign.forEach((v:any)=>{
|
||||
if(v.id === likeItem.id){
|
||||
v.oldSort = v.sort
|
||||
v.sort = likeItem.sort
|
||||
}
|
||||
})
|
||||
})
|
||||
let data = {
|
||||
"userLikeGroupId": userGroupId.value,
|
||||
@@ -1304,9 +1310,9 @@ export default defineComponent({
|
||||
})
|
||||
return
|
||||
}
|
||||
const parents = designData.selectLikeDesign.filter((item:any) => item.resultType === 'Design');
|
||||
const parents = designData.selectLikeDesign.filter((item:any) => item.resultType === 'Design').filter((item:any) => likeDesignCollectionList.value.some((v:any) => (v.id === item.id)));
|
||||
parents.map((parent:any) => {
|
||||
parent.sort = parent.oldSort||parent.sort
|
||||
parent.sort = likeDesignCollectionList.value.find((v:any) => v.id === parent.id)?.sort || parent.oldSort||parent.sort
|
||||
delete parent.oldSort
|
||||
return {
|
||||
...parent,
|
||||
@@ -1533,7 +1539,7 @@ export default defineComponent({
|
||||
this.observerData.time = setTimeout(()=>{
|
||||
|
||||
this.setSystemDesigner(0)
|
||||
this.setDesignItemStyle()
|
||||
// this.setDesignItemStyle()
|
||||
},100)
|
||||
// const { width } = entry.contentRect;
|
||||
}
|
||||
@@ -1931,6 +1937,7 @@ export default defineComponent({
|
||||
this.disLikeLoading = true;
|
||||
Https.axiosPost(Https.httpUrls.designDislike, data)
|
||||
.then((rv: any) => {
|
||||
console.log(rv)
|
||||
if (rv) {
|
||||
this.recycleDomHidden = true
|
||||
this.store.commit("addDesignCollectionList", [design]);
|
||||
|
||||
@@ -258,6 +258,7 @@ methods: {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.content_bottom_item:nth-child(4n){
|
||||
|
||||
@@ -337,6 +337,13 @@ const routes: Array<RouteRecordRaw> = [
|
||||
meta: { enter: 3 },
|
||||
component: () =>
|
||||
import("@/component/Administrator/SE/getGenerateFrequency/index.vue"),
|
||||
},
|
||||
{
|
||||
path: "globalAwardPopularity",
|
||||
name: "globalAwardPopularity",
|
||||
meta: { enter: 3 },
|
||||
component: () =>
|
||||
import("@/component/Administrator/globalAwardPopularity.vue"),
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -87,8 +87,10 @@ const DesignDetail : Module<DesignDetail,RootState> = {
|
||||
left:0,
|
||||
top:0,
|
||||
}
|
||||
v.maskMinioUrl = v.layersObject?.[0]?.maskMinioUrl
|
||||
v.maskUrl = v.layersObject?.[0]?.maskUrl
|
||||
if(data?.fromType !== 'resize'){
|
||||
v.maskMinioUrl = v.layersObject?.[0]?.maskMinioUrl
|
||||
v.maskUrl = v.layersObject?.[0]?.maskUrl
|
||||
}
|
||||
v.layersObject[i].designOpenrtionBtn = false
|
||||
if(v.layersObject[i].imageCategory.indexOf("back") == -1){
|
||||
front[index] = v.layersObject[i]
|
||||
|
||||
@@ -198,6 +198,13 @@ const all = (t)=>{
|
||||
route: '/administrator/subscriptionPlan',
|
||||
key: 'sub14',
|
||||
isShow: true
|
||||
},
|
||||
{
|
||||
name: 'Global Award Popularity',
|
||||
icon: 'usetime',
|
||||
route: '/administrator/globalAwardPopularity',
|
||||
key: 'sub15',
|
||||
isShow: true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -346,6 +346,7 @@ export const Https = {
|
||||
switchSubscribePlan: '/api/subscription_plan/switchSubscriptionPlan', // 切换管理员订阅计划
|
||||
switchSubAccountSubscribePlan:
|
||||
'/api/subscription_plan/switchSubAccSubscriptionPlan', // 切换子账号订阅计划
|
||||
getGlobalAwardPopularity: '/api/global-award/page/visit/count', // 获取global award流量
|
||||
|
||||
//云生成
|
||||
designCloud: `/api/design/designCloud`, //创建云生成
|
||||
|
||||
@@ -672,28 +672,40 @@ function sketchToMask(sketchImage) {
|
||||
img.src = sketchImage;
|
||||
});
|
||||
}
|
||||
|
||||
function isValidUrl(string) {
|
||||
try {
|
||||
const url = new URL(string)
|
||||
// 通常我们只需要 http 或 https 协议
|
||||
return url.protocol === "http:" || url.protocol === "https:"
|
||||
} catch (err) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
export {
|
||||
isEmail,
|
||||
getUploadUrl,
|
||||
getUniversalZoomLevel,
|
||||
rgbaToHex,
|
||||
getMinioUrl,
|
||||
base64ToFile,
|
||||
dataURLtoFile,
|
||||
blobToFile,
|
||||
base64toFile,
|
||||
rgbToHsv,
|
||||
formatTime,
|
||||
dataURLtoBlob,
|
||||
isMoible,
|
||||
downloadIamge,
|
||||
downloadVideoWithFetch,
|
||||
getBrowserInfo,
|
||||
setPubDate,
|
||||
murmur,
|
||||
setGradual,
|
||||
calculateGradientCoordinate,
|
||||
segmentImage,
|
||||
UrlToFile,
|
||||
sketchToMask
|
||||
isEmail,
|
||||
getUploadUrl,
|
||||
getUniversalZoomLevel,
|
||||
rgbaToHex,
|
||||
getMinioUrl,
|
||||
base64ToFile,
|
||||
dataURLtoFile,
|
||||
blobToFile,
|
||||
base64toFile,
|
||||
rgbToHsv,
|
||||
formatTime,
|
||||
dataURLtoBlob,
|
||||
isMoible,
|
||||
downloadIamge,
|
||||
downloadVideoWithFetch,
|
||||
getBrowserInfo,
|
||||
setPubDate,
|
||||
murmur,
|
||||
setGradual,
|
||||
calculateGradientCoordinate,
|
||||
segmentImage,
|
||||
UrlToFile,
|
||||
sketchToMask,
|
||||
isValidUrl
|
||||
}
|
||||
Reference in New Issue
Block a user