优化资源管理

This commit is contained in:
gyq 2024-05-11 17:17:42 +08:00
parent 8441022041
commit 5eb74b5463
6 changed files with 160 additions and 105 deletions

View File

@ -1,4 +1,4 @@
import request from '@/utils/request' import request from "@/utils/request";
/** /**
* 商品列表 * 商品列表
@ -6,10 +6,10 @@ import request from '@/utils/request'
*/ */
export function tbProduct(params) { export function tbProduct(params) {
return request({ return request({
url: '/api/tbProduct', url: "/api/tbProduct",
method: 'get', method: "get",
params params
}) });
} }
/** /**
@ -18,10 +18,10 @@ export function tbProduct(params) {
*/ */
export function tbProductDelete(data) { export function tbProductDelete(data) {
return request({ return request({
url: '/api/tbProduct', url: "/api/tbProduct",
method: 'delete', method: "delete",
data data
}) });
} }
/** /**
@ -30,10 +30,10 @@ export function tbProductDelete(data) {
*/ */
export function tbShopUnit(params) { export function tbShopUnit(params) {
return request({ return request({
url: '/api/tbShopUnit', url: "/api/tbShopUnit",
method: 'get', method: "get",
params params
}) });
} }
/** /**
@ -43,8 +43,8 @@ export function tbShopUnit(params) {
export function tbShopCurrency(shopId) { export function tbShopCurrency(shopId) {
return request({ return request({
url: `/api/tbShopCurrency/${shopId}`, url: `/api/tbShopCurrency/${shopId}`,
method: 'get' method: "get"
}) });
} }
/** /**
@ -54,9 +54,9 @@ export function tbShopCurrency(shopId) {
export function tbShopCurrencyPut(data) { export function tbShopCurrencyPut(data) {
return request({ return request({
url: `/api/tbShopCurrency`, url: `/api/tbShopCurrency`,
method: 'put', method: "put",
data data
}) });
} }
/** /**
@ -66,9 +66,9 @@ export function tbShopCurrencyPut(data) {
export function tbShopUnitPost(data) { export function tbShopUnitPost(data) {
return request({ return request({
url: `/api/tbShopUnit`, url: `/api/tbShopUnit`,
method: 'post', method: "post",
data data
}) });
} }
/** /**
@ -78,9 +78,9 @@ export function tbShopUnitPost(data) {
export function tbShopUnitPut(data) { export function tbShopUnitPut(data) {
return request({ return request({
url: `/api/tbShopUnit`, url: `/api/tbShopUnit`,
method: 'put', method: "put",
data data
}) });
} }
/** /**
@ -90,9 +90,9 @@ export function tbShopUnitPut(data) {
export function tbShopUnitDelete(data) { export function tbShopUnitDelete(data) {
return request({ return request({
url: `/api/tbShopUnit`, url: `/api/tbShopUnit`,
method: 'delete', method: "delete",
data data
}) });
} }
/** /**
@ -102,9 +102,9 @@ export function tbShopUnitDelete(data) {
export function tbShopCurrencyGet(params) { export function tbShopCurrencyGet(params) {
return request({ return request({
url: `/api/tbShopUnit`, url: `/api/tbShopUnit`,
method: 'get', method: "get",
params params
}) });
} }
/** /**
@ -114,21 +114,21 @@ export function tbShopCurrencyGet(params) {
export function tbShopCategoryGet(params) { export function tbShopCategoryGet(params) {
return request({ return request({
url: `/api/tbShopCategory`, url: `/api/tbShopCategory`,
method: 'get', method: "get",
params params
}) });
} }
/** /**
* 新增编辑分类/新增编辑子分类 * 新增编辑分类/新增编辑子分类
* @returns * @returns
*/ */
export function tbShopCategoryPost(data, method = 'post') { export function tbShopCategoryPost(data, method = "post") {
return request({ return request({
url: `/api/tbShopCategory`, url: `/api/tbShopCategory`,
method: method, method: method,
data data
}) });
} }
/** /**
@ -138,9 +138,9 @@ export function tbShopCategoryPost(data, method = 'post') {
export function tbShopCategoryDelete(data) { export function tbShopCategoryDelete(data) {
return request({ return request({
url: `/api/tbShopCategory`, url: `/api/tbShopCategory`,
method: 'delete', method: "delete",
data data
}) });
} }
/** /**
@ -150,9 +150,9 @@ export function tbShopCategoryDelete(data) {
export function tbProductSpecPost(data) { export function tbProductSpecPost(data) {
return request({ return request({
url: `/api/tbProductSpec`, url: `/api/tbProductSpec`,
method: 'post', method: "post",
data data
}) });
} }
/** /**
@ -162,9 +162,9 @@ export function tbProductSpecPost(data) {
export function tbProductSpecGet(params) { export function tbProductSpecGet(params) {
return request({ return request({
url: `/api/tbProductSpec`, url: `/api/tbProductSpec`,
method: 'get', method: "get",
params params
}) });
} }
/** /**
@ -174,9 +174,9 @@ export function tbProductSpecGet(params) {
export function tbProductSpecPut(data) { export function tbProductSpecPut(data) {
return request({ return request({
url: `/api/tbProductSpec`, url: `/api/tbProductSpec`,
method: 'put', method: "put",
data data
}) });
} }
/** /**
@ -186,9 +186,9 @@ export function tbProductSpecPut(data) {
export function tbProductSpecDelete(data) { export function tbProductSpecDelete(data) {
return request({ return request({
url: `/api/tbProductSpec`, url: `/api/tbProductSpec`,
method: 'DELETE', method: "DELETE",
data data
}) });
} }
/** /**
@ -198,9 +198,9 @@ export function tbProductSpecDelete(data) {
export function tbProductGroupPost(data) { export function tbProductGroupPost(data) {
return request({ return request({
url: `/api/tbProductGroup`, url: `/api/tbProductGroup`,
method: 'post', method: "post",
data data
}) });
} }
/** /**
@ -210,9 +210,9 @@ export function tbProductGroupPost(data) {
export function tbProductGroupPut(data) { export function tbProductGroupPut(data) {
return request({ return request({
url: `/api/tbProductGroup`, url: `/api/tbProductGroup`,
method: 'PUT', method: "PUT",
data data
}) });
} }
/** /**
@ -222,9 +222,9 @@ export function tbProductGroupPut(data) {
export function tbProductGroupGet(params) { export function tbProductGroupGet(params) {
return request({ return request({
url: `/api/tbProductGroup`, url: `/api/tbProductGroup`,
method: 'get', method: "get",
params params
}) });
} }
/** /**
@ -234,8 +234,8 @@ export function tbProductGroupGet(params) {
export function productListGet(productGroup) { export function productListGet(productGroup) {
return request({ return request({
url: `/api/tbProductGroup/${productGroup}`, url: `/api/tbProductGroup/${productGroup}`,
method: 'get' method: "get"
}) });
} }
/** /**
@ -245,9 +245,9 @@ export function productListGet(productGroup) {
export function tbProductGroupDelete(data) { export function tbProductGroupDelete(data) {
return request({ return request({
url: `/api/tbProductGroup`, url: `/api/tbProductGroup`,
method: 'DELETE', method: "DELETE",
data data
}) });
} }
/** /**
@ -257,9 +257,9 @@ export function tbProductGroupDelete(data) {
export function tbProductPost(data) { export function tbProductPost(data) {
return request({ return request({
url: `/api/tbProduct`, url: `/api/tbProduct`,
method: 'post', method: "post",
data data
}) });
} }
/** /**
@ -269,9 +269,9 @@ export function tbProductPost(data) {
export function tbProductPut(data) { export function tbProductPut(data) {
return request({ return request({
url: `/api/tbProduct`, url: `/api/tbProduct`,
method: 'put', method: "put",
data data
}) });
} }
/** /**
@ -282,8 +282,8 @@ export function tbProductPut(data) {
export function tbProductGetDetail(product) { export function tbProductGetDetail(product) {
return request({ return request({
url: `/api/tbProduct/${product}`, url: `/api/tbProduct/${product}`,
method: 'get' method: "get"
}) });
} }
/** /**
@ -293,9 +293,9 @@ export function tbProductGetDetail(product) {
export function tbShopInfo(params) { export function tbShopInfo(params) {
return request({ return request({
url: `/api/tbShopInfo`, url: `/api/tbShopInfo`,
method: 'get', method: "get",
params params
}) });
} }
/** /**
@ -305,9 +305,9 @@ export function tbShopInfo(params) {
export function tbMerchantRegisterPost(data) { export function tbMerchantRegisterPost(data) {
return request({ return request({
url: `/api/tbMerchantRegister`, url: `/api/tbMerchantRegister`,
method: 'post', method: "post",
data data
}) });
} }
/** /**
@ -317,21 +317,21 @@ export function tbMerchantRegisterPost(data) {
export function tbMerchantRegisterList(data) { export function tbMerchantRegisterList(data) {
return request({ return request({
url: `/api/tbMerchantRegister/list`, url: `/api/tbMerchantRegister/list`,
method: 'post', method: "post",
data data
}) });
} }
/** /**
* 增加/编辑店铺 * 增加/编辑店铺
* @returns * @returns
*/ */
export function tbShopInfoPost(data, method = 'post') { export function tbShopInfoPost(data, method = "post") {
return request({ return request({
url: `/api/tbShopInfo`, url: `/api/tbShopInfo`,
method: method, method: method,
data data
}) });
} }
/** /**
@ -341,8 +341,8 @@ export function tbShopInfoPost(data, method = 'post') {
export function tbMerchantThirdApply(shopId) { export function tbMerchantThirdApply(shopId) {
return request({ return request({
url: `/api/tbMerchantThirdApply/${shopId}`, url: `/api/tbMerchantThirdApply/${shopId}`,
method: 'get' method: "get"
}) });
} }
/** /**
@ -352,9 +352,9 @@ export function tbMerchantThirdApply(shopId) {
export function tbMerchantThirdApplyPut(data) { export function tbMerchantThirdApplyPut(data) {
return request({ return request({
url: `/api/tbMerchantThirdApply`, url: `/api/tbMerchantThirdApply`,
method: 'put', method: "put",
data data
}) });
} }
/** /**
@ -364,21 +364,21 @@ export function tbMerchantThirdApplyPut(data) {
export function tbProductIsHot(params) { export function tbProductIsHot(params) {
return request({ return request({
url: `/api/tbProduct/isHot`, url: `/api/tbProduct/isHot`,
method: 'get', method: "get",
params params
}) });
} }
/** /**
* 增加/编辑优惠券 * 增加/编辑优惠券
* @returns * @returns
*/ */
export function tbMerchantCoupon(data, method = 'post') { export function tbMerchantCoupon(data, method = "post") {
return request({ return request({
url: `/api/tbMerchantCoupon`, url: `/api/tbMerchantCoupon`,
method: method, method: method,
data data
}) });
} }
/** /**
@ -388,10 +388,19 @@ export function tbMerchantCoupon(data, method = 'post') {
export function tbMerchantCouponGet(params) { export function tbMerchantCouponGet(params) {
return request({ return request({
url: `/api/tbMerchantCoupon`, url: `/api/tbMerchantCoupon`,
method: 'get', method: "get",
params params
}) });
} }
/**
* 设置热销商品
* @returns
*/
export function geocode(params) {
return request({
url: `/api/geocode`,
method: "get",
params
});
}

View File

@ -5,6 +5,9 @@
<el-form-item label="店铺名称" prop="shopName"> <el-form-item label="店铺名称" prop="shopName">
<el-input v-model="form.shopName" placeholder="请输入门店名称"></el-input> <el-input v-model="form.shopName" placeholder="请输入门店名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="连锁店扩展店名" prop="chainName">
<el-input v-model="form.chainName" placeholder="请输入连锁店扩展店名"></el-input>
</el-form-item>
<el-form-item label="门店logo" prop="logo"> <el-form-item label="门店logo" prop="logo">
<el-image :src="form.logo || require('@/assets/images/upload.png')" fit="contain" <el-image :src="form.logo || require('@/assets/images/upload.png')" fit="contain"
style="width: 80px;height: 80px;" @click="showUpload = true; uploadIndex = 1"></el-image> style="width: 80px;height: 80px;" @click="showUpload = true; uploadIndex = 1"></el-image>
@ -49,14 +52,17 @@
</el-form-item> --> </el-form-item> -->
<el-form-item label="店铺经度"> <el-form-item label="店铺经度">
<el-row> <el-row>
<el-col :span="4"> <el-col :span="9" v-if="form.provinces">
<el-input v-model="form.lng" placeholder="经度"></el-input> <el-input :value="`${form.provinces}-${form.cities}-${form.districts}`" disabled />
</el-col>
<el-col :span="4" v-if="form.lng">
<el-input v-model="form.lng" placeholder="经度" disabled></el-input>
</el-col>
<el-col :span="4" v-if="form.lng">
<el-input v-model="form.lat" placeholder="纬度" disabled></el-input>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<el-input v-model="form.lat" placeholder="纬度" style="margin-left: 10px;"></el-input> <el-button type="primary" plain icon="el-icon-place"
</el-col>
<el-col :span="4">
<el-button type="primary" plain icon="el-icon-place" style="margin-left: 20px;"
@click="showLocation = true">选择坐标</el-button> @click="showLocation = true">选择坐标</el-button>
</el-col> </el-col>
</el-row> </el-row>
@ -129,7 +135,7 @@
import { getToken } from '@/utils/auth' import { getToken } from '@/utils/auth'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import crudQiNiu from '@/api/tools/qiniu' import crudQiNiu from '@/api/tools/qiniu'
import { tbShopInfoPost } from '@/api/shop' import { tbShopInfoPost, geocode } from '@/api/shop'
export default { export default {
computed: { computed: {
...mapGetters([ ...mapGetters([
@ -168,7 +174,11 @@ export default {
detail: '', detail: '',
status: 1, status: 1,
logo: '', logo: '',
coverImg: '' coverImg: '',
provinces: '',
cities: '',
districts: '',
chainName: ''
}, },
resetForm: '', resetForm: '',
rules: { rules: {
@ -179,6 +189,13 @@ export default {
trigger: 'blur' trigger: 'blur'
} }
], ],
chainName: [
{
required: true,
message: ' ',
trigger: 'blur'
}
],
logo: [ logo: [
{ {
required: true, required: true,
@ -226,20 +243,20 @@ export default {
this.amapOptions.center = [res[0].lng, res[0].lat] this.amapOptions.center = [res[0].lng, res[0].lat]
}, },
// //
selectLocationHandle(item) { async selectLocationHandle(item) {
console.log(item);
this.form.lng = item.lng this.form.lng = item.lng
this.form.lat = item.lat this.form.lat = item.lat
this.form.address = item.address
this.showLocation = false this.showLocation = false
console.log(this.$refs.map.$$getInstance()); const position = `${item.lng},${item.lat}`;
const res = JSON.parse(await geocode({ location: position }))
console.log(res);
const position = { lng: item.lng, lat: item.lat }; this.form.provinces = res.addressComponent.province
this.$refs.map.geocoder.getAddress(position, (status, result) => { this.form.cities = res.addressComponent.city
if (status === 'complete' && result.info === 'OK') { this.form.districts = res.addressComponent.district
//
console.log(result.regeocode.addressComponent);
}
})
}, },
// //
submitHandle() { submitHandle() {

View File

@ -79,6 +79,12 @@
<el-form-item v-show="form.iFrame.toString() !== 'true' && form.type.toString() === '1'" label="选中父级菜单"> <el-form-item v-show="form.iFrame.toString() !== 'true' && form.type.toString() === '1'" label="选中父级菜单">
<el-input v-model="form.activeMenu" placeholder="请输入父级菜单path" style="width: 178px;" /> <el-input v-model="form.activeMenu" placeholder="请输入父级菜单path" style="width: 178px;" />
</el-form-item> </el-form-item>
<el-form-item label="商家可用">
<el-radio-group v-model="form.isShop" size="mini">
<el-radio-button :label="1"></el-radio-button>
<el-radio-button :label="0"></el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="上级类目" prop="pid"> <el-form-item label="上级类目" prop="pid">
<treeselect v-model="form.pid" :options="menus" :load-options="loadMenus" style="width: 450px;" <treeselect v-model="form.pid" :options="menus" :load-options="loadMenus" style="width: 450px;"
placeholder="选择上级类目" /> placeholder="选择上级类目" />
@ -125,6 +131,12 @@
<span v-else></span> <span v-else></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="isShop" label="商家可用" width="75px">
<template slot-scope="scope">
<span v-if="scope.row.isShop"></span>
<span v-else></span>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建日期" width="135px" /> <el-table-column prop="createTime" label="创建日期" width="135px" />
<el-table-column v-if="checkPer(['admin', 'menu:edit', 'menu:del'])" label="操作" width="130px" align="center" <el-table-column v-if="checkPer(['admin', 'menu:edit', 'menu:del'])" label="操作" width="130px" align="center"
fixed="right"> fixed="right">

View File

@ -8,7 +8,7 @@
<el-option v-for="item in typeList" :key="item.value" :label="item.label" :value="item.value"></el-option> <el-option v-for="item in typeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="团购卷" prop="group" v-if="form.type == 'group'"> <el-form-item label="团购卷" prop="group">
<div v-if="!productIds.length"> <div v-if="!productIds.length">
<el-button type="primary" icon="el-icon-plus" @click="$refs.groupTypeList.show()"> <el-button type="primary" icon="el-icon-plus" @click="$refs.groupTypeList.show()">
添加团购券 添加团购券
@ -21,10 +21,10 @@
</el-tag> </el-tag>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="描述" prop="name" v-if="form.type != 'group'"> <el-form-item label="描述" prop="name">
<el-input v-model="form.name" placeholder="请输入描述"></el-input> <el-input v-model="form.name" placeholder="请输入描述"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="值" prop="value" v-if="form.type != 'group'"> <el-form-item label="值" prop="value">
<el-input v-model="form.value" placeholder="请输入值"></el-input> <el-input v-model="form.value" placeholder="请输入值"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="跳转类型" prop="jumpType"> <el-form-item label="跳转类型" prop="jumpType">
@ -42,9 +42,9 @@
<el-form-item label="背景色"> <el-form-item label="背景色">
<el-color-picker v-model="form.backColor"></el-color-picker> <el-color-picker v-model="form.backColor"></el-color-picker>
</el-form-item> </el-form-item>
<el-form-item label="相对跳转地址" prop="value"> <!-- <el-form-item label="相对跳转地址" prop="value">
<el-input v-model="form.relUrl" placeholder="请输入相对跳转地址"></el-input> <el-input v-model="form.relUrl" placeholder="请输入相对跳转地址"></el-input>
</el-form-item> </el-form-item> -->
<el-form-item label="绝对跳转地址" prop="value"> <el-form-item label="绝对跳转地址" prop="value">
<el-input v-model="form.absUrl" placeholder="请输入绝对跳转地址"></el-input> <el-input v-model="form.absUrl" placeholder="请输入绝对跳转地址"></el-input>
</el-form-item> </el-form-item>
@ -79,7 +79,7 @@
<el-button type="primary" :loading="loading" @click="onSubmitHandle"> </el-button> <el-button type="primary" :loading="loading" @click="onSubmitHandle"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
<groupTypeList ref="groupTypeList" @success="row => productIds = [row]" /> <groupTypeList ref="groupTypeList" @success="groupSuccess" />
</div> </div>
</template> </template>
@ -148,14 +148,20 @@ export default {
this.resetForm = { ...this.form }; this.resetForm = { ...this.form };
}, },
methods: { methods: {
groupSuccess(row) {
this.productIds = [row]
this.form.name = row.name
this.form.value = row.id
},
//
typeChange(e) { typeChange(e) {
if (e == 'group') { // if (e == 'group') {
} else if (e == 'custom') { // } else if (e == 'custom') {
} else { // } else {
} // }
}, },
// //
onSubmitHandle() { onSubmitHandle() {

View File

@ -42,10 +42,14 @@ export default {
value: "ownMenu", value: "ownMenu",
label: "个人中心菜单" label: "个人中心菜单"
}, },
// {
// value: "group",
// label: "团购卷"
// },
{ {
value: "group", value: "hotCoupon",
label: "团购卷" label: "热榜推荐"
}, }
// { // {
// value: "custom", // value: "custom",
// label: "自定义" // label: "自定义"

View File

@ -3,9 +3,15 @@
<div class="head-container"> <div class="head-container">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="6"> <el-col :span="6">
<el-input v-model="query.blurry" size="small" clearable placeholder="请输入名称或描述" style="width: 100%;" <el-input v-model="query.name" size="small" clearable placeholder="请输入名称或描述" style="width: 100%;"
class="filter-item" @keyup.enter.native="getTableData" /> class="filter-item" @keyup.enter.native="getTableData" />
</el-col> </el-col>
<el-col :span="6">
<el-select v-model="query.type" placeholder="请选择资源类型">
<el-option v-for="item in enumData.typeList" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
</el-col>
<el-col :span="6"> <el-col :span="6">
<el-button type="primary" @click="getTableData">查询</el-button> <el-button type="primary" @click="getTableData">查询</el-button>
<el-button @click="resetHandle">重置</el-button> <el-button @click="resetHandle">重置</el-button>
@ -23,7 +29,7 @@
<el-table-column label="描述" prop="name"></el-table-column> <el-table-column label="描述" prop="name"></el-table-column>
<el-table-column label="类型" prop="type"> <el-table-column label="类型" prop="type">
<template v-slot="scope"> <template v-slot="scope">
{{ scope.row.type | typeFilter }} {{ scope.row.type }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="跳转类型" prop="jumpType"> <el-table-column label="跳转类型" prop="jumpType">
@ -107,6 +113,7 @@ export default {
}, },
data() { data() {
return { return {
enumData,
query: { query: {
name: "", name: "",
type: '' type: ''
@ -122,7 +129,7 @@ export default {
}, },
filters: { filters: {
typeFilter(t) { typeFilter(t) {
let e = enumData.typeList.find(item => item.value == t).label let e = t ? enumData.typeList.find(item => item.value == t).label : t
return e ? e : t return e ? e : t
}, },
jumpFilter(t) { jumpFilter(t) {