代码更新

This commit is contained in:
GaoHao
2025-02-26 19:46:20 +08:00
parent 7519ffced3
commit b4a0393d2d
413 changed files with 7483 additions and 60762 deletions

View File

@@ -2,9 +2,7 @@
<view class="safe-page min-page">
<up-sticky>
<view class="bg-fff u-p-l-30 u-p-b-24">
<!-- <view class="myTabs ">
<myTabs :list="tabsList" @change="tabsChange"></myTabs>
</view> -->
<view class="input-wrapper">
<view class="input-main">
<view class="u-flex u-p-r-30 u-font-28" @click="onCategoryShowChange(true)">
@@ -39,8 +37,8 @@
<view class="goods-list u-p-30">
<template v-if="pageData.bindGoodsList.length">
<view class="u-m-b-32" v-for="(item,index) in pageData.bindGoodsList" :key="index">
<my-goods isBind @radioClick="goodsRadioClick" :index="index" :data="item" @del="goodsDel"
:showChecked="showChecked" :showDetail="pageData.showGoodsDetail"></my-goods>
<my-goods isBind :index="index" :data="item" @del="goodsDel"
:showDetail="pageData.showGoodsDetail"></my-goods>
</view>
</template>
<template v-if="pageData.hasAjax&&!pageData.bindGoodsList.length">
@@ -54,8 +52,7 @@
<view class="bg-fff border-r-18 u-p-t-16 u-p-b-16 box-shadow">
<template v-if="pageData.goodsList.length">
<view class="" v-for="(item,index) in pageData.goodsList" :key="index">
<my-goods @goodsClick="goodsClick" @radioClick="goodsRadioClick" :index="index" :data="item"
@del="goodsDel" :showChecked="showChecked"
<my-goods @goodsClick="goodsClick" :index="index" :data="item"
:showDetail="pageData.showGoodsDetail"></my-goods>
</view>
</template>
@@ -67,15 +64,9 @@
<my-button shape="circle" @click="save">确定</my-button>
</view>
<view style="height: 100rpx;"></view>
<!-- <my-pagination :totalElements="pageData.totalElements" :size="pageData.query.size"
@change="pageChange"></my-pagination> -->
<!-- <my-control></my-control> -->
</view>
</template>
<!-- 分类 -->
<my-category v-model:isShow="pageData.categoryShow" @confirm="setCategory"></my-category>
</view>
@@ -83,64 +74,22 @@
</template>
<script setup>
import {
onLoad,
onReady,
onShow,
onPageScroll,
onPullDownRefresh
} from '@dcloudio/uni-app';
import {
reactive,
ref,
watch
} from 'vue';
import go from '@/commons/utils/go.js';
import { onLoad, onShow } from '@dcloudio/uni-app';
import { reactive, ref, watch } from 'vue';
import myGoods from './components/goods.vue'
import myCategory from './components/category.vue'
import infoBox from "@/commons/utils/infoBox.js"
import myControl from './components/control.vue'
import {
$tbProduct,
$upProSort,
$updateProduct,
$getProductDetail,
$delProduct,
$tbShopCategory,
$updateProductStatus,
$tbProductV2,
$updateProductData
} from "@/http/yskApi/goods.js"
import {
productListGet,
tbProductGroupGet,
tbProductGroupDelete,
tbProductGroupPut,
upGroupSort,
tbProductGroupPost
} from "@/http/yskApi/shop.js"
import {
hasPermission
} from '@/commons/utils/hasPermission.js';
import {
returnAllCategory
} from '@/pageProduct/util.js'
import { hasPermission } from '@/commons/utils/hasPermission.js';
import { categoryPage } from '@/api/cateGory.js'
import { getProductList,getProdGroupDetail,updateProdGroup } from '@/api/product.js'
const pageData = reactive({
modelDesc: '是否下架',
stateCurrent: 0,
componentBottom: 45,
search: {
value: '',
placeholder: '输入搜索的商品'
},
showGoodsDetail: false,
selGoodsIndex: '',
selGoods: {},
totalElements: 0,
totalPage: 0,
bindGoodsList: [],
goodsList: [],
query: {
@@ -148,9 +97,7 @@
size: 999,
categoryId: '',
name: '',
createdAt: [],
id: "",
sort: "createdAt,desc"
},
category: '',
categoryList: [], //分类列表
@@ -159,262 +106,22 @@
hasAjax: false
})
function isGroundingChange(e) {
const {
goodsIndex,
guigeIndex
} = popup.guige
pageData.goodsList[goodsIndex].skuList[guigeIndex].isGrounding = e
}
function isPauseSaleChange(e) {
const {
goodsIndex,
guigeIndex
} = popup.guige
pageData.goodsList[goodsIndex].skuList[guigeIndex].isPauseSale = e
}
function onCategoryShowChange(show) {
console.log(show);
pageData.categoryShow = show
}
function goodsClick(e) {
console.log(e);
pageData.goodsList[e].checked = !pageData.goodsList[e].checked
}
function setCategory(category) {
pageData.query.categoryId = category.id
console.log(pageData.query.categoryId );
pageData.categoryName = category.name
}
let $goodsList = []
function setGoodsList() {
pageData.goodsList = $goodsList.filter(v => {
return !pageData.bindGoodsList.find(bindGoods => bindGoods.id == v.id)
})
}
function getGoodsList() {
$tbProductV2(pageData.query).then(res => {
pageData.hasAjax = true
pageData.totalElements = res.totalElements
$goodsList = res.content.map(v => {
return {
...v,
checked: false
}
})
setGoodsList()
})
}
onShow(() => {
// getGoodsList()
})
async function getGroupBindGoods() {
const res = await productListGet(option.id)
pageData.bindGoodsList = res.filter(v=>{
return pageData.query.categoryId===''?true:(v.categoryId==pageData.query.categoryId)&&(v.name.includes(pageData.query.name))
})
}
const option = reactive({})
async function init() {
await getGroupBindGoods()
getGoodsList()
}
onLoad((opt) => {
Object.assign(option, opt)
init()
// $tbShopCategory({
// page: 0,
// size: 200
// }).then(res => {
// pageData.categoryList = returnAllCategory(res.content)
// console.log(pageData.categoryList);
// })
})
const statesTabsList = ['已添加', '未添加']
const control = ref(null)
const model = ref(null)
const goodsStockModel = ref(null)
function returnGoodsStockData() {
return reactive({
sort: 0,
isStock: false,
isDistribute: false,
isPauseSale: false,
isGrounding: false,
stockNumber: 0,
})
}
async function save() {
const res = await hasPermission('允许修改分组')
if (!res) {
return
}
console.log(pageData.goodsList);
await tbProductGroupPut({
...option,
shopId: uni.getStorageSync('shopId'),
productIds: [...pageData.bindGoodsList.map(v => v.id), ...pageData.goodsList.filter(v => v.checked)
.map(v => v.id)
]
})
pageData.stateCurrent = 0
}
function updateGroup() {
}
//删除商品
async function goodsDel(index) {
const res = await hasPermission('允许修改分组')
if (!res) {
return
}
const goods = pageData.bindGoodsList[index]
uni.showModal({
title: '提示',
content: '是否确认将' + goods.name + '从该分组中移除',
success: function(res) {
if (res.confirm) {
pageData.bindGoodsList.splice(index, 1)
tbProductGroupPut({
...option,
shopId: uni.getStorageSync('shopId'),
productIds: pageData.bindGoodsList.map(v => v.id)
})
} else if (res.cancel) {}
}
});
}
function statesTableClick(index) {
pageData.stateCurrent = index
console.log(pageData.stateCurrent);
}
function tabsChange(i) {
console.log(i);
pageData.showGoodsDetail = i ? true : false
}
//改变商品的选中状态
function changeGoodsChecked(checked, index) {
if (index !== undefined) {
pageData.goodsList[index].checked = checked
} else {
pageData.goodsList.map(v => {
v.checked = checked
})
}
control.value.setisSelectAll(isAllChecked() ? true : false)
}
// 获取已经选中的商品
function getChechkedGoodsList() {
return pageData.goodsList.filter(v => v.checked)
}
//是否全部选中
function isAllChecked() {
return getChechkedGoodsList().length === pageData.goodsList.length
}
// 是否有商品选中
function isHasChekdGoods() {
return getChechkedGoodsList().length ? true : false
}
let isSearch=ref(false)
async function searchFunc() {
isSearch.value=true
console.log('searchFunc');
if (pageData.stateCurrent) {
getGoodsList()
} else {
const res = await productListGet(option.id)
pageData.bindGoodsList = res.filter(v=>{
return v.name.includes(pageData.query.name)&&(pageData.query.categoryId===''?true:v.categoryId==pageData.query.categoryId)
})
}
}
let showChecked = ref(false)
//商品start
function goodsRadioClick(index) {
var checked = !pageData.goodsList[index].checked
changeGoodsChecked(checked, index)
}
//下架
function offShelf() {
const hasCheckedArr = getChechkedGoodsList()
const hasChecked = isHasChekdGoods()
if (!hasChecked) {
return infoBox.showToast('您还没有选中商品!')
}
model.value.open()
}
//下架确认
function modelConfirm() {
console.log('confirm');
model.value.close()
}
//商品end
//控制条
function controlChange(bol) {
showChecked.value = bol
}
// 全选
function allCheckedChange(checked) {
changeGoodsChecked(checked)
}
// 页数改变事件
function pageChange(page) {
console.log(page);
pageData.query.page = page - 1
getGoodsList()
}
const statesTabsList = ['已添加', '未添加']
const control = ref(null)
const model = ref(null)
const option = reactive({})
//分类
const category = ref(null)
function toggleCategory() {
category.value.toggle()
}
function cateClick(cate) {
console.log(cate);
pageData.query.categoryId = cate.id
pageData.categoryName = cate.name
pageData.category = cate
getGoodsList()
}
onLoad((opt) => {
Object.assign(option, opt)
init()
})
onShow(() => {
})
watch(() => pageData.query.categoryId, (newval) => {
if(pageData.stateCurrent==1){
getGoodsList()
@@ -430,6 +137,131 @@
getGroupBindGoods()
}
})
async function init() {
await getGroupBindGoods()
getGoodsList()
}
/**
* 搜索
*/
async function searchFunc() {
isSearch.value=true
if (pageData.stateCurrent) {
getGoodsList()
} else {
const res = await getProdGroupDetail(option.id)
pageData.bindGoodsList = res.productList.filter(v=>{
return v.name.includes(pageData.query.name)&&(pageData.query.categoryId==''?true:v.categoryId==pageData.query.categoryId)
})
}
}
/**
* 获取商品列表
*/
function getGoodsList() {
getProductList(pageData.query).then(res => {
pageData.hasAjax = true
let goodsList = res.records.map(v => {
return {
...v,
checked: false
}
})
pageData.goodsList = goodsList.filter(v => {
return !pageData.bindGoodsList.find(bindGoods => bindGoods.id == v.id)
})
})
}
/**
* 获取分组详情
*/
async function getGroupBindGoods() {
let res = await getProdGroupDetail(option.id)
console.log(res)
pageData.bindGoodsList = res.productList.filter(v=>{
return pageData.query.categoryId === '' ? true : (v.categoryId==pageData.query.categoryId)&&(v.name.includes(pageData.query.name))
})
}
/**
* 已添加/未添加切换
* @param {Object} index
*/
function statesTableClick(index) {
pageData.stateCurrent = index
}
/**
* 分类选择
* @param {Object} show
*/
function onCategoryShowChange(show) {
pageData.categoryShow = show
}
/**
* 分类选择确定
* @param {Object} category
*/
function setCategory(category) {
pageData.query.categoryId = category.id
console.log(pageData.query.categoryId );
pageData.categoryName = category.name
}
/**
* 绑定商品
*/
async function save() {
const res = await hasPermission('允许修改分组')
if (!res) {
return
}
console.log(pageData.goodsList);
await updateProdGroup({
...option,
productIds: [...pageData.bindGoodsList.map(v => v.id), ...pageData.goodsList.filter(v => v.checked)
.map(v => v.id)
]
})
pageData.stateCurrent = 0
}
/**
* 删除商品
* @param {Object} index
*/
async function goodsDel(index) {
const res = await hasPermission('允许修改分组')
if (!res) {
return
}
const goods = pageData.bindGoodsList[index]
uni.showModal({
title: '提示',
content: '是否确认将' + goods.name + '从该分组中移除',
success: function(res) {
if (res.confirm) {
pageData.bindGoodsList.splice(index, 1)
updateProdGroup({
...option,
productIds: pageData.bindGoodsList.map(v => v.id)
})
} else if (res.cancel) {}
}
});
}
function goodsClick(e) {
pageData.goodsList[e].checked = !pageData.goodsList[e].checked
}
</script>
<style scoped>
page {