9 Commits

Author SHA1 Message Date
李志鹏
3ed5a37e5b 1 2026-05-15 16:25:08 +08:00
李志鹏
5546c71ec0 线稿图手动排序后更新bug 2026-05-15 15:01:17 +08:00
李志鹏
8a7776a4b6 去掉管理员界面的allUser编辑userName 2026-05-15 10:15:18 +08:00
X1627315083@163.com
a1281c8e3f fix 2026-05-14 18:06:01 +08:00
X1627315083@163.com
9a40e69081 fix 2026-05-14 09:27:06 +08:00
X1627315083@163.com
e27b43dc67 管理员页面增加globalAward流量页面 2026-05-13 17:29:05 +08:00
X1627315083@163.com
b6a55a8124 调整选择风格布局 2026-05-12 17:18:16 +08:00
6cace08a51 style: 去除底边距 2026-04-28 17:11:19 +08:00
6207095221 feat: 管理员页面 2026-04-28 17:11:10 +08:00
13 changed files with 2140 additions and 1551 deletions

View File

@@ -1,6 +1,6 @@
<template>
<div class="admin_page">
<div class="admin_table_search" :style="{height:isAwayOrUnfold?'7rem':''}">
<div class="admin_table_search" :style="{ height: isAwayOrUnfold ? '7rem' : '' }">
<div class="admin_state">
<div class="admin_state_item">
<span>Create Time:</span>
@@ -8,16 +8,11 @@
style="width: 250px"
class="range_picker"
v-model:value="rangePickerValue"
:placeholder="[
$t('HistoryPage.StartDate'),
$t('HistoryPage.EndDate'),
]"
:placeholder="[$t('HistoryPage.StartDate'), $t('HistoryPage.EndDate')]"
valueFormat="YYYY-MM-DD"
>
<template #suffixIcon>
<span
class="icon iconfont range_picker_icon icon-rili"
></span>
<span class="icon iconfont range_picker_icon icon-rili"></span>
</template>
</a-range-picker>
</div>
@@ -63,38 +58,50 @@
show-search
></a-select>
</div>
<div class="admin_state_item">
<span>Orgnization:</span>
<a-select
v-model:value="organizationId"
placeholder="Select the organization"
allow-clear
style="width: 250px"
@popupScroll="handleOrganizationScroll"
>
<a-select-option
v-for="item in organizationOptions"
:key="item.id"
:value="item.id"
>
{{ item.name }}
</a-select-option>
</a-select>
</div>
</div>
<div class="admin_search">
<div class="admin_search_item" @click="searchHistoryList" :style="{height:isAwayOrUnfold?'4rem':''}">
<div
class="admin_search_item"
@click="searchHistoryList"
:style="{ height: isAwayOrUnfold ? '4rem' : '' }"
>
Search
</div>
<div class="admin_search_item" @click="addhHistoryList">
Add
</div>
<div class="admin_search_item" @click="addhHistoryList">Add</div>
</div>
<div class="admin_state_list">
<div
class="admin_state_list_item"
@click="lastGeTrialList('year')"
>
<div class="admin_state_list_item" @click="lastGeTrialList('year')">
Nearly a year
</div>
<div
class="admin_state_list_item"
@click="lastGeTrialList('month')"
>
<div class="admin_state_list_item" @click="lastGeTrialList('month')">
Last month
</div>
<div
class="admin_state_list_item"
@click="lastGeTrialList('week')"
>
Last week
<div class="admin_state_list_item" @click="lastGeTrialList('week')">Last week</div>
</div>
</div>
</div>
<div class="awayOrUnfold" :class="{active:isAwayOrUnfold}">
<span class="icon iconfont menu_icon icon-xiala" @click="()=>isAwayOrUnfold = !isAwayOrUnfold"></span>
<div class="awayOrUnfold" :class="{ active: isAwayOrUnfold }">
<span
class="icon iconfont menu_icon icon-xiala"
@click="() => (isAwayOrUnfold = !isAwayOrUnfold)"
></span>
</div>
<div class="admin_table_content" ref="historyTable">
<a-table
@@ -104,24 +111,19 @@
:data-source="dataList"
:scroll="{ y: historyTableHeight }"
@change="changePage"
:showSorterTooltip='false'
:showSorterTooltip="false"
:pagination="{
showSizeChanger: true,
current: currentPage,
pageSize: pageSize,
total: total,
showQuickJumper: true,
bordered: false,
bordered: false
}"
>
<template #bodyCell="{ column, text, record, index }">
<div class="operate_list" v-if="column?.Operations">
<div
class="operate_item"
@click="setAagree(record)"
>
Edit
</div>
<div class="operate_item" @click="setAagree(record)">Edit</div>
<!-- <div
class="operate_item"
@click="deleteGroup(record, index)"
@@ -132,34 +134,29 @@
</template>
</a-table>
</div>
<allUserPoerationsVue ref="allUserPoerationsVue" @searchHistoryList="searchHistoryList"></allUserPoerationsVue>
<allUserPoerationsVue
ref="allUserPoerationsVue"
@searchHistoryList="searchHistoryList"
/>
</div>
</template>
<script lang="ts">
import {
defineComponent,
ref,
createVNode,
computed,
reactive,
toRefs,
onMounted,
} from "vue";
import { formatTime } from "@/tool/util";
import { useStore } from "vuex";
import { Https } from "@/tool/https";
import allUserPoerationsVue from "./allUserPoerations.vue";
import SelectUser from '@/component/common/SelectUser.vue'
import { defineComponent, ref, createVNode, computed, reactive, toRefs, onMounted } from "vue"
import { formatTime } from "@/tool/util"
import { useStore } from "vuex"
import { Https } from "@/tool/https"
import allUserPoerationsVue from "./allUserPoerations.vue"
import SelectUser from "@/component/common/SelectUser.vue"
export default defineComponent({
components: {allUserPoerationsVue,SelectUser},
components: { allUserPoerationsVue, SelectUser },
setup() {
const store:any = useStore()
const store: any = useStore()
let filter: any = reactive({
dataList: [],
tableLoading: false,
allCountry:[],
isAwayOrUnfold:false
});
allCountry: [],
isAwayOrUnfold: false
})
let filterData: any = reactive({
rangePickerValue: [],
currentPage: 1,
@@ -172,40 +169,41 @@ export default defineComponent({
occupation: "",
systemUser: "",
order: "", //'Ascending 升序 Descending 降序'
orderBy:'',
orderBy: "",
userName: "",
});
organizationId: null
})
let state: any = ref([
{
label: "all",
value: "",
value: ""
},
{
label:'visitor',
value:'0',
label: "visitor",
value: "0"
},
{
label:'yearly',
value:'1',
label: "yearly",
value: "1"
},
{
label:'monthly',
value:'2',
label: "monthly",
value: "2"
},
{
label:'trial',
value:'3',
label: "trial",
value: "3"
},
{
label: "userInEvent",
value: "4",
value: "4"
},
{
label: "Edu Admin",
value: "7",
},
]);
let renameData: any = ref({}); //修改名字选中的数据
value: "7"
}
])
let renameData: any = ref({}) //修改名字选中的数据
const columns: any = computed(() => {
return [
{
@@ -213,25 +211,25 @@ export default defineComponent({
align: "center",
dataIndex: "id",
key: "id",
width:100,
width: 100,
fixed: "left",
sorter: true,
sorter: true
},
{
title: "Email",
align: "center",
dataIndex: "userEmail",
key: "userEmail",
width:200,
ellipsis:true
width: 200,
ellipsis: true
},
{
title: "User Name",
align: "center",
dataIndex: "userName",
key: "userName",
width:150,
ellipsis:true
width: 150,
ellipsis: true
// customRender: (record: any) => {
// let time = formatTime(
// record.text / 1000,
@@ -245,77 +243,77 @@ export default defineComponent({
align: "center",
dataIndex: "language",
key: "language",
width:100,
ellipsis:true,
width: 100,
ellipsis: true
},
{
title: "Valid Start Time",
align: "center",
dataIndex: "validStartTime",
key: "validstartTime",
width:200,
ellipsis:true,
width: 200,
ellipsis: true,
customRender: (record: any) => {
let time = ''
if(record.text){
time = formatTime(record.text / 1000, 'YYYY-MM-DD hh:mm:ss')
let time = ""
if (record.text) {
time = formatTime(record.text / 1000, "YYYY-MM-DD hh:mm:ss")
}
return time
},
}
},
{
title: "Valid End Time",
align: "center",
dataIndex: "validEndTime",
key: "validendTime",
width:200,
ellipsis:true,
width: 200,
ellipsis: true,
customRender: (record: any) => {
let time = ''
if(record.text){
time = formatTime(record.text / 1000, 'YYYY-MM-DD hh:mm:ss')
let time = ""
if (record.text) {
time = formatTime(record.text / 1000, "YYYY-MM-DD hh:mm:ss")
}
return time
},
}
},
{
title: "Country or Region",
align: "center",
dataIndex: "country",
key: "country",
width:200,
width: 200
},
{
title: "Create Date",
align: "center",
dataIndex: "createDate",
key: "createDate",
width:200,
sorter: true,
width: 200,
sorter: true
},
{
title: "Is Beginner",
align: "center",
dataIndex: "isBeginner",
key: "isBeginner",
width:80,
ellipsis:true,
width: 80,
ellipsis: true,
customRender: (record: any) => {
let str;
let str
if (record.value == 1) {
str = "Yes";
str = "Yes"
} else {
str = "No";
str = "No"
}
return str
}
return str;
},
},
{
title: 'Machine Room Ip',
title: "Machine Room Ip",
align: "center",
dataIndex: "browserIdentifiers",
key: "browserIdentifiers",
width:200,
width: 200
},
{
title: "Credits",
@@ -326,11 +324,11 @@ export default defineComponent({
// resizable: true,
dataIndex: "credits",
key: "credits",
width:100,
sorter: true,
width: 100,
sorter: true
},
{
title: 'User Type',
title: "User Type",
align: "center",
// width: 150,
// minWidth: 100,
@@ -338,84 +336,84 @@ export default defineComponent({
// resizable: true,
dataIndex: "systemUser",
key: "systemUser",
width:100,
width: 100,
customRender: (record: any) => {
let str;
let str
if (record.value == 0) {
str = "visitor";
str = "visitor"
} else if (record.value == 1) {
str = "yearly";
str = "yearly"
} else if (record.value == 2) {
str = "monthly";
str = "monthly"
} else if (record.value == 3) {
str = "trial";
str = "trial"
} else if (record.value == 4) {
str = "userInEvent";
str = "userInEvent"
} else if (record.value == 7) {
str = "Edu Admin";
str = "Edu Admin"
}
return str
}
return str;
},
},
{
title: "Operations",
key: "operation",
width:120,
width: 120,
align: "center",
fixed: "right",
// slots:{customRender:'action'}
Operations: true,
},
];
});
Operations: true
}
]
})
//改变页码
let changePage = (e: any, filters:any, sorter:any) => {
filterData.currentPage = e.current;
filterData.pageSize = e.pageSize;
if(sorter.order){
if(sorter.columnKey == 'id'){
filterData.orderBy = 'id'
}else if(sorter.columnKey == "createDate"){
filterData.orderBy = 'time'
}else if(sorter.columnKey == "credits"){
filterData.orderBy = 'credits'
let changePage = (e: any, filters: any, sorter: any) => {
filterData.currentPage = e.current
filterData.pageSize = e.pageSize
if (sorter.order) {
if (sorter.columnKey == "id") {
filterData.orderBy = "id"
} else if (sorter.columnKey == "createDate") {
filterData.orderBy = "time"
} else if (sorter.columnKey == "credits") {
filterData.orderBy = "credits"
}
}
if(sorter.order){
filterData.order = sorter.order == "descend" ? "Descending" : "Ascending";
}else{
filterData.order = ''
if (sorter.order) {
filterData.order = sorter.order == "descend" ? "Descending" : "Ascending"
} else {
filterData.order = ""
}
gettrialList()
}
gettrialList();
};
//查询列表
let searchHistoryList = () => {
filterData.currentPage = 1;
gettrialList();
};
filterData.currentPage = 1
gettrialList()
}
let clearHistoryList = () => {
filterData.rangePickerValue = [],
filterData.currentPage = 1,
filterData.pageSize = 10,
filterData.total = 0,
filterData.country = "",
filterData.email = "",
filterData.userType = "",
filterData.ids = [],
filterData.occupation = "",
filterData.order = "", //'Ascending 升序 Descending 降序'
filterData.orderBy = "", //'Ascending 升序 Descending 降序'
filterData.systemUser = "",
filterData.userName = "";
};
;((filterData.rangePickerValue = []),
(filterData.currentPage = 1),
(filterData.pageSize = 10),
(filterData.total = 0),
(filterData.country = ""),
(filterData.email = ""),
(filterData.userType = ""),
(filterData.ids = []),
(filterData.occupation = ""),
(filterData.order = ""), //'Ascending 升序 Descending 降序'
(filterData.orderBy = ""), //'Ascending 升序 Descending 降序'
(filterData.systemUser = ""),
(filterData.userName = ""))
}
let setHistoryListData = () => {
let startDate: any = filterData.rangePickerValue?.[0]
? filterData.rangePickerValue[0] + " " + "00:00:00"
: "";
: ""
let endDate: any = filterData.rangePickerValue?.[1]
? filterData.rangePickerValue[1] + " " + "23:59:59"
: "";
: ""
let data = {
endTime: endDate,
startTime: startDate,
@@ -430,63 +428,118 @@ export default defineComponent({
order: filterData.order,
orderBy: filterData.orderBy,
userName: filterData.userName,
};
return data;
};
organizationId: filterData.organizationId
}
return data
}
//获取列表
let gettrialList = () => {
filter.tableLoading = true;
let data = setHistoryListData();
Https.axiosPost(Https.httpUrls.getUserInfo, data).then(
(rv: any) => {
filter.tableLoading = true
let data = setHistoryListData()
Https.axiosPost(Https.httpUrls.getUserInfo, data).then((rv: any) => {
if (rv) {
// this.dataList = rv
filter.dataList = rv.records;
filterData.total = rv.total;
filter.tableLoading = false;
filter.dataList = rv.records
filterData.total = rv.total
filter.tableLoading = false
// this.workspaceItem.position = this.singleTypeList[0].label
}
})
}
);
};
let lastGeTrialList = (str: string) => {
clearHistoryList();
let currentDate = new Date();
let currentTimestamp = Math.floor(currentDate.getTime() / 1000);
clearHistoryList()
let currentDate = new Date()
let currentTimestamp = Math.floor(currentDate.getTime() / 1000)
// 计算30天前的时间戳
let thirtyDaysAgoTimestamp;
let thirtyDaysAgoTimestamp
if (str == "year") {
thirtyDaysAgoTimestamp = currentTimestamp - 360 * 24 * 60 * 60;
thirtyDaysAgoTimestamp = currentTimestamp - 360 * 24 * 60 * 60
} else if (str == "month") {
thirtyDaysAgoTimestamp = currentTimestamp - 30 * 24 * 60 * 60;
thirtyDaysAgoTimestamp = currentTimestamp - 30 * 24 * 60 * 60
} else if (str == "week") {
thirtyDaysAgoTimestamp = currentTimestamp - 7 * 24 * 60 * 60;
thirtyDaysAgoTimestamp = currentTimestamp - 7 * 24 * 60 * 60
}
filterData.rangePickerValue[0] = formatTime(thirtyDaysAgoTimestamp, "YYYY-MM-DD")
gettrialList()
}
filterData.rangePickerValue[0] = formatTime(
thirtyDaysAgoTimestamp,
"YYYY-MM-DD"
);
gettrialList();
};
let filterOption = (input: any, option: any) => {
// 使用 option.label 进行搜索
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
};
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
}
let addhHistoryList = () => {
allUserPoerationsVue.value.init('Add','')
};
allUserPoerationsVue.value.init("Add", "")
}
let allUserPoerationsVue = ref()
let setAagree = (data:any) =>{
allUserPoerationsVue.value.init('Edit',data)
let setAagree = (data: any) => {
allUserPoerationsVue.value.init("Edit", data)
}
const organizationOptions = ref([])
const organizationParams = reactive({
page: 1,
size: 10,
total: 0
})
const organizationLoading = ref(false)
const getOrganizationList = async (isLoadMore = false) => {
console.log("111111")
if (organizationLoading.value) return
if (isLoadMore) {
const loaded = organizationParams.page * organizationParams.size
if (organizationParams.total && loaded >= organizationParams.total) return
organizationParams.page += 1
} else {
organizationParams.page = 1
organizationOptions.value = []
}
organizationLoading.value = true
try {
const { total, ...requestParams } = organizationParams
const rv: any = await Https.axiosPost(
Https.httpUrls.queryOrganization,
requestParams
)
if (rv) {
const newRecords = rv.records || []
// 遍历新数据,如果已存在则覆盖,不存在则追加
newRecords.forEach((newOrg: any) => {
const newOrgId = String(newOrg.id)
const existingIndex = organizationOptions.value.findIndex(
(org: any) => String(org.id) === newOrgId
)
if (existingIndex !== -1) {
// 如果已存在,用新数据覆盖旧项
organizationOptions.value[existingIndex] = newOrg
} else {
// 如果不存在,追加到末尾
organizationOptions.value.push(newOrg)
}
})
organizationParams.total = rv.total || 0
}
} finally {
organizationLoading.value = false
}
}
const handleOrganizationScroll = (e: any) => {
const target = e?.target
if (!target) return
const nearBottom = target.scrollTop + target.clientHeight >= target.scrollHeight - 20
if (nearBottom) {
getOrganizationList(true)
}
}
onMounted(() => {
let allCountry: any = sessionStorage.getItem("allCountry");
let allCountry: any = sessionStorage.getItem("allCountry")
if (allCountry) {
filter.allCountry = JSON.parse(allCountry);
filter.allCountry = JSON.parse(allCountry)
}
gettrialList();
});
gettrialList()
getOrganizationList()
})
return {
...toRefs(filter),
...toRefs(filterData),
@@ -501,29 +554,32 @@ export default defineComponent({
filterOption,
allUserPoerationsVue,
setAagree,
};
handleOrganizationScroll,
getOrganizationList,
organizationOptions,
organizationParams
}
},
data() {
return {
historyTableHeight: 0,
handleResizeColumn: (w: any, col: any) => {
col.width = w;
},
};
col.width = w
}
}
},
mounted() {
let historyTable: any = this.$refs.historyTable;
this.historyTableHeight = historyTable.clientHeight - 200;
let historyTable: any = this.$refs.historyTable
this.historyTableHeight = historyTable.clientHeight - 200
},
methods: {},
});
methods: {}
})
</script>
<style lang="less" scoped>
.admin_page .admin_table_search .admin_state {
display: flex;
flex-wrap: wrap;
}
.admin_page{
.admin_page {
}
</style>

View File

@@ -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()

View 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

View File

@@ -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' && 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){

View File

@@ -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?.()

View File

@@ -734,6 +734,8 @@ 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) {

View File

@@ -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]);

View File

@@ -258,6 +258,7 @@ methods: {
display: flex;
justify-content: center;
align-items: center;
text-align: center;
}
}
.content_bottom_item:nth-child(4n){

View File

@@ -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"),
},
],
},

View File

@@ -87,8 +87,10 @@ const DesignDetail : Module<DesignDetail,RootState> = {
left:0,
top:0,
}
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]

View File

@@ -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
}
]
}

View File

@@ -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`, //创建云生成