From b7ae1b0062d8a735887c8072b6bc7ed39bd2b42e Mon Sep 17 00:00:00 2001 From: weiwei Date: Fri, 5 Sep 2025 11:19:50 +0800 Subject: [PATCH 01/37] =?UTF-8?q?feat:=E8=AE=BF=E5=AE=A2=E9=82=80=E7=BA=A6?= =?UTF-8?q?=E5=92=8C=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/integrated/visitor/detail.vue | 39 +++++--- src/pages/integrated/visitor/invitation.vue | 99 +++++++++++++------ .../integrated/visitor/invitationRecord.vue | 52 +++------- src/pages/pay/scanPay.vue | 2 +- src/pages/pay/transferMoney.vue | 2 +- src/sheep/api/invitation.ts | 2 +- ...numberKeyboard.vue => number-keyboard.vue} | 0 ...ePointPicker.vue => time-range-picker.vue} | 0 ...pModel.vue => verify-device-imp-model.vue} | 2 +- .../verifyDeviceImpModel.ts | 2 +- 10 files changed, 111 insertions(+), 89 deletions(-) rename src/sheep/components/{numberKeyboard.vue => number-keyboard.vue} (100%) rename src/sheep/components/{TimePointPicker.vue => time-range-picker.vue} (100%) rename src/sheep/components/verifyDeviceImpModel/{verifyDeviceImpModel.vue => verify-device-imp-model.vue} (98%) diff --git a/src/pages/integrated/visitor/detail.vue b/src/pages/integrated/visitor/detail.vue index 6516294..dc5414e 100644 --- a/src/pages/integrated/visitor/detail.vue +++ b/src/pages/integrated/visitor/detail.vue @@ -1,8 +1,12 @@ diff --git a/src/sheep/api/index.ts b/src/sheep/api/index.ts index b2fc1a4..563cde7 100644 --- a/src/sheep/api/index.ts +++ b/src/sheep/api/index.ts @@ -40,4 +40,6 @@ export { default as invitationApi } from "./invitation" export { default as totalApi } from "./total" -export { default as userCarApi } from "./userCar" \ No newline at end of file +export { default as userCarApi } from "./userCar" + +export { default as prosperityShopApi } from "./prosperityShop" diff --git a/src/sheep/api/prosperityShop.ts b/src/sheep/api/prosperityShop.ts new file mode 100644 index 0000000..e20ba84 --- /dev/null +++ b/src/sheep/api/prosperityShop.ts @@ -0,0 +1,12 @@ +import request from "@/sheep/utils/request" + +export default { + // 获取超市列表 + getShopList: (params: { productLimit: number }): Promise => { + return request({ + url: "/supermarket/app/mall/merchant/list", + method: "GET", + params, + }) + }, +} diff --git a/src/static/tabbar/prosperity-shop-select.png b/src/static/tabbar/prosperity-shop-select.png new file mode 100644 index 0000000000000000000000000000000000000000..570860113922b20bae1b43a196d1f03395425bdb GIT binary patch literal 5588 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 literal 0 HcmV?d00001 diff --git a/src/static/tabbar/prosperity-shop.png b/src/static/tabbar/prosperity-shop.png new file mode 100644 index 0000000000000000000000000000000000000000..cc9efa33971880b3e3ad6b886044e3661bf018a6 GIT binary patch literal 5278 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 Date: Mon, 8 Sep 2025 19:10:35 +0800 Subject: [PATCH 03/37] =?UTF-8?q?feat:=E5=85=B1=E5=AF=8C=E5=95=86=E5=9F=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/tabbar/onlineShop.vue | 36 ++++++++--------- src/pages/tabbar/prosperityShop.vue | 62 +++++++++++++++++++---------- src/sheep/api/prosperityShop.ts | 2 +- 3 files changed, 60 insertions(+), 40 deletions(-) diff --git a/src/pages/tabbar/onlineShop.vue b/src/pages/tabbar/onlineShop.vue index 0037727..274508d 100644 --- a/src/pages/tabbar/onlineShop.vue +++ b/src/pages/tabbar/onlineShop.vue @@ -29,39 +29,39 @@ class="flex-1" v-model="state.params.keyword" type="text" - height="66" - minHeight="66" + height="72" + minHeight="72" fontSize="28" :showClear="true" :focus="false" placeholder="请输入商品名称" - style="border: 2rpx solid #0779fd; border-radius: 14rpx" + style="border: 4rpx solid #0779fd; border-radius: 14rpx" :focus-highlight="false" color="#ECF4F9" > - 购物车 + 购物车 - - - - {{ v.name }} - + + + + {{ v.name }} + + @@ -76,7 +76,7 @@ :hasAroundGutter="false" backgroundColor="#ffffff00" :crossOrigin="false" - :animationCancel="true" + :animationCancel="false" > - - + + {{ v.name }} {{ v.contactName }} - {{ v.contactPhone }} + + + {{ v.contactPhone }} + {{ v.email }} - {{ v.businessHours }} + 营业:{{ v.businessHours }} + + + + {{ v.address }} - {{ v.address }}1111 - - - - {{ pV.title }} - - + + + + {{ pV.title }} + + ¥ - {{ hooks.useMoney(pV.minPrice) }} + {{ pV.spuPrice.toFixed(2) }} - {{ pV.unit || "" }} + {{ pV.unit || "" }} - - + + ¥ - {{ hooks.useMoney(pV.spuPrice) }} + {{ pV.originalPrice.toFixed(2) }} - 库存{{ pV.totalStock }} + 库存{{ pV.totalStock }} @@ -109,6 +111,8 @@ import { onLoad } from "@dcloudio/uni-app" import { isEmpty } from "radash" import { reactive, ref } from "vue" import { filePath } from "@@/utils/file" +import { getAppInfo } from "@/sheep/utils/app" +import { APPENV } from "@/sheep/constant" const state = reactive({ params: { @@ -164,6 +168,22 @@ const search = () => { pageRef.value && pageRef.value.reload(true) } +// 联系商家 +const doPhone = async (item: string) => { + if (isEmpty(item)) return uni.showToast({ title: "该商户没有预留电话", icon: "none" }) + if ((await getAppInfo()) == APPENV.ZZD) { + ;(window as any).dd + .callPhone({ phoneNum: item.trim() }) + .then((res) => {}) + .catch((err) => {}) + return + } + if ((await getAppInfo()) == APPENV.SH) { + hooks.useMakePhoneCall(item.trim()) + return + } +} + // 超市详情 const toDetail = async (v: any) => { const isLogin = await hooks.useCheckLogin() diff --git a/src/sheep/api/prosperityShop.ts b/src/sheep/api/prosperityShop.ts index e20ba84..8097e42 100644 --- a/src/sheep/api/prosperityShop.ts +++ b/src/sheep/api/prosperityShop.ts @@ -6,7 +6,7 @@ export default { return request({ url: "/supermarket/app/mall/merchant/list", method: "GET", - params, + params: { productLimit: 5 }, }) }, } From 5d60103fc1ba09ad3d3a99663444f7ce8c2c3d7e Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Tue, 9 Sep 2025 11:21:14 +0800 Subject: [PATCH 04/37] 1 --- .env | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.env b/.env index 1ec75da..f56b7f1 100644 --- a/.env +++ b/.env @@ -20,15 +20,15 @@ VITE_OAUTH2_APP_CLIENT='mini:mini' # VITE_APP_DEV_SERVICE = https://stgl.pj.gov.cn/api # 域名线上 #VITE_APP_DEV_SERVICE = http://59.202.170.152:81/api # 信创线上 # VITE_APP_DEV_SERVICE = http://192.168.101.174:9999 # 邓-本地 -# VITE_APP_DEV_SERVICE = http://127.0.0.1:9999 # 邓-本地 -VITE_APP_DEV_SERVICE = http://123.157.250.162:8089/api # 测试线上 + VITE_APP_DEV_SERVICE = http://127.0.0.1:9999 # 邓-本地 +#VITE_APP_DEV_SERVICE = http://123.157.250.162:8089/api # 测试线上 # --------------------------- 开发环境 图片访问基础地址 --------------------------- # VITE_IMAGE_DEV_PATH = https://stgl.pj.gov.cn/api # 域名线上 #VITE_IMAGE_DEV_PATH = http://59.202.170.152:81/api # 信创线上 # VITE_IMAGE_DEV_PATH = http://192.168.101.174:9999 # 邓-本地 - # VITE_IMAGE_DEV_PATH = http://127.0.0.1:9999 -VITE_IMAGE_DEV_PATH = http://123.157.250.162:8089/api # 测试线上 + VITE_IMAGE_DEV_PATH = http://127.0.0.1:9999 +#VITE_IMAGE_DEV_PATH = http://123.157.250.162:8089/api # 测试线上 # --------------------------- 生产环境 api地址 ---------------------------------- VITE_APP_PROD_SERVICE = https://stgl.pj.gov.cn/api # 域名线上 From 46c1c41331022ea8bd19b27d55e17ef3ba11ae90 Mon Sep 17 00:00:00 2001 From: weiwei Date: Tue, 9 Sep 2025 12:16:05 +0800 Subject: [PATCH 05/37] =?UTF-8?q?feat:=E5=85=B1=E5=AF=8C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E5=92=8C=E5=95=86=E5=93=81=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages.json | 19 +++ src/pages/canteen/detail.vue | 2 +- src/pages/prosperity-shop/goods-detail.vue | 3 + src/pages/prosperity-shop/shop-detail.vue | 162 +++++++++++++++++++++ src/pages/tabbar/prosperityShop.vue | 23 +-- src/sheep/api/prosperityShop.ts | 22 +++ 6 files changed, 214 insertions(+), 17 deletions(-) create mode 100644 src/pages/prosperity-shop/goods-detail.vue create mode 100644 src/pages/prosperity-shop/shop-detail.vue diff --git a/src/pages.json b/src/pages.json index 1b93263..b3c9a49 100644 --- a/src/pages.json +++ b/src/pages.json @@ -135,6 +135,25 @@ } ] }, + { + "root": "pages/prosperity-shop", + "pages": [ + { + "path": "goods-detail", + "style": { + "navigationBarTitleText": "商品详情", + "disableScroll": true + } + }, + { + "path": "shop-detail", + "style": { + "navigationBarTitleText": "超市详情", + "disableScroll": true + } + } + ] + }, { "root": "pages/apply", "pages": [ diff --git a/src/pages/canteen/detail.vue b/src/pages/canteen/detail.vue index 03be740..25f3397 100644 --- a/src/pages/canteen/detail.vue +++ b/src/pages/canteen/detail.vue @@ -251,7 +251,7 @@ const doFood = () => { - + diff --git a/src/pages/prosperity-shop/goods-detail.vue b/src/pages/prosperity-shop/goods-detail.vue new file mode 100644 index 0000000..60988c1 --- /dev/null +++ b/src/pages/prosperity-shop/goods-detail.vue @@ -0,0 +1,3 @@ + + + diff --git a/src/pages/prosperity-shop/shop-detail.vue b/src/pages/prosperity-shop/shop-detail.vue new file mode 100644 index 0000000..3d6d3ef --- /dev/null +++ b/src/pages/prosperity-shop/shop-detail.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/src/pages/tabbar/prosperityShop.vue b/src/pages/tabbar/prosperityShop.vue index da0ac85..dc1fabc 100644 --- a/src/pages/tabbar/prosperityShop.vue +++ b/src/pages/tabbar/prosperityShop.vue @@ -106,7 +106,7 @@ diff --git a/src/sheep/api/prosperityShop.ts b/src/sheep/api/prosperityShop.ts index 8097e42..d9720f4 100644 --- a/src/sheep/api/prosperityShop.ts +++ b/src/sheep/api/prosperityShop.ts @@ -9,4 +9,26 @@ export default { params: { productLimit: 5 }, }) }, + // 获取超市商户分类列表 + getShopCategory: (): Promise => { + return request({ + url: "/supermarket/app/mall/merchant/category/list", + method: "GET", + }) + }, + // 获取超市商户所属分类列表 + getShopDetail: (id: string): Promise => { + return request({ + url: `/supermarket/app/mall/merchant/${id}`, + method: "GET", + }) + }, + // 获取超市商品分类列表 + getGoodsCategory: (params: { merchantId: string }): Promise => { + return request({ + url: `/supermarket/app/mall/category/tree`, + method: "GET", + params, + }) + }, } From 4ef150f57bb780f7e9d70eab18b8a94bd2a2a94d Mon Sep 17 00:00:00 2001 From: weiwei Date: Tue, 9 Sep 2025 19:13:16 +0800 Subject: [PATCH 06/37] =?UTF-8?q?feat:=E5=85=B1=E5=AF=8C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=95=86=E5=93=81=E5=88=97=E8=A1=A8=E5=92=8C=E5=95=86=E5=93=81?= =?UTF-8?q?=E8=AF=A6=E7=BB=86=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/prosperity-shop/goods-detail.vue | 82 ++++++++++++- src/pages/prosperity-shop/shop-detail.vue | 110 +++++++++++++----- src/pages/tabbar/onlineShop.vue | 13 +-- src/pages/tabbar/prosperityShop.vue | 6 +- src/sheep/api/prosperityShop.ts | 15 +++ .../crud/crud-layout/crud-layout.vue | 12 +- src/sheep/utils/tree-to-list.ts | 11 ++ 7 files changed, 200 insertions(+), 49 deletions(-) create mode 100644 src/sheep/utils/tree-to-list.ts diff --git a/src/pages/prosperity-shop/goods-detail.vue b/src/pages/prosperity-shop/goods-detail.vue index 60988c1..cf4024b 100644 --- a/src/pages/prosperity-shop/goods-detail.vue +++ b/src/pages/prosperity-shop/goods-detail.vue @@ -1,3 +1,81 @@ - + - + + + diff --git a/src/pages/prosperity-shop/shop-detail.vue b/src/pages/prosperity-shop/shop-detail.vue index 3d6d3ef..67d3466 100644 --- a/src/pages/prosperity-shop/shop-detail.vue +++ b/src/pages/prosperity-shop/shop-detail.vue @@ -1,16 +1,18 @@ diff --git a/src/pages/tabbar/onlineShop.vue b/src/pages/tabbar/onlineShop.vue index 274508d..f1231aa 100644 --- a/src/pages/tabbar/onlineShop.vue +++ b/src/pages/tabbar/onlineShop.vue @@ -53,7 +53,7 @@ { } } -const treeToList = (tree: T[], result: T[] = []): T[] => { - for (const node of tree) { - result.push(node) - if (node?.children?.length) { - treeToList(node.children, result) - } - } - return result -} - // 获取分类 const getClassify = async () => { if (state.curMerchant.id) { diff --git a/src/pages/tabbar/prosperityShop.vue b/src/pages/tabbar/prosperityShop.vue index dc1fabc..c5a2ccb 100644 --- a/src/pages/tabbar/prosperityShop.vue +++ b/src/pages/tabbar/prosperityShop.vue @@ -43,7 +43,7 @@ {{ v.email }} - - 营业:{{ v.businessHours }} + + 营业:{{ v.businessHours }} diff --git a/src/sheep/api/prosperityShop.ts b/src/sheep/api/prosperityShop.ts index d9720f4..644a5dd 100644 --- a/src/sheep/api/prosperityShop.ts +++ b/src/sheep/api/prosperityShop.ts @@ -31,4 +31,19 @@ export default { params, }) }, + // 获取商品列表 + getGoodsList: (params: any): Promise => { + return request({ + url: `/supermarket/app/mall/merchant/product/list`, + method: "GET", + params, + }) + }, + // 获取商品详情 + getGoodsDetail: (id: string): Promise => { + return request({ + url: `/supermarket/app/mall/product/${id}`, + method: "GET", + }) + }, } diff --git a/src/sheep/components/crud/crud-layout/crud-layout.vue b/src/sheep/components/crud/crud-layout/crud-layout.vue index c90d790..1a38e1a 100644 --- a/src/sheep/components/crud/crud-layout/crud-layout.vue +++ b/src/sheep/components/crud/crud-layout/crud-layout.vue @@ -21,6 +21,7 @@ const props = withDefaults(defineProps(), { mainIsScroll: false, bg: "", }) +const emit = defineEmits(["scroll"]) const state = reactive({ navBgTitleColor_: props.navBgTitleColor, @@ -46,10 +47,11 @@ onMounted(() => { }) function scroll(e) { - if (!router.hasTabbar()) return - if (!props.scrollHideTabbar) return - const offset = 50 - const top = e.target.scrollTop + // if (!router.hasTabbar()) return + // if (!props.scrollHideTabbar) return + // const offset = 50 + // const top = e.target.scrollTop + emit("scroll", e) } function defaultPage() { @@ -67,7 +69,7 @@ function initBackStyle() { break case "just-flot-back": state.visble.topSafe = true - state.visble.topNav = false + state.visble.topNav = true break default: break diff --git a/src/sheep/utils/tree-to-list.ts b/src/sheep/utils/tree-to-list.ts new file mode 100644 index 0000000..ba991d7 --- /dev/null +++ b/src/sheep/utils/tree-to-list.ts @@ -0,0 +1,11 @@ +const treeToList = (tree: T[], result: T[] = []): T[] => { + for (const node of tree) { + result.push(node) + if (node?.children?.length) { + treeToList(node.children, result) + } + } + return result +} + +export default treeToList From 4cc0ac316e90048deb32b5d318f35ae2a8c9ced4 Mon Sep 17 00:00:00 2001 From: weiwei Date: Wed, 10 Sep 2025 12:10:45 +0800 Subject: [PATCH 07/37] =?UTF-8?q?feat:=E5=85=B1=E5=AF=8C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=95=86=E5=93=81sku=E5=92=8C=E5=95=86=E5=93=81=E6=90=9C?= =?UTF-8?q?=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/prosperity-shop/goods-detail.vue | 27 +++++--- src/pages/prosperity-shop/shop-detail.vue | 69 +++++++++++++++++---- src/pages/tabbar/prosperityShop.vue | 4 +- src/static/page/shop-goods-search.png | Bin 0 -> 9059 bytes 4 files changed, 79 insertions(+), 21 deletions(-) create mode 100644 src/static/page/shop-goods-search.png diff --git a/src/pages/prosperity-shop/goods-detail.vue b/src/pages/prosperity-shop/goods-detail.vue index cf4024b..c9ef73c 100644 --- a/src/pages/prosperity-shop/goods-detail.vue +++ b/src/pages/prosperity-shop/goods-detail.vue @@ -1,18 +1,18 @@ @@ -40,6 +52,7 @@ import { onLoad } from "@dcloudio/uni-app" import { reactive } from "vue" import { prosperityShopApi } from "@/sheep/api" import { filePath } from "@/sheep/utils/file" +import { displayPrice } from "@/sheep/utils/formatMoney" const state = reactive({ id: "", @@ -75,7 +88,7 @@ const getGoodsDetail = async (id: string) => { bottom: 0rpx; width: 20rpx; height: 20rpx; - background: radial-gradient(circle at 0 0, transparent 72%, #1879ff 0); + background: radial-gradient(circle at 0 0, transparent 80%, red 0); } } diff --git a/src/pages/prosperity-shop/shop-detail.vue b/src/pages/prosperity-shop/shop-detail.vue index 67d3466..0b47593 100644 --- a/src/pages/prosperity-shop/shop-detail.vue +++ b/src/pages/prosperity-shop/shop-detail.vue @@ -1,9 +1,16 @@ + + + + diff --git a/src/sheep/components/rich-text-input/rich-text-input.vue b/src/sheep/components/rich-text-input/rich-text-input.vue new file mode 100644 index 0000000..6864d38 --- /dev/null +++ b/src/sheep/components/rich-text-input/rich-text-input.vue @@ -0,0 +1,409 @@ + + + + + From 1b1642e51d33ca76d3ad254fb7ea385bc00a5188 Mon Sep 17 00:00:00 2001 From: weiwei Date: Fri, 12 Sep 2025 17:08:00 +0800 Subject: [PATCH 16/37] =?UTF-8?q?feat:=E6=A0=91=E5=BD=A2=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E7=9A=84=E6=96=B0=E5=A2=9E=E5=92=8C=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/cabinet/putaway.vue | 11 +- src/pages/integrated/visitor/invitation.vue | 1 - src/pages/prosperity-shop/goods-categary.vue | 91 +++++- src/pages/prosperity-shop/goods-form.vue | 1 - src/pages/tabbar/individualOrder.vue | 2 +- src/pages/tabbar/onlineShop.vue | 1 - src/sheep/api/prosperityShop.ts | 23 ++ src/sheep/components/shop-categary-picker.vue | 9 +- src/sheep/components/shop-categary-tree.vue | 11 +- .../tm-ui/components/tm-drawer/tm-drawer.vue | 303 +++++++++--------- 10 files changed, 276 insertions(+), 177 deletions(-) diff --git a/src/pages/cabinet/putaway.vue b/src/pages/cabinet/putaway.vue index c401b9c..0d5292f 100644 --- a/src/pages/cabinet/putaway.vue +++ b/src/pages/cabinet/putaway.vue @@ -59,16 +59,7 @@ - + {{ item.status == "0" ? "正常" : "禁用" }} - 编辑 - 删除 + 编辑 + 删除 @@ -20,18 +20,39 @@ - 分类名称: - - 父级分类: - + + 基本信息 + + + + + + + + + + 父级分类 + + + + 提 交 + + @@ -47,9 +68,11 @@ const categaryFormDrawer = ref(false) const form = reactive({ id: "", name: "", + status: "0", // 状态(0正常,1下架) parentId: "", }) const categoryTree = ref([]) +const selectedNode = ref({}) onLoad(() => { getGoodsCategory() @@ -69,10 +92,60 @@ const getCategaryTree = async () => { const addCategary = () => { getCategaryTree() + Object.assign(form, { + id: "", + name: "", + status: "0", + parentId: "", + }) + selectedNode.value = {} + categaryFormDrawer.value = true +} + +const editCategary = (item) => { + getCategaryTree() + Object.assign(form, item) + selectedNode.value = { id: item.parentId } categaryFormDrawer.value = true } const currentNode = (item) => { - form.parentId = item.categoryId + // form.parentId = item.categoryId +} + +const saveCategary = async () => { + console.log(form) + if (!form.name) return uni.showToast({ title: "请填写分类名称", icon: "none" }) + if (selectedNode.value.id === form.id) return uni.showToast({ title: "父级分类不能是自身", icon: "none" }) + try { + const params = { ...form, parentId: selectedNode.value.id } + uni.showLoading({ title: "保存中..." }) + const { code, data, msg } = await (form.id ? prosperityShopApi.editCategary(params) : prosperityShopApi.addCategary(params)) + if (code != 0) return uni.showToast({ title: msg || "保存失败", icon: "none" }) + uni.showToast({ title: "保存成功", icon: "none" }) + categaryFormDrawer.value = false + await getGoodsCategory() + } finally { + uni.hideLoading() + } +} + +// 删除分类 +const delCategary = async (id: string) => { + if (!id) return uni.showToast({ title: "分类id不存在", icon: "none" }) + uni.showModal({ + title: "确定删除分类吗?", + content: "", + success: async (res) => { + if (res.confirm) { + uni.showLoading({ title: "正在删除" }) + const { code, msg } = await prosperityShopApi.delCategary(id) + if (code != 0) return uni.showToast({ title: msg || "删除失败", icon: "none" }) + uni.showToast({ title: "删除成功", icon: "none" }) + getGoodsCategory() + uni.hideLoading() + } + }, + }) } diff --git a/src/pages/prosperity-shop/goods-form.vue b/src/pages/prosperity-shop/goods-form.vue index 02b6341..c4435d3 100644 --- a/src/pages/prosperity-shop/goods-form.vue +++ b/src/pages/prosperity-shop/goods-form.vue @@ -152,7 +152,6 @@ :showClose="true" :showFooter="false" size="auto" - placement="bottom" v-model:show="showCategaryPicker" :duration="100" zIndex="100" diff --git a/src/pages/tabbar/individualOrder.vue b/src/pages/tabbar/individualOrder.vue index e959f35..2987b82 100644 --- a/src/pages/tabbar/individualOrder.vue +++ b/src/pages/tabbar/individualOrder.vue @@ -83,7 +83,7 @@ - + => { + return request({ + url: `/supermarket/app/mall/merchant/category/${id}`, + method: "DELETE", + }) + }, + // 新增商品分类 + addCategary: (data: any): Promise => { + return request({ + url: `/supermarket/app/mall/merchant/category/create`, + method: "POST", + data, + }) + }, + // 编辑商品分类 + editCategary: (data: any): Promise => { + return request({ + url: `/supermarket/app/mall/merchant/category/update`, + method: "PUT", + data, + }) + }, } diff --git a/src/sheep/components/shop-categary-picker.vue b/src/sheep/components/shop-categary-picker.vue index 51176c9..c678f5b 100644 --- a/src/sheep/components/shop-categary-picker.vue +++ b/src/sheep/components/shop-categary-picker.vue @@ -1,6 +1,6 @@