Merge branch 'dev_vite' of ssh://18.167.251.121:10002/aidlab/aida_front into dev_vite
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
VITE_USER_NODE_ENV = 'development'
|
VITE_USER_NODE_ENV = 'development_cloud'
|
||||||
# VITE_APP_BASE_URL = 'https://aida.com.hk/test'
|
# VITE_APP_BASE_URL = 'https://aida.com.hk/test'
|
||||||
# VITE_APP_BASE_URL = 'http://18.167.251.121:10088'
|
# VITE_APP_BASE_URL = 'http://18.167.251.121:10088'
|
||||||
# VITE_APP_BASE_URL = 'https://api.aida.com.hk'
|
# VITE_APP_BASE_URL = 'https://api.aida.com.hk'
|
||||||
|
|||||||
@@ -409,7 +409,7 @@ export class BrushIndicator {
|
|||||||
// this.show(e.e);
|
// this.show(e.e);
|
||||||
this._mouseEnterHandler && this._mouseEnterHandler(e)
|
this._mouseEnterHandler && this._mouseEnterHandler(e)
|
||||||
} else {
|
} else {
|
||||||
// requestIdleCallback(() => {
|
// setTimeout(() => {
|
||||||
// this.updatePosition(e.e);
|
// this.updatePosition(e.e);
|
||||||
// });
|
// });
|
||||||
|
|
||||||
|
|||||||
@@ -133,11 +133,12 @@ export class RedGreenModeManager {
|
|||||||
this.canvas.on("mouse:up", (event) => {
|
this.canvas.on("mouse:up", (event) => {
|
||||||
// 可以在这里添加更多逻辑,比如生成图片或更新状态
|
// 可以在这里添加更多逻辑,比如生成图片或更新状态
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
requestIdleCallback(async () => {
|
setTimeout(async () => {
|
||||||
if (!this.isInitialized) {
|
if (!this.isInitialized) {
|
||||||
console.warn("红绿图模式未初始化,无法处理鼠标事件");
|
console.warn("红绿图模式未初始化,无法处理鼠标事件");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
console.log("鼠标抬起事件触发", this.onImageGenerated);
|
||||||
if (this.onImageGenerated) {
|
if (this.onImageGenerated) {
|
||||||
const imageData = await this.canvasManager.exportImage({
|
const imageData = await this.canvasManager.exportImage({
|
||||||
restoreOpacityInRedGreen: true, // 恢复红绿图模式下的透明度
|
restoreOpacityInRedGreen: true, // 恢复红绿图模式下的透明度
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ export class ThumbnailManager {
|
|||||||
|
|
||||||
// 延迟执行,避免阻塞UI
|
// 延迟执行,避免阻塞UI
|
||||||
fabricObjects.length > 0 &&
|
fabricObjects.length > 0 &&
|
||||||
requestIdleCallback(() => {
|
|
||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
const base64 = await this._generateLayerThumbnailNow(fabricObjects, layer);
|
const base64 = await this._generateLayerThumbnailNow(fabricObjects, layer);
|
||||||
// this.layerThumbnails.set(layerId, base64);
|
// this.layerThumbnails.set(layerId, base64);
|
||||||
@@ -55,7 +54,6 @@ export class ThumbnailManager {
|
|||||||
console.error("生成图层缩略图时出错:", error);
|
console.error("生成图层缩略图时出错:", error);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -65,7 +63,7 @@ export class ThumbnailManager {
|
|||||||
generateAllLayerThumbnails(layers) {
|
generateAllLayerThumbnails(layers) {
|
||||||
if (!layers || !Array.isArray(layers)) return;
|
if (!layers || !Array.isArray(layers)) return;
|
||||||
|
|
||||||
requestIdleCallback(() => {
|
setTimeout(() => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
layers.forEach((layer) => {
|
layers.forEach((layer) => {
|
||||||
if (layer && layer.id) {
|
if (layer && layer.id) {
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ export class LiquifyRealTimeUpdater {
|
|||||||
// 使用requestAnimationFrame进行批量渲染优化
|
// 使用requestAnimationFrame进行批量渲染优化
|
||||||
// if (!this.renderingScheduled && !this.config.skipRenderDuringDrag) {
|
// if (!this.renderingScheduled && !this.config.skipRenderDuringDrag) {
|
||||||
// this.renderingScheduled = true;
|
// this.renderingScheduled = true;
|
||||||
// requestIdleCallback(() => {
|
// setTimeout(() => {
|
||||||
// this.canvas.renderAll();
|
// this.canvas.renderAll();
|
||||||
// this.renderingScheduled = false;
|
// this.renderingScheduled = false;
|
||||||
// });
|
// });
|
||||||
|
|||||||
@@ -189,11 +189,11 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
return { scaleX, scaleY, rotate };
|
return { scaleX, scaleY, rotate };
|
||||||
}
|
}
|
||||||
const initMoveableForSelected = () => {
|
const initMoveableForSelected = async (isDestroy:boolean = false) => {
|
||||||
// 销毁旧的实例
|
// 销毁旧的实例
|
||||||
if(selectItem.imgDomIndex == -1)return
|
if(selectItem.imgDomIndex == -1)return
|
||||||
if (moveableInstance.value) {
|
if (moveableInstance?.value?.destroy && !isDestroy) {
|
||||||
moveableInstance.value.destroy();
|
moveableInstance?.value?.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
const selectedEl = elementRefs.value[selectItem.imgDomIndex];
|
const selectedEl = elementRefs.value[selectItem.imgDomIndex];
|
||||||
@@ -509,7 +509,7 @@ export default defineComponent({
|
|||||||
watch(()=>detailData.frontBack.front.length,(newValue,oldValue)=>{
|
watch(()=>detailData.frontBack.front.length,(newValue,oldValue)=>{
|
||||||
if(selectItem.selectDetail?.id)selectItem.imgDomIndex = detailData.frontBack.front.findIndex((item:any)=>item.id == selectItem.selectDetail?.id)
|
if(selectItem.selectDetail?.id)selectItem.imgDomIndex = detailData.frontBack.front.findIndex((item:any)=>item.id == selectItem.selectDetail?.id)
|
||||||
setTimeout(()=>{
|
setTimeout(()=>{
|
||||||
initMoveableForSelected()
|
initMoveableForSelected(oldValue == 0)
|
||||||
},100)
|
},100)
|
||||||
})
|
})
|
||||||
const setRevocation = async ()=>{
|
const setRevocation = async ()=>{
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ const routes: Array<RouteRecordRaw> = [
|
|||||||
import("@/views/SellerDashboard/MyListings/createSelect/index.vue")
|
import("@/views/SellerDashboard/MyListings/createSelect/index.vue")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "select/:id",
|
path: "select/:collectionId",
|
||||||
name: "myListingsSelectItem",
|
name: "myListingsSelectItem",
|
||||||
meta: { enter: "all" },
|
meta: { enter: "all" },
|
||||||
component: () =>
|
component: () =>
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import UserHabit from './userHabit/userHabit'
|
|||||||
import Workspace from './workspace/workspace'
|
import Workspace from './workspace/workspace'
|
||||||
import Guide from './guide/guide'
|
import Guide from './guide/guide'
|
||||||
import adminPage from './adminPage/adminPage'
|
import adminPage from './adminPage/adminPage'
|
||||||
|
import seller from './seller/index'
|
||||||
export interface RootState{
|
export interface RootState{
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -41,5 +42,6 @@ export default createStore<RootState>({
|
|||||||
Workspace,
|
Workspace,
|
||||||
Guide,
|
Guide,
|
||||||
adminPage,
|
adminPage,
|
||||||
|
seller,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
6
src/store/seller/index.d.ts
vendored
Normal file
6
src/store/seller/index.d.ts
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
export const ApplyStatus = {
|
||||||
|
Null: null,// 未申请过
|
||||||
|
Pending: 0,// 已提交, 待审核
|
||||||
|
Approved: 1,// 审核通过
|
||||||
|
Rejected: 2,// 审核拒绝
|
||||||
|
}
|
||||||
40
src/store/seller/index.ts
Normal file
40
src/store/seller/index.ts
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
import { Module } from 'vuex'
|
||||||
|
import { RootState } from '../index'
|
||||||
|
import i18n from "@/lang/index";
|
||||||
|
import { Https } from '@/tool/https'
|
||||||
|
import { ApplyStatus } from "./index.d"
|
||||||
|
|
||||||
|
import store from '../index'
|
||||||
|
interface Seller {
|
||||||
|
isSeller: boolean,
|
||||||
|
applyStatus: number,
|
||||||
|
}
|
||||||
|
|
||||||
|
const seller: Module<Seller, RootState> = {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
isSeller: false,
|
||||||
|
applyStatus: null,
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
set_isSeller(state: Seller, value: boolean) {
|
||||||
|
state.isSeller = value
|
||||||
|
},
|
||||||
|
set_applyStatus(state: Seller, value: number) {
|
||||||
|
state.applyStatus = value
|
||||||
|
if (value == ApplyStatus.Approved) {
|
||||||
|
state.isSeller = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
actions: {
|
||||||
|
get_isSeller({ commit }) {
|
||||||
|
// Https.axiosGet(Https.httpUrls.checkSellerDesigner).then(rv => {
|
||||||
|
// commit('set_isSeller', !!rv)
|
||||||
|
// })
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default seller
|
||||||
@@ -475,6 +475,12 @@ export const Https = {
|
|||||||
|
|
||||||
// 卖家端接口
|
// 卖家端接口
|
||||||
checkSellerDesigner: '/seller/designer/check', // 检查卖家是否为设计师
|
checkSellerDesigner: '/seller/designer/check', // 检查卖家是否为设计师
|
||||||
|
getSellerApplyStatus: '/seller/designer/apply/status', // 获取卖家申请状态
|
||||||
|
submitSellerApply: '/seller/designer/apply', // 提交卖家申请
|
||||||
|
getSellerOrderSummary: '/seller/order/summary', // 获取卖家订单数据总览
|
||||||
|
getSellerOrderList: '/seller/order/page', // 获取卖家订单列表
|
||||||
|
getListingPopup: '/seller/listing/popup/check', // 获取是否勾选发布作品提示
|
||||||
|
setListingPopup: '/seller/listing/popup/set', // 设置是否勾选发布作品提示
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -373,11 +373,11 @@
|
|||||||
<i class="fi fi-rs-notebook"></i>
|
<i class="fi fi-rs-notebook"></i>
|
||||||
<span class="select_item_des">{{ $t('Header.ViewOrders') }}</span>
|
<span class="select_item_des">{{ $t('Header.ViewOrders') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="select_item" @click="onBecomeSeller">
|
<div class="select_item" @click="onBecomeSeller" v-if="!isSeller">
|
||||||
<span class="icon"><svg-icon name="seller-sellerIndex" /></span>
|
<span class="icon"><svg-icon name="seller-sellerIndex" /></span>
|
||||||
<span class="select_item_des">{{ $t('Header.BecomeSeller') }}</span>
|
<span class="select_item_des">{{ $t('Header.BecomeSeller') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="select_item" @click="onSellerDashboard">
|
<div class="select_item" @click="onSellerDashboard" v-else>
|
||||||
<span class="icon"><svg-icon name="seller-sellerIndex" /></span>
|
<span class="icon"><svg-icon name="seller-sellerIndex" /></span>
|
||||||
<span class="select_item_des">{{ $t('Header.SellerDashboard') }}</span>
|
<span class="select_item_des">{{ $t('Header.SellerDashboard') }}</span>
|
||||||
<a-badge :dot="true"></a-badge>
|
<a-badge :dot="true"></a-badge>
|
||||||
@@ -1073,9 +1073,13 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const isSeller = computed(() => {
|
||||||
|
return store.state.seller.isSeller
|
||||||
|
})
|
||||||
return {
|
return {
|
||||||
store,
|
store,
|
||||||
userDetail,
|
userDetail,
|
||||||
|
isSeller,
|
||||||
t,
|
t,
|
||||||
...toRefs(homeMainData),
|
...toRefs(homeMainData),
|
||||||
...toRefs(historyData),
|
...toRefs(historyData),
|
||||||
@@ -1150,6 +1154,7 @@ export default defineComponent({
|
|||||||
reject()
|
reject()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
this.store.dispatch('seller/get_isSeller')//获取是否是卖家
|
||||||
let isMurmur = getCookie('isMurmur') //获取是否是试用用户
|
let isMurmur = getCookie('isMurmur') //获取是否是试用用户
|
||||||
this.isMurmur = JSON.parse(isMurmur)
|
this.isMurmur = JSON.parse(isMurmur)
|
||||||
if (this.userDetail.userId && this.userDetail.userId > -1) {
|
if (this.userDetail.userId && this.userDetail.userId > -1) {
|
||||||
@@ -1215,7 +1220,6 @@ export default defineComponent({
|
|||||||
let payOrder = this.$refs.payOrder
|
let payOrder = this.$refs.payOrder
|
||||||
payOrder.init(orderId)
|
payOrder.init(orderId)
|
||||||
}
|
}
|
||||||
this.getCheckSellerDesigner()
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
setTask(data) {
|
setTask(data) {
|
||||||
@@ -1379,21 +1383,6 @@ export default defineComponent({
|
|||||||
this.store.commit('set_dataLoading', false)
|
this.store.commit('set_dataLoading', false)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
//获取是否为卖家
|
|
||||||
getCheckSellerDesigner() {
|
|
||||||
const config = {
|
|
||||||
params: {
|
|
||||||
userId: this.userDetail.userId
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Https.axiosGet(Https.httpUrls.checkSellerDesigner, config).then(rv => {
|
|
||||||
if (rv) {
|
|
||||||
console.log(rv)
|
|
||||||
return rv
|
|
||||||
}
|
|
||||||
return null
|
|
||||||
})
|
|
||||||
},
|
|
||||||
setLocale(v) {
|
setLocale(v) {
|
||||||
// 同步更新 localStorage 中的 loginLanguage
|
// 同步更新 localStorage 中的 loginLanguage
|
||||||
if (v) {
|
if (v) {
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
tip="Join the Stylish Parade and start selling your design work"
|
tip="Join the Stylish Parade and start selling your design work"
|
||||||
/>
|
/>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<seller-review v-if="isSubmit" />
|
<seller-apply v-if="applyStatus === null" @submit="onSubmit" />
|
||||||
<seller-apply v-else @submit="isSubmit = true" />
|
<seller-review v-else />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -16,7 +16,20 @@
|
|||||||
import sellerHeader from "../seller-header.vue"
|
import sellerHeader from "../seller-header.vue"
|
||||||
import sellerReview from "./sellerReview.vue"
|
import sellerReview from "./sellerReview.vue"
|
||||||
import sellerApply from "./sellerApply.vue"
|
import sellerApply from "./sellerApply.vue"
|
||||||
const isSubmit = ref(false)
|
import { Https } from "@/tool/https"
|
||||||
|
import { useStore } from "vuex"
|
||||||
|
import { ApplyStatus } from "@/store/seller/index.d"
|
||||||
|
const store = useStore()
|
||||||
|
const applyStatus = computed(() => store.state.seller.applyStatus)
|
||||||
|
const onSubmit = () => store.commit("seller/set_applyStatus", ApplyStatus.Pending)
|
||||||
|
const getSellerApplyStatus = () => {
|
||||||
|
store.commit("set_loading", true)
|
||||||
|
Https.axiosGet(Https.httpUrls.getSellerApplyStatus).then((res) => {
|
||||||
|
store.commit("set_loading", false)
|
||||||
|
store.commit("seller/set_applyStatus", res)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
getSellerApplyStatus()
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="less">
|
<style scoped lang="less">
|
||||||
.become-seller {
|
.become-seller {
|
||||||
|
|||||||
@@ -109,6 +109,7 @@
|
|||||||
import { useRoute, useRouter } from "vue-router"
|
import { useRoute, useRouter } from "vue-router"
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
import { Https } from "@/tool/https"
|
||||||
const emit = defineEmits(["submit"])
|
const emit = defineEmits(["submit"])
|
||||||
const formRules = {
|
const formRules = {
|
||||||
storeName: [{ required: true, message: "Enter the store name" }],
|
storeName: [{ required: true, message: "Enter the store name" }],
|
||||||
@@ -140,8 +141,21 @@
|
|||||||
.validate()
|
.validate()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
console.log(formData)
|
console.log(formData)
|
||||||
|
const data = {
|
||||||
|
// userId: 0,
|
||||||
|
shopName: formData.storeName,
|
||||||
|
// avatar: "",
|
||||||
|
// brandBanner: "",
|
||||||
|
ownerName: formData.fullName,
|
||||||
|
email: formData.email,
|
||||||
|
mobile: formData.phoneNumber,
|
||||||
|
description: formData.description,
|
||||||
|
socialLinks: JSON.stringify(formData.links.filter((v) => v))
|
||||||
|
}
|
||||||
|
Https.axiosPost(Https.httpUrls.submitSellerApply, data).then((res) => {
|
||||||
emit("submit")
|
emit("submit")
|
||||||
})
|
})
|
||||||
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
console.log("validate failed")
|
console.log("validate failed")
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -23,23 +23,27 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, computed } from "vue"
|
import { ref, computed } from "vue"
|
||||||
import { useRoute, useRouter } from "vue-router"
|
import { useRoute, useRouter } from "vue-router"
|
||||||
|
import { useStore } from "vuex"
|
||||||
|
import { ApplyStatus } from "@/store/seller/index.d"
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const list = ref([
|
const store = useStore()
|
||||||
|
const applyStatus = computed(() => store.state.seller.applyStatus)
|
||||||
|
const list = computed(() => [
|
||||||
{
|
{
|
||||||
title: "Step 1: Submit Application",
|
title: "Step 1: Submit Application",
|
||||||
tip: "Fill out the seller information form and agree to our terms",
|
tip: "Fill out the seller information form and agree to our terms",
|
||||||
active: true
|
active: [ApplyStatus.Pending, ApplyStatus.Approved].includes(applyStatus.value)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Step 2: Review & Verification",
|
title: "Step 2: Review & Verification",
|
||||||
tip: "Our team will review your application (typically 1-3 business days)",
|
tip: "Our team will review your application (typically 1-3 business days)",
|
||||||
active: false
|
active: applyStatus.value === ApplyStatus.Approved
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Step 3: Start Selling",
|
title: "Step 3: Start Selling",
|
||||||
tip: "Once approved, access your seller dashboard and start listing products ",
|
tip: "Once approved, access your seller dashboard and start listing products ",
|
||||||
active: false
|
active: applyStatus.value === ApplyStatus.Approved
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
const onBackToHome = () => {
|
const onBackToHome = () => {
|
||||||
|
|||||||
@@ -1,116 +1,72 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted, onUnmounted, reactive, toRefs } from "vue";
|
import { ref, onMounted, onUnmounted, reactive, toRefs } from "vue";
|
||||||
|
import { Https } from '@/tool/https'
|
||||||
|
import { setPubDate } from "@/tool/util";
|
||||||
|
import { useI18n } from "vue-i18n";
|
||||||
|
|
||||||
//const props = defineProps({
|
const props = defineProps({
|
||||||
//})
|
getCollectionListData: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({})
|
||||||
|
}
|
||||||
|
})
|
||||||
const emit = defineEmits([
|
const emit = defineEmits([
|
||||||
'selectCollectionItem',
|
'selectCollectionItem',
|
||||||
])
|
])
|
||||||
const current = ref(1)
|
const {t} = useI18n()
|
||||||
|
const page = ref(1)
|
||||||
|
const size = ref(6)
|
||||||
|
const total = ref(0)
|
||||||
const list = ref([
|
const list = ref([
|
||||||
{
|
|
||||||
imgList:[
|
|
||||||
{
|
|
||||||
url:'https://www.minio-api.aida.com.hk/aida-users/83/avatar/2b3d5756-ea29-4020-86a9-3b02cfc73b5a.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260410%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260410T013002Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=eedfd4114bde66f0ff8fe5e4d7a7274d9007b25deb40ee82a19427f29601e89b',
|
|
||||||
},{
|
|
||||||
url:'https://www.minio-api.aida.com.hk/aida-users/83/avatar/2b3d5756-ea29-4020-86a9-3b02cfc73b5a.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260410%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260410T013002Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=eedfd4114bde66f0ff8fe5e4d7a7274d9007b25deb40ee82a19427f29601e89b',
|
|
||||||
},{
|
|
||||||
url:'https://www.minio-api.aida.com.hk/aida-users/83/avatar/2b3d5756-ea29-4020-86a9-3b02cfc73b5a.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260410%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260410T013002Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=eedfd4114bde66f0ff8fe5e4d7a7274d9007b25deb40ee82a19427f29601e89b',
|
|
||||||
},{
|
|
||||||
url:'https://www.minio-api.aida.com.hk/aida-users/83/avatar/2b3d5756-ea29-4020-86a9-3b02cfc73b5a.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260410%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260410T013002Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=eedfd4114bde66f0ff8fe5e4d7a7274d9007b25deb40ee82a19427f29601e89b',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
type:'Series',
|
|
||||||
name:'Christmas',
|
|
||||||
sketchNum: 7,
|
|
||||||
date: 'today',
|
|
||||||
id:'1',
|
|
||||||
},{
|
|
||||||
imgList:[
|
|
||||||
{
|
|
||||||
url:'https://www.minio-api.aida.com.hk/aida-users/83/avatar/2b3d5756-ea29-4020-86a9-3b02cfc73b5a.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260410%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260410T013002Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=eedfd4114bde66f0ff8fe5e4d7a7274d9007b25deb40ee82a19427f29601e89b',
|
|
||||||
},{
|
|
||||||
url:'https://www.minio-api.aida.com.hk/aida-users/83/avatar/2b3d5756-ea29-4020-86a9-3b02cfc73b5a.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260410%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260410T013002Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=eedfd4114bde66f0ff8fe5e4d7a7274d9007b25deb40ee82a19427f29601e89b',
|
|
||||||
},{
|
|
||||||
url:'https://www.minio-api.aida.com.hk/aida-users/83/avatar/2b3d5756-ea29-4020-86a9-3b02cfc73b5a.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260410%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260410T013002Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=eedfd4114bde66f0ff8fe5e4d7a7274d9007b25deb40ee82a19427f29601e89b',
|
|
||||||
},{
|
|
||||||
url:'https://www.minio-api.aida.com.hk/aida-users/83/avatar/2b3d5756-ea29-4020-86a9-3b02cfc73b5a.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260410%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260410T013002Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=eedfd4114bde66f0ff8fe5e4d7a7274d9007b25deb40ee82a19427f29601e89b',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
type:'Series',
|
|
||||||
name:'Christmas',
|
|
||||||
sketchNum: 7,
|
|
||||||
date: 'today',
|
|
||||||
id:'2',
|
|
||||||
},{
|
|
||||||
imgList:[
|
|
||||||
{
|
|
||||||
url:'https://www.minio-api.aida.com.hk/aida-users/83/avatar/2b3d5756-ea29-4020-86a9-3b02cfc73b5a.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260410%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260410T013002Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=eedfd4114bde66f0ff8fe5e4d7a7274d9007b25deb40ee82a19427f29601e89b',
|
|
||||||
},{
|
|
||||||
url:'https://www.minio-api.aida.com.hk/aida-users/83/avatar/2b3d5756-ea29-4020-86a9-3b02cfc73b5a.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260410%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260410T013002Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=eedfd4114bde66f0ff8fe5e4d7a7274d9007b25deb40ee82a19427f29601e89b',
|
|
||||||
},{
|
|
||||||
url:'https://www.minio-api.aida.com.hk/aida-users/83/avatar/2b3d5756-ea29-4020-86a9-3b02cfc73b5a.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260410%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260410T013002Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=eedfd4114bde66f0ff8fe5e4d7a7274d9007b25deb40ee82a19427f29601e89b',
|
|
||||||
},{
|
|
||||||
url:'https://www.minio-api.aida.com.hk/aida-users/83/avatar/2b3d5756-ea29-4020-86a9-3b02cfc73b5a.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260410%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260410T013002Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=eedfd4114bde66f0ff8fe5e4d7a7274d9007b25deb40ee82a19427f29601e89b',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
type:'Series',
|
|
||||||
name:'Christmas',
|
|
||||||
sketchNum: 7,
|
|
||||||
date: 'today',
|
|
||||||
id:'1',
|
|
||||||
},{
|
|
||||||
imgList:[
|
|
||||||
{
|
|
||||||
url:'https://www.minio-api.aida.com.hk/aida-users/83/avatar/2b3d5756-ea29-4020-86a9-3b02cfc73b5a.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260410%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260410T013002Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=eedfd4114bde66f0ff8fe5e4d7a7274d9007b25deb40ee82a19427f29601e89b',
|
|
||||||
},{
|
|
||||||
url:'https://www.minio-api.aida.com.hk/aida-users/83/avatar/2b3d5756-ea29-4020-86a9-3b02cfc73b5a.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260410%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260410T013002Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=eedfd4114bde66f0ff8fe5e4d7a7274d9007b25deb40ee82a19427f29601e89b',
|
|
||||||
},{
|
|
||||||
url:'https://www.minio-api.aida.com.hk/aida-users/83/avatar/2b3d5756-ea29-4020-86a9-3b02cfc73b5a.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260410%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260410T013002Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=eedfd4114bde66f0ff8fe5e4d7a7274d9007b25deb40ee82a19427f29601e89b',
|
|
||||||
},{
|
|
||||||
url:'https://www.minio-api.aida.com.hk/aida-users/83/avatar/2b3d5756-ea29-4020-86a9-3b02cfc73b5a.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20260410%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260410T013002Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=eedfd4114bde66f0ff8fe5e4d7a7274d9007b25deb40ee82a19427f29601e89b',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
type:'Series',
|
|
||||||
name:'Christmas',
|
|
||||||
sketchNum: 7,
|
|
||||||
date: 'today',
|
|
||||||
id:'1',
|
|
||||||
},
|
|
||||||
])
|
|
||||||
|
|
||||||
|
])
|
||||||
|
const getListData = ()=>{
|
||||||
|
return {
|
||||||
|
...props.getCollectionListData,
|
||||||
|
page: page.value,
|
||||||
|
size: size.value,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const getCreateList = ()=>{
|
||||||
|
let data = getListData()
|
||||||
|
Https.axiosPost(Https.httpUrls.historyProject, data).then((rv)=>{
|
||||||
|
list.value = rv.content || []
|
||||||
|
total.value = rv.total || 0
|
||||||
|
})
|
||||||
|
}
|
||||||
const selectCollectionItem = (item:any)=>{
|
const selectCollectionItem = (item:any)=>{
|
||||||
emit('selectCollectionItem',item)
|
emit('selectCollectionItem',item)
|
||||||
}
|
}
|
||||||
onMounted(()=>{
|
onMounted(()=>{
|
||||||
|
getCreateList()
|
||||||
})
|
})
|
||||||
onUnmounted(()=>{
|
onUnmounted(()=>{
|
||||||
})
|
})
|
||||||
defineExpose({})
|
defineExpose({getCreateList})
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div class="historyList">
|
<div class="historyList">
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<div v-for="(item,index) in list" :key="index" class="item" @click="selectCollectionItem(item)">
|
<div v-for="(item,index) in list" :key="index" class="item" @click="selectCollectionItem(item)">
|
||||||
<div class="imgList">
|
<div class="imgList">
|
||||||
<div v-for="(img,index) in item.imgList" :key="index" class="img">
|
<div v-for="(img,index) in item.userLikeGroupVO?.groupDetails" :key="index" class="img">
|
||||||
<img :src="img.url" alt="">
|
<img :src="img.url" alt="">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="detail">
|
<div class="detail">
|
||||||
<div class="name">{{item.name}}</div>
|
<div class="name">{{item.name}}</div>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<div>{{item.sketchNum}} sketchs</div>
|
<div>{{item.userLikeGroupVO?.groupDetails?.length || 0}} sketchs</div>
|
||||||
<div>{{item.date}}</div>
|
<div>{{setPubDate(item.updateTime,t)}}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="type" :class="item.type">
|
<div class="type" :class="item.type">
|
||||||
{{item.type}}
|
{{item.process == "SERIES_DESIGN"?"Series":"Single"}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pagination">
|
<div class="pagination">
|
||||||
<a-pagination v-model:current="current" :pageSize="6" :showSizeChanger="false" show-quick-jumper :total="100" show-less-items />
|
<a-pagination v-model:current="page" @change="getCreateList" :pageSize="6" :showSizeChanger="false" show-quick-jumper :total="total" show-less-items />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -154,11 +110,13 @@ defineExpose({})
|
|||||||
padding: 1rem 1.3rem;
|
padding: 1rem 1.3rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: .4rem;
|
gap: .4rem;
|
||||||
|
justify-content: center;
|
||||||
> .img{
|
> .img{
|
||||||
width: 9.7rem;
|
width: 9.7rem;
|
||||||
height: 17.2rem;
|
height: 17.2rem;
|
||||||
border-radius: 1rem;
|
border-radius: 1rem;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
background-color: #fff;
|
||||||
> img{
|
> img{
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -4,31 +4,38 @@ import sellerHeader from "../../seller-header.vue"
|
|||||||
import historyList from "./historyList.vue"
|
import historyList from "./historyList.vue"
|
||||||
import { useRouter } from "vue-router"
|
import { useRouter } from "vue-router"
|
||||||
|
|
||||||
|
|
||||||
//const props = defineProps({
|
//const props = defineProps({
|
||||||
//})
|
//})
|
||||||
//const emit = defineEmits([
|
//const emit = defineEmits([
|
||||||
//])
|
//])
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
let data = reactive({
|
let getCollectionListData = reactive({
|
||||||
})
|
searchType: '',
|
||||||
const searchType = ref('all')
|
searchText: '',
|
||||||
const searchText = ref('')
|
|
||||||
|
|
||||||
const historyListRef = ref(null)
|
})
|
||||||
|
const isShowMark = ref(false)
|
||||||
|
const historyListRef = ref(null) as any
|
||||||
const handleSearch = () => {
|
const handleSearch = () => {
|
||||||
|
historyListRef.value.getCreateList()
|
||||||
|
}
|
||||||
|
const setSearchType = (type:any) => {
|
||||||
|
getCollectionListData.searchType = type
|
||||||
|
historyListRef.value.getCreateList()
|
||||||
}
|
}
|
||||||
const selectCollectionItem = (item:any) => {
|
const selectCollectionItem = (item:any) => {
|
||||||
router.push({path:'/home/seller/myListings/select/'+item.id})
|
router.push({path:'/home/seller/myListings/select/'+item.id})
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(()=>{
|
onMounted(()=>{
|
||||||
})
|
})
|
||||||
onUnmounted(()=>{
|
onUnmounted(()=>{
|
||||||
})
|
})
|
||||||
defineExpose({})
|
defineExpose({})
|
||||||
const {} = toRefs(data);
|
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div class="myListings-seller">
|
<div class="create-select">
|
||||||
<seller-header
|
<seller-header
|
||||||
title="Select Collection"
|
title="Select Collection"
|
||||||
:breadcrumbs="[
|
:breadcrumbs="[
|
||||||
@@ -40,15 +47,15 @@ const {} = toRefs(data);
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<div :class="{active:searchType == 'all'}" @click="searchType = 'all'">All</div>
|
<div :class="{active:getCollectionListData.searchType == ''}" @click="setSearchType('')">All</div>
|
||||||
<div :class="{active:searchType == 'series'}" @click="searchType = 'series'">Series Design</div>
|
<div :class="{active:getCollectionListData.searchType == 'SERIES_DESIGN'}" @click="setSearchType('SERIES_DESIGN')">Series Design</div>
|
||||||
<div :class="{active:searchType == 'single'}" @click="searchType = 'single'">Single Design</div>
|
<div :class="{active:getCollectionListData.searchType == 'SINGLE_DESIGN'}" @click="setSearchType('SINGLE_DESIGN')">Single Design</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<div class="search_input flex flex-align-center">
|
<div class="search_input flex flex-align-center">
|
||||||
<input
|
<input
|
||||||
class="search_input_inner"
|
class="search_input_inner"
|
||||||
v-model="searchText"
|
v-model="getCollectionListData.searchText"
|
||||||
:bordered="false"
|
:bordered="false"
|
||||||
@keydown.enter="handleSearch"
|
@keydown.enter="handleSearch"
|
||||||
placeholder="123123"
|
placeholder="123123"
|
||||||
@@ -58,12 +65,12 @@ const {} = toRefs(data);
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<historyList ref="historyListRef" @selectCollectionItem="selectCollectionItem"></historyList>
|
<historyList ref="historyListRef" :getCollectionListData="getCollectionListData" @selectCollectionItem="selectCollectionItem"></historyList>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<style scoped lang="less">
|
<style scoped lang="less">
|
||||||
.myListings-seller {
|
.create-select {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ import { ref, onMounted, onUnmounted, reactive, toRefs } from "vue";
|
|||||||
import sellerHeader from "../../seller-header.vue"
|
import sellerHeader from "../../seller-header.vue"
|
||||||
import { VueDraggable } from "vue-draggable-plus"
|
import { VueDraggable } from "vue-draggable-plus"
|
||||||
import selectMenu from '@/component/modules/selectMenu.vue'
|
import selectMenu from '@/component/modules/selectMenu.vue'
|
||||||
|
import { Https } from '@/tool/https'
|
||||||
|
import { useRoute } from 'vue-router'
|
||||||
|
import { useStore } from 'vuex'
|
||||||
|
|
||||||
//const props = defineProps({
|
//const props = defineProps({
|
||||||
//})
|
//})
|
||||||
@@ -10,6 +13,8 @@ import selectMenu from '@/component/modules/selectMenu.vue'
|
|||||||
//])
|
//])
|
||||||
let data = reactive({
|
let data = reactive({
|
||||||
})
|
})
|
||||||
|
const store = useStore()
|
||||||
|
const route = useRoute()
|
||||||
const domSize = ref('Small')
|
const domSize = ref('Small')
|
||||||
const domSizeList = ref([
|
const domSizeList = ref([
|
||||||
{
|
{
|
||||||
@@ -26,17 +31,8 @@ const domSizeList = ref([
|
|||||||
},
|
},
|
||||||
])
|
])
|
||||||
const list = ref([
|
const list = ref([
|
||||||
{ id: "1" },
|
|
||||||
{ id: "2" },
|
|
||||||
{ id: "3" },
|
|
||||||
{ id: "4" },
|
|
||||||
{ id: "5" },
|
|
||||||
{ id: "6" },
|
|
||||||
{ id: "7" },
|
|
||||||
{ id: "8" },
|
|
||||||
{ id: "9" },
|
|
||||||
{ id: "10" }
|
|
||||||
])
|
])
|
||||||
|
const showList = ref([])
|
||||||
const chooseList = ref([])
|
const chooseList = ref([])
|
||||||
const chooseItem = (item:any)=>{
|
const chooseItem = (item:any)=>{
|
||||||
chooseList.value.push(item)
|
chooseList.value.push(item)
|
||||||
@@ -89,6 +85,32 @@ const changeDomSize = ()=>{
|
|||||||
setDomSize(listingsBoxRef.value.clientWidth)
|
setDomSize(listingsBoxRef.value.clientWidth)
|
||||||
},350)
|
},350)
|
||||||
}
|
}
|
||||||
|
const changeGender = ()=>{
|
||||||
|
|
||||||
|
}
|
||||||
|
const setShowList = ()=>{
|
||||||
|
if(gender.value == 'All'){
|
||||||
|
showList.value = list.value
|
||||||
|
}else{
|
||||||
|
showList.value = list.value.filter((item:any)=>item.sex == gender.value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const getCollectionDetail = ()=>{
|
||||||
|
store.commit("set_loading", true)
|
||||||
|
let moduleList = [] as any
|
||||||
|
moduleList = ['design',]
|
||||||
|
let value:any = {
|
||||||
|
"id":route.params.collectionId,
|
||||||
|
"moduleList":moduleList,
|
||||||
|
}
|
||||||
|
Https.axiosPost(Https.httpUrls.getModuleContent,value).then(async (rv)=>{
|
||||||
|
list.value = rv.design.userLikeDetails
|
||||||
|
setShowList()
|
||||||
|
store.commit("set_loading", false)
|
||||||
|
}).catch(()=>{
|
||||||
|
store.commit("set_loading", false)
|
||||||
|
})
|
||||||
|
}
|
||||||
onMounted(()=>{
|
onMounted(()=>{
|
||||||
// 创建观察器
|
// 创建观察器
|
||||||
nextTick(()=>{
|
nextTick(()=>{
|
||||||
@@ -105,6 +127,7 @@ onMounted(()=>{
|
|||||||
// 开始监听
|
// 开始监听
|
||||||
if(resizeObserver)resizeObserver.observe(listingsBoxRef.value)
|
if(resizeObserver)resizeObserver.observe(listingsBoxRef.value)
|
||||||
})
|
})
|
||||||
|
getCollectionDetail()
|
||||||
})
|
})
|
||||||
onUnmounted(()=>{
|
onUnmounted(()=>{
|
||||||
})
|
})
|
||||||
@@ -112,7 +135,7 @@ defineExpose({})
|
|||||||
const {} = toRefs(data);
|
const {} = toRefs(data);
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div class="myListings-seller">
|
<div class="create-select-item">
|
||||||
<seller-header
|
<seller-header
|
||||||
title="Select Collection"
|
title="Select Collection"
|
||||||
:breadcrumbs="[
|
:breadcrumbs="[
|
||||||
@@ -143,27 +166,6 @@ const {} = toRefs(data);
|
|||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<div class="generalModel_state">
|
<div class="generalModel_state">
|
||||||
<div>
|
|
||||||
<selectMenu
|
|
||||||
:selectList="domSizeList"
|
|
||||||
@change="changeDomSize"
|
|
||||||
:isBtnOpen='true'
|
|
||||||
:style="{
|
|
||||||
'border-radius':'0rem',
|
|
||||||
'border':'none',
|
|
||||||
'font-weight': '900',
|
|
||||||
'border-right':'2px solid rgba(0,0,0,.2)',
|
|
||||||
'line-height': '3rem',
|
|
||||||
'height': '3rem',
|
|
||||||
'background': 'rgba(0,0,0,0)',
|
|
||||||
}"
|
|
||||||
v-model:select="domSize"
|
|
||||||
>
|
|
||||||
<template v-slot:btnText>
|
|
||||||
{{ $t('Header.Filter') }}
|
|
||||||
</template>
|
|
||||||
</selectMenu>
|
|
||||||
</div>
|
|
||||||
<div>
|
<div>
|
||||||
<selectMenu
|
<selectMenu
|
||||||
:selectList="domSizeList"
|
:selectList="domSizeList"
|
||||||
@@ -188,7 +190,7 @@ const {} = toRefs(data);
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<VueDraggable
|
<VueDraggable
|
||||||
v-model="list"
|
v-model="showList"
|
||||||
class="list"
|
class="list"
|
||||||
:class="domSize"
|
:class="domSize"
|
||||||
v-bind="config"
|
v-bind="config"
|
||||||
@@ -208,13 +210,14 @@ const {} = toRefs(data);
|
|||||||
<div class="choose">
|
<div class="choose">
|
||||||
<i class="fi fi-rr-check"></i>
|
<i class="fi fi-rr-check"></i>
|
||||||
</div>
|
</div>
|
||||||
|
<img :src="v.designOutfitUrl || v.url" alt="">
|
||||||
</div>
|
</div>
|
||||||
</VueDraggable>
|
</VueDraggable>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<style scoped lang="less">
|
<style scoped lang="less">
|
||||||
.myListings-seller {
|
.create-select-item {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@@ -329,6 +332,9 @@ const {} = toRefs(data);
|
|||||||
border: 1.5px solid #C7C7C7;
|
border: 1.5px solid #C7C7C7;
|
||||||
// transition: all .3s;
|
// transition: all .3s;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
> .choose{
|
> .choose{
|
||||||
display: flex;
|
display: flex;
|
||||||
width: var(--iconWH);
|
width: var(--iconWH);
|
||||||
@@ -347,6 +353,10 @@ const {} = toRefs(data);
|
|||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
> img{
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
&.active{
|
&.active{
|
||||||
border: 1.5px solid #000;
|
border: 1.5px solid #000;
|
||||||
> .choose{
|
> .choose{
|
||||||
|
|||||||
@@ -3,17 +3,32 @@ import { ref, onMounted, onUnmounted, reactive, toRefs } from "vue";
|
|||||||
import sellerHeader from "../../seller-header.vue"
|
import sellerHeader from "../../seller-header.vue"
|
||||||
import sellerContent from "./content.vue"
|
import sellerContent from "./content.vue"
|
||||||
import myEvent from "@/tool/myEvents.js"
|
import myEvent from "@/tool/myEvents.js"
|
||||||
|
import Https from "@/tool/https.js"
|
||||||
|
import { useStore } from "vuex";
|
||||||
|
|
||||||
|
|
||||||
//const props = defineProps({
|
//const props = defineProps({
|
||||||
//})
|
//})
|
||||||
//const emit = defineEmits([
|
//const emit = defineEmits([
|
||||||
//])
|
//])
|
||||||
|
const store = useStore()
|
||||||
let data = reactive({
|
let data = reactive({
|
||||||
|
listingPopup: true,
|
||||||
})
|
})
|
||||||
const newListing = ()=>{
|
const newListing = ()=>{
|
||||||
myEvent.emit('newListing')
|
myEvent.emit('newListing',)
|
||||||
|
}
|
||||||
|
const getListingPopup = ()=>{
|
||||||
|
store.commit("set_loading", true)
|
||||||
|
Https.getListingPopup().then(res=>{
|
||||||
|
store.commit("set_loading", false)
|
||||||
|
data.listingPopup = res.data
|
||||||
|
}).catch(()=>{
|
||||||
|
store.commit("set_loading", false)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
onMounted(()=>{
|
onMounted(()=>{
|
||||||
|
let listingPopup = sessionStorage.getItem('listingPopup')
|
||||||
})
|
})
|
||||||
onUnmounted(()=>{
|
onUnmounted(()=>{
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -42,8 +42,8 @@
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="images">
|
<div class="images">
|
||||||
<img
|
<img
|
||||||
v-for="(v, i) in v.item.slice(0, maxItemNum)"
|
v-for="v in v.item.slice(0, maxItemNum)"
|
||||||
:key="i"
|
:key="v.id"
|
||||||
:src="v.url"
|
:src="v.url"
|
||||||
/>
|
/>
|
||||||
<span v-if="v.item.length > maxItemNum"
|
<span v-if="v.item.length > maxItemNum"
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="titles">
|
<div class="titles">
|
||||||
<div v-for="(v, i) in v.item.slice(0, maxItemNum)" :key="i">
|
<div v-for="v in v.item.slice(0, maxItemNum)" :key="v.id">
|
||||||
{{ v.title }}
|
{{ v.title }}
|
||||||
</div>
|
</div>
|
||||||
<span v-if="v.item.length > maxItemNum">...</span>
|
<span v-if="v.item.length > maxItemNum">...</span>
|
||||||
@@ -65,6 +65,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="null" v-show="list.length === 0 && !loading && finish">no data</div>
|
||||||
<div class="placeholder" ref="placeholderRef" v-show="!loading"></div>
|
<div class="placeholder" ref="placeholderRef" v-show="!loading"></div>
|
||||||
<div class="footer" :class="{ null: list.length === 0 }" v-if="!finish">
|
<div class="footer" :class="{ null: list.length === 0 }" v-if="!finish">
|
||||||
<a-spin :delay="0.5" v-show="loading" />
|
<a-spin :delay="0.5" v-show="loading" />
|
||||||
@@ -74,22 +75,28 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted, onBeforeUnmount } from "vue"
|
import { ref, onMounted, onBeforeUnmount, computed } from "vue"
|
||||||
const totals = ref([
|
import { Https } from "@/tool/https"
|
||||||
|
const totals_obj = ref({
|
||||||
|
totalRevenue: "--",
|
||||||
|
totalPurchases: "--",
|
||||||
|
totalViews: "--"
|
||||||
|
})
|
||||||
|
const totals = computed(() => [
|
||||||
{
|
{
|
||||||
icon: "seller-qiandaizi",
|
icon: "seller-qiandaizi",
|
||||||
title: "Total Revenue",
|
title: "Total Revenue",
|
||||||
value: "HK$ 54,32.00"
|
value: `HK$ ${totals_obj.value.totalRevenue}`
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "seller-gouwudai",
|
icon: "seller-gouwudai",
|
||||||
title: "Total Purchases",
|
title: "Total Purchases",
|
||||||
value: "128"
|
value: totals_obj.value.totalPurchases
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "seller-eye",
|
icon: "seller-eye",
|
||||||
title: "Total Views",
|
title: "Total Views",
|
||||||
value: "4,982"
|
value: totals_obj.value.totalViews
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
const maxItemNum = ref(2)
|
const maxItemNum = ref(2)
|
||||||
@@ -112,38 +119,41 @@
|
|||||||
page: page.value,
|
page: page.value,
|
||||||
size: size.value
|
size: size.value
|
||||||
}
|
}
|
||||||
if (nameOrId.value) data.nameOrId = nameOrId.value
|
if (nameOrId.value) data.keyword = nameOrId.value
|
||||||
console.log(data)
|
Https.axiosGet(Https.httpUrls.getSellerOrderList, { params: data }).then((res) => {
|
||||||
setTimeout(() => {
|
res.content?.forEach((v) => {
|
||||||
for (let i = 0; i < size.value; i++) {
|
const obj = {
|
||||||
let { date, time, dateTime } = formatTimestamp(new Date(2026, 4, 20, 13, 14).getTime())
|
orderId: v.orderId,
|
||||||
list.value.push({
|
items: v.items.map((item) => ({
|
||||||
orderId: "SP" + Math.random().toString().substring(2, 10),
|
id: item.productId,
|
||||||
price: "HK$ " + (Math.random() * 500).toFixed(2),
|
url: item.thumbnailUrl,
|
||||||
username: "@liuyuchen",
|
title: item.productName
|
||||||
date: date,
|
})),
|
||||||
time: time,
|
price: "HK$ " + v.price,
|
||||||
item: [
|
username: v.buyerUsername,
|
||||||
{
|
date: v.date,
|
||||||
url: "http://118.31.39.42:3000/falls/o-1.png",
|
time: v.date
|
||||||
title: "North Outfit Set"
|
}
|
||||||
},
|
list.value.push(obj)
|
||||||
{
|
})
|
||||||
url: "http://118.31.39.42:3000/falls/o-2.png",
|
|
||||||
title: "Heritage Layered Set"
|
total.value = res.total
|
||||||
},
|
page.value++
|
||||||
{},
|
finish.value = page.value > total.value / size.value
|
||||||
{}
|
loading.value = false
|
||||||
]
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
total.value = 30
|
const getSummary = () => {
|
||||||
page.value++
|
Https.axiosGet(Https.httpUrls.getSellerOrderSummary).then((res) => {
|
||||||
finish.value = page.value > total.value / 10
|
totals_obj.value.totalRevenue = res.totalRevenue
|
||||||
loading.value = false
|
totals_obj.value.totalPurchases = res.totalPurchases
|
||||||
}, 1000)
|
totals_obj.value.totalViews = res.totalViews
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getSummary()
|
||||||
getList(true)
|
getList(true)
|
||||||
|
|
||||||
const placeholderRef = ref(null)
|
const placeholderRef = ref(null)
|
||||||
const observer = new IntersectionObserver(
|
const observer = new IntersectionObserver(
|
||||||
(entries) => {
|
(entries) => {
|
||||||
@@ -348,6 +358,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
> .null {
|
||||||
|
margin-top: 10rem;
|
||||||
|
text-align: center;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
> .footer {
|
> .footer {
|
||||||
min-height: 10rem;
|
min-height: 10rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -18,7 +18,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, computed } from "vue"
|
import { Https } from "@/tool/https"
|
||||||
|
import { ref, computed,onMounted,onUnmounted } from "vue"
|
||||||
import { useRoute, useRouter } from "vue-router"
|
import { useRoute, useRouter } from "vue-router"
|
||||||
import toolTipBox from "./toolTipBox.vue"
|
import toolTipBox from "./toolTipBox.vue"
|
||||||
import myEvent from "@/tool/myEvents.js"
|
import myEvent from "@/tool/myEvents.js"
|
||||||
|
|||||||
Reference in New Issue
Block a user