From ed43d8d66d975e0ff913c304d8dd769bdba8e284 Mon Sep 17 00:00:00 2001 From: yanzai Date: Tue, 7 Oct 2025 17:10:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E5=A2=9E=E5=8A=A0=E6=92=A4?= =?UTF-8?q?=E9=94=80=E8=BD=AC=E8=B5=A0=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../API/Admin/ConfigController.php | 2 +- .../API/Admin/YeWu/TransferCodeController.php | 55 +++++++++++++++++++ Laravel/app/Services/ConfigService.php | 3 + Laravel/routes/api.php | 1 + admin/src/api/api.js | 4 ++ admin/src/views/Index.vue | 1 + admin/src/views/OrderMngr/Order.vue | 38 ++++++++++++- 7 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 Laravel/app/Http/Controllers/API/Admin/YeWu/TransferCodeController.php diff --git a/Laravel/app/Http/Controllers/API/Admin/ConfigController.php b/Laravel/app/Http/Controllers/API/Admin/ConfigController.php index a26cd1e..4afbd78 100644 --- a/Laravel/app/Http/Controllers/API/Admin/ConfigController.php +++ b/Laravel/app/Http/Controllers/API/Admin/ConfigController.php @@ -18,7 +18,7 @@ class ConfigController extends Controller $is_admin=true; } $configs = new ConfigService(); - return $configs->GetConfigInfo(['站点名称','站点图片'],$is_admin); + return $configs->GetConfigInfo(['站点名称','站点图片','撤销转赠权限'],$is_admin); } public function SaveConfig(){ diff --git a/Laravel/app/Http/Controllers/API/Admin/YeWu/TransferCodeController.php b/Laravel/app/Http/Controllers/API/Admin/YeWu/TransferCodeController.php new file mode 100644 index 0000000..f1d1e24 --- /dev/null +++ b/Laravel/app/Http/Controllers/API/Admin/YeWu/TransferCodeController.php @@ -0,0 +1,55 @@ +get('userid');//中间件产生的参数 + $group=$request->get('role'); + $code_id = request('code_id'); + $order_id = request('order_id'); + $config=DB::table('configs')->where(['label'=>'撤销转赠权限'])->first(); + $orderInfo=DB::table('orders')->where(['id'=>$order_id])->first(); + if(!!$config){ + $config->value= explode(',', $config->value); + if(in_array($group, $config->value)){ + $code=DB::table('transfer_code')->where(['id'=>$code_id,'is_del'=>0,'status'=>1])->first(); + if(!!$code){ + if($code->link_order_id<>$order_id){ + return \Yz::echoError1("订单id与转赠码关联不匹配"); + } + DB::beginTransaction(); + try { + $u_code=DB::table('transfer_code')->where(['id'=>$code_id])->update([ + 'is_del'=>1, + ]); + $u_order=DB::table('orders')->where(['id'=>$order_id])->update([ + 'status'=>2, + 'transfer_type'=>null, + 'transfer_link'=>null, + ]); + if($u_code&&$u_order){ + DB::commit(); + return \Yz::Return(true,'操作成功',['orderid'=>$order_id]); + }else{ + DB::rollBack(); + } + }catch ( \Exception $e ) { + DB::rollBack(); + } + + + }else{ + return \Yz::echoError1("未找到有效转赠码"); + } + + }else{ + return \Yz::echoError1("暂无权限"); + } + } + } +} diff --git a/Laravel/app/Services/ConfigService.php b/Laravel/app/Services/ConfigService.php index 53b1f97..d657279 100644 --- a/Laravel/app/Services/ConfigService.php +++ b/Laravel/app/Services/ConfigService.php @@ -18,6 +18,9 @@ class ConfigService if(count($q)>0) { $result = []; foreach ($q as $k => $v) { + if($v->label=='撤销转赠权限'){ + $v->value= explode(',', $v->value); + } $result[$v->label] = $v->value; } return \Yz::Return(true, '查询成功', $result); diff --git a/Laravel/routes/api.php b/Laravel/routes/api.php index 7653062..079e525 100644 --- a/Laravel/routes/api.php +++ b/Laravel/routes/api.php @@ -141,6 +141,7 @@ Route::group(['middleware' => ['checktoken', 'log'], 'prefix' => 'v1'], function Route::post('admin/QuestionExport', 'App\Http\Controllers\API\Admin\YeWu\QuestionLogController@Export');//导出回答 Route::post('admin/GetWorkUnitEnableList', 'App\Http\Controllers\API\Admin\YeWu\WorkUnitController@GetEnableList');//获取单位列表 + Route::post('admin/CancelZhuanZengCode', 'App\Http\Controllers\API\Admin\YeWu\TransferCodeController@CancelZhuanZeng');//取消转赠 diff --git a/admin/src/api/api.js b/admin/src/api/api.js index d07918a..ee582b2 100644 --- a/admin/src/api/api.js +++ b/admin/src/api/api.js @@ -459,4 +459,8 @@ export const ComboSaveOrder = (data = {}) => { //获取单位可用列表 export const GetWorkUnitEnableList = (data = {}) => { return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/GetWorkUnitEnableList`, data: data }) +} +//取消转赠码 +export const CancelZhuanZengCode = (data = {}) => { + return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/CancelZhuanZengCode`, data: data }) } \ No newline at end of file diff --git a/admin/src/views/Index.vue b/admin/src/views/Index.vue index b515ab5..435f3ad 100644 --- a/admin/src/views/Index.vue +++ b/admin/src/views/Index.vue @@ -202,6 +202,7 @@ watch(()=>router.currentRoute.value,(newVal,oldVal)=>{ if(res.status){ configInfo.value=res.data configInfo.value.站点图片=import.meta.env.VITE_APP_FILE+configInfo.value.站点图片 + sessionStorage.setItem('ConfigInfo',JSON.stringify(configInfo.value)) } }) } diff --git a/admin/src/views/OrderMngr/Order.vue b/admin/src/views/OrderMngr/Order.vue index 448e300..5aae630 100644 --- a/admin/src/views/OrderMngr/Order.vue +++ b/admin/src/views/OrderMngr/Order.vue @@ -105,7 +105,10 @@ 已完成 已退款 - 已转赠 + + 已转赠 + 撤销转赠 +
仅退款 取消预约、退款 @@ -156,7 +159,8 @@ import {ElMessage, ElMessageBox} from 'element-plus' import { OrderGetList, OrderGetDetail, - OrderSave,OrderRefund + OrderSave,OrderRefund, + CancelZhuanZengCode } from '@/api/api.js' import { Edit @@ -168,6 +172,8 @@ import {ElMessage, ElMessageBox} from 'element-plus' let currentPage = ref(1) //当前页码 let pageSize = ref(15) //每页数量 let total = 0 //总数量 + let SessionConfigInfo=ref({}) + let SessionUserInfo=ref({}) const PageSizeChange = (e) => { // 修改每页数量 pageSize.value = e GetList() @@ -197,6 +203,7 @@ import {ElMessage, ElMessageBox} from 'element-plus' let Info = ref(null); const EditFunc = (row) => { dialogVisible.value = true + console.log('------------',SessionConfigInfo.value,SessionUserInfo.value); GetDetailFunc(row.id) } const GetDetailFunc = (id) => { @@ -250,9 +257,36 @@ import {ElMessage, ElMessageBox} from 'element-plus' }).catch(() => { }) + } + const CheXiaoZhuanZeng=()=>{ + ElMessageBox.confirm( + '确定撤销吗?', + '提示', + { + confirmButtonText: '确认', + cancelButtonText: '取消', + type: 'warning', + } + ).then(() => { + loading.value = true + CancelZhuanZengCode({ + order_id: Info.value.id, + code_id: Info.value.transfer_link, + }).then(res => { + loading.value = false + if (res.status) { + GetDetailFunc(Info.value.id) + } else { + ElMessage.error(res.msg) + } + }) + }).catch(() => { + }) } onMounted(() => { GetList() + SessionConfigInfo.value=JSON.parse(sessionStorage.getItem('ConfigInfo')) + SessionUserInfo.value=JSON.parse(sessionStorage.getItem('LoginUserInfo')) })