代码更新
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user