后台优惠券绑定套餐

main
yanzai 1 year ago
parent c7cb365e39
commit 64ddc64482

@ -170,6 +170,10 @@ class ComboController extends Controller
return \Yz::Return(true, "查询完成", ['list' => $list, 'count' => $count]);
}
public function GetAllList(){
$list = DB::table('combos')->get();
return \Yz::Return(true, "查询完成", ['list' => $list]);
}
public function GetDetail()
{

@ -0,0 +1,81 @@
<?php
namespace App\Http\Controllers\API\Admin\YeWu;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class CouponsController extends Controller
{
public function GetList()
{
$list = DB::table('coupons')->where(['is_del'=>0])->get();
return \Yz::Return(true, '查询成功', ['list' => $list]);
}
public function Save()
{
$Info = request('Info');
if (!isset($Info['name'])) return \Yz::echoError1("名称不能为空");
if (!isset($Info['his_id'])) return \Yz::echoError1("Id不能为空");
if (!isset($Info['type'])) return \Yz::echoError1("类型不能为空");
$data = [
'name' => $Info['name'],
'type' => $Info['type'],
'his_id' => $Info['his_id'],
'updated_at' => date("Y-m-d H:i:s"),
];
$u = false;
if (isset($Info['id']) and $Info['id'] <> 0) {
//更新
$u = DB::table('coupons')->where('id', $Info['id'])->update($data);
DB::table('coupons_combos')->where('coupon_hisid', $Info['his_id'])->delete();
} else {
$cha=DB::table('coupons')->where(['his_id'=> $Info['his_id']])->first();
if(!!$cha) return \Yz::echoError1("已存在id相同的代金券不可重复复添加");
//添加
$u = DB::table('coupons')->insert($data);
DB::table('coupons_combos')->insert([
'coupon_hisid'=>$Info['his_id'],
]);
}
if(isset($Info['combo_ids'])){
foreach ($Info['combo_ids'] as $combo_id) {
DB::table('coupons_combos')->insert([
'coupon_hisid'=>$Info['his_id'],
'combo_id'=>$combo_id,
]);
}
}
if ($u) {
return \Yz::Return(true, "操作完成", []);
} else {
return \Yz::echoError1("操作失败");
}
}
public function GetDetail()
{
$id = request('id');
$info = DB::table('coupons')->where('id', $id)->first();
$combos = DB::table('coupons_combos')->where('coupon_hisid', $info->his_id)->pluck('combo_id')->toArray();
$info->combo_ids = $combos;
return \Yz::Return(true, '查询成功', ['info' => $info]);
}
public function Del()
{
$id = request('id');
$d = DB::table('coupons')->where('id', $id)->update([
'is_del' => 1
]);
if ($d) {
return \Yz::Return(true, "操作完成", []);
} else {
return \Yz::echoError1("操作失败");
}
}
}

@ -93,9 +93,10 @@ Route::group(['middleware' => ['checktoken', 'log'], 'prefix' => 'v1'], function
Route::post('admin/PlanDel', 'App\Http\Controllers\API\Admin\YeWu\PlanController@Del');//
Route::post('admin/PlanBatchUpdatePlanType', 'App\Http\Controllers\API\Admin\YeWu\PlanController@BatchUpdatePlanType');//保存号源详情
Route::post('admin/ComboGetList', 'App\Http\Controllers\API\Admin\YeWu\ComboController@GetList');//获取套餐列表
Route::post('admin/ComboGetList', 'App\Http\Controllers\API\Admin\YeWu\ComboController@GetList');//获取套餐列表
Route::post('admin/ComboGetDetail', 'App\Http\Controllers\API\Admin\YeWu\ComboController@GetDetail');//获取套餐详情
Route::post('admin/ComboSave', 'App\Http\Controllers\API\Admin\YeWu\ComboController@Save');//获取套餐详情保存
Route::post('admin/ComboGetAllList', 'App\Http\Controllers\API\Admin\YeWu\ComboController@GetAllList');//获取全部套餐
Route::post('admin/HospitalSave', 'App\Http\Controllers\API\Admin\YeWu\HospitalController@Save');
Route::post('admin/HospitalGetList', 'App\Http\Controllers\API\Admin\YeWu\HospitalController@GetList');
@ -126,6 +127,11 @@ Route::group(['middleware' => ['checktoken', 'log'], 'prefix' => 'v1'], function
Route::post('admin/YuYueOrderGetDetail', 'App\Http\Controllers\API\Admin\YeWu\YuYueOrderController@GetDetail');//客服订单详情
Route::post('admin/YuYueOrderSave', 'App\Http\Controllers\API\Admin\YeWu\YuYueOrderController@Save');//客服订单保存
Route::post('admin/CouponsGetList', 'App\Http\Controllers\API\Admin\YeWu\CouponsController@GetList');
Route::post('admin/CouponsSave', 'App\Http\Controllers\API\Admin\YeWu\CouponsController@Save');
Route::post('admin/CouponsDel', 'App\Http\Controllers\API\Admin\YeWu\CouponsController@Del');
Route::post('admin/CouponsGetDetail', 'App\Http\Controllers\API\Admin\YeWu\CouponsController@GetDetail');
});

@ -402,3 +402,23 @@ export const AnalysisTypeGetDetail = (data = {}) => {
export const AnalysisTypeSave = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/AnalysisTypeSave`, data: data })
}
//优惠券列表
export const CouponsGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/CouponsGetList`, data: data })
}
//优惠券保存
export const CouponsSave = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/CouponsSave`, data: data })
}
//优惠券删除
export const CouponsDel = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/CouponsDel`, data: data })
}
//优惠券详情
export const CouponsGetDetail = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/CouponsGetDetail`, data: data })
}
//获取全部套餐
export const ComboGetAllList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/ComboGetAllList`, data: data })
}

@ -225,6 +225,13 @@ const router = createRouter({
meta: {
title: '预约订单'
}
},{
path: '/CouponsMngr/Coupons',
name: 'CouponsMngrCoupons',
component: () => import('../views/CouponsMngr/Coupons.vue'),
meta: {
title: '代金券管理'
}
}]
},

@ -0,0 +1,197 @@
<template>
<div>
<div class="head">
<div class="head">
<el-row>
<!-- <el-form-item>
<el-input v-model="searchInfo.name" placeholder="请输入类型名称" style="margin-left: 10px;" />
</el-form-item>
<el-button type="primary" @click="GetList()" style="margin-left: 10px;">查询</el-button> -->
<el-button type="success" @click="Add()" style="margin-left: 10px;">添加</el-button>
</el-row>
</div>
</div>
<el-table :data="tableData" style="width: 100%;" row-key="id" v-loading="loading">
<el-table-column prop="id" label="Id" width="100" v-if="false" />
<el-table-column prop="name" label="名称" />
<el-table-column prop="his_id" label="Id" />
<el-table-column prop="type" label="类型">
<template #default="scope">
<span v-if="scope.row.type==1"></span> <span v-if="scope.row.type==2"></span>
</template>
</el-table-column>
<el-table-column prop="" label="操作" width="150">
<template #default="scope">
<el-button type="primary" @click="Edit(scope.row)" size="small">修改</el-button>
<el-button type="danger" @click="Del(scope.row.id)" size="small">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-dialog v-model="dialogVisible" title="设置" width="1000px">
<div class="chuansuokuang" v-loading="loading">
<el-form :model="Info" label-width="80">
<el-form-item label="名称">
<el-input v-model="Info.name" />
</el-form-item>
<el-form-item label="Id">
<el-input v-model="Info.his_id" />
</el-form-item>
<el-form-item label="类型">
<el-radio-group v-model="Info.type">
<el-radio :label="1">代金券</el-radio>
<el-radio :label="2">折扣券</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="绑定" class="eltransfer">
<el-transfer filterable v-model="Info.combo_ids" :data="AllCombos" />
</el-form-item>
</el-form>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="Save()">
确定
</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script setup>
import {
ref,
onMounted
} from 'vue';
import {
ElMessage,
ElMessageBox
} from 'element-plus'
import {
CouponsGetList,
CouponsSave,
CouponsDel,
CouponsGetDetail,
ComboGetAllList
} from '@/api/api.js'
let loading = ref(false)
let searchInfo = ref({})
let tableData = ref([])
let currentPage = ref(1) //
let pageSize = ref(15) //
let total = 0 //
const PageSizeChange = (e) => { //
pageSize.value = e
GetList()
}
const PageCurrentChange = (e) => { //
currentPage.value = e
GetList()
}
const GetList = () => {
loading.value = true
CouponsGetList({
searchInfo: searchInfo.value,
page: currentPage.value,
pageSize: pageSize.value
}).then(res => {
loading.value = false
if (res.status) {
tableData.value = res.data.list
total = res.data.count
} else {
ElMessage.error(res.msg)
}
})
}
let Info = ref({});
let dialogVisible = ref(false);
const Add = () => {
Info.value = {}
Info.value.id = 0
Info.value.status = 1
dialogVisible.value = true
}
const Save = () => {
loading.value = true
CouponsSave({
Info: Info.value
}).then(res => {
loading.value = false
if (res.status) {
dialogVisible.value = false
GetList()
} else {
ElMessage.error(res.msg)
}
})
}
const Edit = (row) => {
GetDetailFunc(row.id)
dialogVisible.value = true
Info.value.name = row.name
Info.value.id = row.id
}
//
const GetDetailFunc = (id) => {
loading.value = true
CouponsGetDetail({
id: id
}).then(res => {
loading.value = false
if (res.status) {
Info.value = res.data.info
} else {
ElMessage.error(res.msg)
}
})
}
const Del = (id) => {
loading.value = true
CouponsDel({
id: id
}).then(res => {
loading.value = false
if (res.status) {
GetList()
} else {
ElMessage.error(res.msg)
}
})
}
let AllCombos = ref([]);
const ComboGetAllListFunc = () => {
loading.value = true
AllCombos.value = []
ComboGetAllList().then(res => {
loading.value = false
if (res.status) {
res.data.list.forEach((v, i) => {
AllCombos.value.push({
key: v.combo_id,
label: v.name
})
})
} else {
ElMessage.error(res.msg)
}
})
}
onMounted(() => {
GetList()
ComboGetAllListFunc()
})
</script>
<style scoped>
.head {
margin: 10px auto;
}
.eltransfer>>>.el-transfer-panel {
width: 350px;
}
</style>
Loading…
Cancel
Save