diff --git a/src/api/market/ware.js b/src/api/market/ware.js index 0f25e80..a7c7b0f 100644 --- a/src/api/market/ware.js +++ b/src/api/market/ware.js @@ -1,6 +1,34 @@ +// 团购商品 套餐推广接口集合 import request from "@/utils/request"; -import { Market_BaseUrl } from "@/api/config"; -const baseURL = Market_BaseUrl + "/admin/ware"; +import { Order_BaseUrl } from "@/api/config"; +const baseWareURL = Order_BaseUrl + "/admin/ware"; +const baseOrderURL = Order_BaseUrl + "/admin/gbOrder"; + +/** + * 拼团商品-统计 + * @param {*} data + * @returns + */ +export function wareCount(params) { + return request({ + url: `${baseWareURL}/ware/count`, + method: "get", + params, + }); +} + +/** + * 拼团商品-活动开关 + * @param {*} data + * @returns + */ +export function upShopConfig(data) { + return request({ + url: `${baseWareURL}/upShopConfig`, + method: "post", + data, + }); +} /** * 拼团商品-新增 @@ -9,7 +37,7 @@ const baseURL = Market_BaseUrl + "/admin/ware"; */ export function addGbWare(data) { return request({ - url: `${baseURL}/addGbWare`, + url: `${baseWareURL}/addGbWare`, method: "post", data, }); @@ -22,7 +50,7 @@ export function addGbWare(data) { */ export function updateGbWareById(data) { return request({ - url: `${baseURL}/updateGbWareById`, + url: `${baseWareURL}/updateGbWareById`, method: "post", data, }); @@ -35,7 +63,7 @@ export function updateGbWareById(data) { */ export function getGbWarePage(params) { return request({ - url: `${baseURL}/getGbWarePage`, + url: `${baseWareURL}/getGbWarePage`, method: "get", params, }); @@ -48,7 +76,7 @@ export function getGbWarePage(params) { */ export function editOnlineStatus(data) { return request({ - url: `${baseURL}/editOnlineStatus`, + url: `${baseWareURL}/editOnlineStatus`, method: "post", data, }); @@ -61,7 +89,59 @@ export function editOnlineStatus(data) { */ export function deleteGbWare(id) { return request({ - url: `${baseURL}/deleteGbWare/${id}`, + url: `${baseWareURL}/deleteGbWare/${id}`, method: "DELETE" }); +} + +/** + * 拼团商品:订单列表 + * @param {*} data + * @returns + */ +export function gbOrderPage(params) { + return request({ + url: `${baseOrderURL}/page`, + method: "get", + params, + }); +} + +/** + * 退单/同意退单 + * @param {*} data + * @returns + */ +export function orderAgreeRefund(data) { + return request({ + url: `${baseOrderURL}/agreeRefund`, + method: "post", + data, + }); +} + +/** + * 驳回退单 + * @param {*} data + * @returns + */ +export function orderRejectRefund(data) { + return request({ + url: `${baseOrderURL}/rejectRefund`, + method: "post", + data, + }); +} + +/** + * 拼团商品:核销 + * @param {*} data + * @returns + */ +export function orderCheckout(data) { + return request({ + url: `${baseOrderURL}/checkout`, + method: "post", + data, + }); } \ No newline at end of file diff --git a/src/components/Upload/MultiImageUpload.vue b/src/components/Upload/MultiImageUpload.vue index 8335d6e..934d8cb 100644 --- a/src/components/Upload/MultiImageUpload.vue +++ b/src/components/Upload/MultiImageUpload.vue @@ -62,13 +62,15 @@ const props = defineProps({ }, }); -// 定义Emits -const emit = defineEmits(['upDataEvent', 'uploadAllSuccess']); +// 定义Emits:新增 uploadStart 事件(触发开始上传,用于父级loading) +const emit = defineEmits(['upDataEvent', 'uploadAllSuccess', 'uploadStart']); // 响应式数据 const previewVisible = ref(false); const previewImageIndex = ref(0); const progress = ref(0); +// 新增:跟踪是否已触发开始上传(避免重复触发) +const isUploadStarted = ref(false); // 修复:defineModel 类型定义 const modelValue = defineModel("modelValue", { type: Array as PropType, @@ -94,6 +96,10 @@ function handleRemove(imageUrl: string) { } fileList.value.splice(index, 1); } + // 若删除后无上传中的文件,重置开始上传状态 + if (uploadingFiles.value.size === 0) { + isUploadStarted.value = false; + } } /** @@ -113,6 +119,11 @@ function handleFileChange(file: UploadUserFile, files: UploadUserFile[]) { status: 'pending', file }); + // 新增:触发开始上传事件(仅第一次上传时触发,避免重复) + if (!isUploadStarted.value) { + isUploadStarted.value = true; + emit('uploadStart'); // 通知父级:开始上传,开启loading + } emit('upDataEvent', true); // 开始上传,触发loading } // 同步fileList(避免重复) @@ -244,6 +255,9 @@ function checkAllUploadCompleted() { emit('uploadAllSuccess', modelValue.value); // 触发全部完成事件 emit('upDataEvent', false); // 结束loading + // 新增:重置开始上传状态(下次上传可重新触发) + isUploadStarted.value = false; + // 重置上传状态跟踪(关键:避免多次触发) uploadingFiles.value.clear(); } diff --git a/src/views/marketing_center/data.js b/src/views/marketing_center/data.js index 6c96239..4fc62de 100644 --- a/src/views/marketing_center/data.js +++ b/src/views/marketing_center/data.js @@ -40,7 +40,7 @@ export const newMenus = [ { name: "套餐推广", icon: "tctg", - pathName: "", + pathName: "package_popularize", intro: "下单通过用户邀请好友减免金额的方式裂变宣传套餐加购", }, { diff --git a/src/views/marketing_center/drainage/index.vue b/src/views/marketing_center/drainage/index.vue index 09011e7..583c7da 100644 --- a/src/views/marketing_center/drainage/index.vue +++ b/src/views/marketing_center/drainage/index.vue @@ -46,7 +46,7 @@
- {{ form.content.length }}/20
@@ -68,14 +68,14 @@
-
开启后至少勾选1个显示时机
+
- + + + + + + \ No newline at end of file diff --git a/src/views/marketing_center/package_popularize/components/groupOrder.vue b/src/views/marketing_center/package_popularize/components/groupOrder.vue new file mode 100644 index 0000000..23114b5 --- /dev/null +++ b/src/views/marketing_center/package_popularize/components/groupOrder.vue @@ -0,0 +1,420 @@ + + + + + + \ No newline at end of file diff --git a/src/views/marketing_center/package_popularize/components/groupPage.vue b/src/views/marketing_center/package_popularize/components/groupPage.vue new file mode 100644 index 0000000..af3ad47 --- /dev/null +++ b/src/views/marketing_center/package_popularize/components/groupPage.vue @@ -0,0 +1,244 @@ + + + + + + \ No newline at end of file diff --git a/src/views/marketing_center/package_popularize/components/selecProductDialog.vue b/src/views/marketing_center/package_popularize/components/selecProductDialog.vue new file mode 100644 index 0000000..d82c6cd --- /dev/null +++ b/src/views/marketing_center/package_popularize/components/selecProductDialog.vue @@ -0,0 +1,116 @@ + + + + + \ No newline at end of file diff --git a/src/views/marketing_center/package_popularize/index.vue b/src/views/marketing_center/package_popularize/index.vue new file mode 100644 index 0000000..92bda17 --- /dev/null +++ b/src/views/marketing_center/package_popularize/index.vue @@ -0,0 +1,82 @@ + + + + + + \ No newline at end of file diff --git a/src/views/online-shop/index.vue b/src/views/online-shop/index.vue index dc5684f..dd790dd 100644 --- a/src/views/online-shop/index.vue +++ b/src/views/online-shop/index.vue @@ -195,9 +195,10 @@
- +
- 确认修改 + 确认修改
@@ -237,7 +238,8 @@ export default { selectItem: {}, imageUrl: "", imgList: [], - shopName: '' + shopName: '', + uploading: false }; }, mounted() { @@ -246,6 +248,7 @@ export default { methods: { // 刷新列表数据 async doSubmit() { + this.selectItem.value = JSON.stringify(this.imgList) await shopExtendApi.edit({ ...this.selectItem, autokey: this.selectItem.autoKey, @@ -263,14 +266,12 @@ export default { // 多图上传成功 async MultiOnSuccess(response) { console.log(response); - console.log(this.imgList); - - if (!response && this.imgList.length > 0) { - console.log(this.imgList); - await nextTick() - this.selectItem.value = JSON.stringify(this.imgList) - console.log('onSuccess.selectItem.value', this.selectItem.value); - } + // console.log(this.imgList); + // console.log(this.imgList); + // await nextTick() + this.uploading = false + this.selectItem.value = JSON.stringify(this.imgList) + console.log('onSuccess.selectItem.value', this.selectItem.value); }, /** * 判断字符串是否为合法的 JSON 数组