diff --git a/Laravel/app/Http/Controllers/API/Admin/YeWu/ComboController.php b/Laravel/app/Http/Controllers/API/Admin/YeWu/ComboController.php
new file mode 100644
index 0000000..6fa3308
--- /dev/null
+++ b/Laravel/app/Http/Controllers/API/Admin/YeWu/ComboController.php
@@ -0,0 +1,150 @@
+"0","价格上限"=>"999999","性别"=>null,"妇检"=>false
+ ];
+ $peis=new PEISApiController();
+ $info= $peis::Post('套餐查询',$hospital_id,$data,false);
+ $successCount=0;//成功的数量
+ if(count($info['data'])>0){
+ $combos=$info['data'];
+ //查询医院下所有缓存的套餐
+ $db_combo_all=DB::table('combos')->where(['hospital_id'=>$hospital_id])->get();
+ foreach($db_combo_all as $key=>$db_combo){
+ $cunzai=false;
+ foreach ($combos as $c_key=>$combo){
+ if($db_combo->combo_id==$combo['Id']){
+ $cunzai=true;
+ }
+ }
+ if(!$cunzai){
+ DB::table('combos')->where(['id'=>$db_combo->id])->update([
+ 'status'=>0
+ ]);
+ }
+ }
+ foreach ($combos as $c_key=>$combo){
+
+ $item=[];
+ $comboDetail= $peis::Post('套餐详情查询',$hospital_id,['套餐Id'=>$combo['Id']],false);
+ if($comboDetail['code']!=0) return \Yz::echoError1("套餐详情查询失败");
+
+ $comboDetail_list=$comboDetail['data'][0]['包含项目'];
+ foreach ($comboDetail_list as $key=>$v){
+ $item[]=[
+ 'id'=>$v['Id'],
+ 'name'=>$v['名称'],
+ 'desc'=>$v['简介'],
+ ];
+ }
+ $item=json_encode($item,JSON_UNESCAPED_UNICODE);
+ $sex=null;
+ if(isset($combo['性别限制'])){
+ $sex_array=['全部'=>0,'男'=>1,'女'=>2];
+ $sex=$sex_array[$combo['性别限制']]>=0?$sex_array[$combo['性别限制']]:null;
+ }
+
+ $db_combo=DB::table('combos')->where(['hospital_id'=>$hospital_id,'combo_id'=>$combo['Id']])->first();
+ $comboData=[
+ 'hospital_id'=>$hospital_id,
+ 'combo_id'=>$combo['Id'],
+ 'sex'=>$sex,
+ 'name'=>$combo['名称'],
+ 'original_price'=>$combo['原价'],
+ 'price'=>$combo['价格'],
+ 'items'=>$item,
+ 'status'=>1,
+ 'updated_at'=>date('Y-m-d H:i:s'),
+ ];
+ if(!!$db_combo){
+ //如果存在套餐
+ $u=DB::table('combos')->where(['hospital_id'=>$hospital_id,'combo_id'=>$combo['Id']])->update($comboData);
+ }else{
+ //如果不存在套餐
+ $comboData['tags']=json_encode([]);
+ $u= DB::table('combos')->insert($comboData);
+ }
+ if($u){
+ $successCount++;
+ }else{
+ return \Yz::echoError1('更新失败');
+ }
+
+ }
+ $hospital=DB::table('hospitals')->where(['id'=>$hospital_id])->first();
+ if(!!$hospital->frequency){
+ $date = new DateTime();
+ $date->modify('+'.$hospital->frequency.' minutes');
+ $formatted_time = $date->format('Y-m-d H:i:s');
+ DB::table("hospitals")->where(['id'=>$hospital_id])->update([
+ 'next_time'=>$formatted_time
+ ]);
+ }
+ return \Yz::Return(true,'操作完成',['success_count'=>$successCount,'combos_count'=>count($combos)]);
+
+ }else{
+ return \Yz::echoError1('未查询到套餐');
+ }
+ }
+ public function GetList()
+ {
+ $page = request('page');
+ $pageSize = request('pageSize');
+ $searchInfo = request('searchInfo');
+ $list=DB::table('combos')
+ ->select('combos.*','hospitals.name as hospital_name')
+ ->leftJoin('hospitals','hospitals.id','=','combos.hospital_id');
+ if(isset($searchInfo['name'])){
+
+ $list = $list->where('combos.name', 'like', '%' . $searchInfo['name'] . '%');
+ }
+ $count=$list->count();
+ $list=$list
+ ->skip(($page-1)*$pageSize) // 跳过前9999条记录
+ ->take($pageSize)->get();
+
+ return \Yz::Return(true,"查询完成",['list'=>$list,'count'=>$count]);
+ }
+ public function GetDetail()
+ {
+ $id = request('id');
+ $query=DB::table('combos')->where(['id'=>$id])->first();
+ if(!!$query){
+ $query->tags=implode(", ", json_decode($query->tags,true));
+ $query->items=json_decode($query->items);
+ return \Yz::Return(true,"查询完成",$query);
+ }else{
+ return \Yz::echoError1("获取详情失败");
+ }
+ }
+ public function Save()
+ {
+ $Info = request('Info');
+ $u=DB::table('combos')->where(['id'=>$Info['id']])->update([
+ 'tags'=>json_encode($Info['tags'],JSON_UNESCAPED_UNICODE),
+ 'cover'=>$Info['cover'],
+ 'intro'=>$Info['intro'],
+ 'sub_intro'=>$Info['sub_intro'],
+ 'desc'=>$Info['desc']
+ ]);
+ if($u){
+ return \Yz::Return(true,"更新完成",[]);
+ }else{
+ return \Yz::echoError1("没有数据更新");
+ }
+ }
+}
diff --git a/Laravel/app/Http/Controllers/API/Admin/YeWu/HospitalController.php b/Laravel/app/Http/Controllers/API/Admin/YeWu/HospitalController.php
new file mode 100644
index 0000000..7fa0b3a
--- /dev/null
+++ b/Laravel/app/Http/Controllers/API/Admin/YeWu/HospitalController.php
@@ -0,0 +1,77 @@
+$Info['name'],
+ 'code'=>$Info['code'],
+ 'address'=>$Info['address'],
+ 'longitude'=>$Info['longitude'],
+ 'latitude'=>$Info['latitude'],
+ 'logo'=>$Info['logo'],
+ 'tel'=>$Info['tel'],
+// 'frequency'=>$Info['frequency'],
+// 'api_list'=>isset($Info['api_list'])? json_encode($Info['api_list']):null,
+ 'status'=>$Info['status'],
+ ];
+ if(isset($Info['id']) and $Info['id']!=0){
+ $ex=DB::table('hospitals')->where(['id'=>$Info['id']])->update($data);
+ }else{
+ $ex=DB::table('hospitals')->insert($data);
+ }
+ if($ex){
+ return \Yz::Return(true,"保存成功",[]);
+ }else{
+ return \Yz::echoError1("保存失败");
+ }
+ }
+ public function GetList()
+ {
+ $page = request('page');
+ $pageSize = request('pageSize');
+ $searchInfo = request('searchInfo');
+ $list =DB::table('hospitals')->where(['is_del'=>0]);
+ $count=$list->count();
+ $list=$list
+ ->skip(($page-1)*$pageSize) // 跳过前9999条记录
+ ->take($pageSize)->get();
+ return \Yz::Return(true,"查询成功",['list'=>$list,'count'=>$count]);
+ }
+ //获取医院基本信息详情
+ public function GetBaseInfoDetail()
+ {
+ $id = request('id');
+ $info=DB::table('hospitals')
+ ->where(['id'=>$id,'is_del'=>0])->first();
+ if(!!$info){
+ $info->api_list= $info->api_list?implode(',',json_decode( $info->api_list)):'';
+ return \Yz::Return(true,'查询成功',$info);
+ }else{
+ return \Yz::echoError1("查询失败");
+ }
+ }
+ public function SaveCacheInfo()
+ {
+ $Info =request('Info');
+ $ex=DB::table('hospitals')->where(['id'=>$Info['id']])->update([
+ 'frequency'=>$Info['frequency'],
+ 'api_list'=>json_encode($Info['api_list'],JSON_UNESCAPED_UNICODE)
+ ]);
+ if($ex){
+ return \Yz::Return(true,"保存成功",[]);
+ }else{
+ return \Yz::echoError1("保存失败");
+ }
+
+ }
+ //获取
+}
diff --git a/Laravel/app/Http/Controllers/API/Admin/YeWu/PEISApiController.php b/Laravel/app/Http/Controllers/API/Admin/YeWu/PEISApiController.php
new file mode 100644
index 0000000..0190840
--- /dev/null
+++ b/Laravel/app/Http/Controllers/API/Admin/YeWu/PEISApiController.php
@@ -0,0 +1,56 @@
+where(['id'=>$hospital_id,'status'=>1,'is_del'=>0])->first();
+ if (!$hospital) return \Yz::echoError1('医院不存在或不可用');
+ $code = $hospital->code;
+ $url = self::Api($url_code, $code);
+// self::RequestLog($url, $data, $code, $url_code);
+ $data_string = json_encode($data, JSON_UNESCAPED_UNICODE);
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_URL, $url);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($ch, CURLOPT_HTTPHEADER, [
+ 'Content-Type: application/json; charset=utf-8',
+ 'Content-Length: ' . strlen($data_string)
+ ]);
+ curl_setopt($ch, CURLOPT_POST, 1);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
+ $res_string = curl_exec($ch);
+ curl_close($ch);
+
+ if (!json_decode($res_string, true)) {
+ return \Yz::Return(false,'获取失败', [
+ 'url' => $url,
+ 'data' => $data,
+ 'res' => $res_string
+ ]);
+ }
+ $res = json_decode($res_string, true);
+
+
+ return [
+ 'code' => $res['ResultCode'],
+ 'message' => $res['ResultContent'],
+ 'data' => $res['Records']
+ ];
+ }
+}
diff --git a/Laravel/app/Http/Controllers/API/Admin/YeWu/PlanController.php b/Laravel/app/Http/Controllers/API/Admin/YeWu/PlanController.php
index 6f2b12b..14ddfe9 100644
--- a/Laravel/app/Http/Controllers/API/Admin/YeWu/PlanController.php
+++ b/Laravel/app/Http/Controllers/API/Admin/YeWu/PlanController.php
@@ -136,4 +136,26 @@ class PlanController extends Controller
return \Yz::echoError1('查询失败');
}
}
+ //更新保存
+ public function Save()
+ {
+ $info =request('info');
+ if(isset($info['id'])){
+ $info['checkup_type_id']= isset($Info['checkup_type_id']) ? json_encode($Info['checkup_type_id']) : null;
+ $u=DB::table('plans')->where(['id'=>$info['id']])->update([
+ 'is_vip'=>$info['is_vip'],
+ 'use_type'=>$info['use_type'],
+ 'sex'=>$info['sex'],
+ 'checkup_type_id'=>$info['checkup_type_id'],
+ 'amount_limit1'=>$info['amount_limit1'],
+ 'amount_limit2'=>$info['amount_limit2'],
+ 'status'=>$info['status'],
+ ]);
+ if($u){
+ return \Yz::Return(true,'保存成功',[]);
+ }else{
+ return \Yz::echoError1('操作失败');
+ }
+ }
+ }
}
diff --git a/Laravel/app/Services/Admin/MenuService.php b/Laravel/app/Services/Admin/MenuService.php
index 8810803..fdc72e8 100644
--- a/Laravel/app/Services/Admin/MenuService.php
+++ b/Laravel/app/Services/Admin/MenuService.php
@@ -6,13 +6,12 @@ class MenuService
public function GetBaseMenuList($arr){
$result=array();
if($arr['userid']=='search'){
- $menulist=DB::select("select b.id,b.pid,b.order,b.icon, b.name,b.url from group_menu as a left join menu as b on a.menu_id=b.id where a.group_id =? and b.status=1",[$arr['group']]);
- $result['list']=$menulist;
+ $menulist=DB::select("select b.id,b.pid,b.order,b.icon, b.name,b.url from group_menu as a left join menu as b on a.menu_id=b.id where a.group_id =? and b.status=1 order by `order` ",[$arr['group']]); $result['list']=$menulist;
$result['status']='ok';
}else{
$query=DB::select("select `group` from users where id =? ",[$arr['userid']]);
if($query[0]->group==$arr['group']){
- $menulist=DB::select("select b.id,b.pid,b.order,b.icon, b.name,b.url from group_menu as a left join menu as b on a.menu_id=b.id where a.group_id =? and b.status=1 and b.is_menu=1",[$arr['group']]);
+ $menulist=DB::select("select b.id,b.pid,b.order,b.icon, b.name,b.url from group_menu as a left join menu as b on a.menu_id=b.id where a.group_id =? and b.status=1 order by `order`",[$arr['group']]);
$result['list']=$menulist;
$result['status']='ok';
diff --git a/Laravel/routes/api.php b/Laravel/routes/api.php
index f079c64..2b08934 100644
--- a/Laravel/routes/api.php
+++ b/Laravel/routes/api.php
@@ -63,10 +63,20 @@ Route::group(['middleware'=>['checktoken','log'],'prefix'=>'v1'],function () {
Route::post('admin/CreatePlan','App\Http\Controllers\API\Admin\YeWu\PlanController@CreatePlan');//生成号源
Route::post('admin/PlanGetList','App\Http\Controllers\API\Admin\YeWu\PlanController@GetList');//号源列表
Route::post('admin/PlanGetDetail','App\Http\Controllers\API\Admin\YeWu\PlanController@GetDetail');//号源详情
+ Route::post('admin/PlanSave','App\Http\Controllers\API\Admin\YeWu\PlanController@Save');//保存号源详情
+ 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/HospitalSave','App\Http\Controllers\API\Admin\YeWu\HospitalController@Save');
+ Route::post('admin/HospitalGetList','App\Http\Controllers\API\Admin\YeWu\HospitalController@GetList');
+ Route::post('admin/GetBaseInfoDetail','App\Http\Controllers\API\Admin\YeWu\HospitalController@GetBaseInfoDetail');
+ Route::post('admin/SaveCacheInfo','App\Http\Controllers\API\Admin\YeWu\HospitalController@SaveCacheInfo');
});
+Route::post('admin/UpdateCombo','App\Http\Controllers\API\Admin\YeWu\ComboController@UpdateCombo')->middleware('log');
Route::group(['middleware'=>['log'],'prefix'=>'v1'],function () { //路由分组
diff --git a/admin/.env.development b/admin/.env.development
index 81d4aaa..6501e21 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -1,3 +1,3 @@
ENV = 'development'
VITE_APP_API = '/api/'
-VITE_APP_FILE = 'http://tongyonghoutai'
\ No newline at end of file
+VITE_APP_FILE = 'https://api.hainan2024.sa0.online'
\ No newline at end of file
diff --git a/admin/package-lock.json b/admin/package-lock.json
index c2d3307..d9418ee 100644
--- a/admin/package-lock.json
+++ b/admin/package-lock.json
@@ -10,6 +10,8 @@
"dependencies": {
"@element-plus/icons-vue": "^2.1.0",
"@vueuse/core": "^10.4.1",
+ "@vueuse/shared": "^10.11.0",
+ "@wangeditor/editor-for-vue": "^5.1.12",
"axios": "^1.5.1",
"echarts": "^5.4.3",
"element-plus": "^2.3.14",
@@ -48,6 +50,18 @@
"node": ">=6.0.0"
}
},
+ "node_modules/@babel/runtime": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz",
+ "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==",
+ "peer": true,
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@ctrl/tinycolor": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
@@ -603,6 +617,18 @@
"integrity": "sha512-EF3948ckf3f5uPgYbQ6GhyA56Dmv8yg0+ir+BroRjwdxyZJsekhZzawOecC2rOTPCz173t7ZcR1HHZu0dZgOCw==",
"dev": true
},
+ "node_modules/@transloadit/prettier-bytes": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz",
+ "integrity": "sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==",
+ "peer": true
+ },
+ "node_modules/@types/event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@types/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ==",
+ "peer": true
+ },
"node_modules/@types/lodash": {
"version": "4.14.199",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz",
@@ -621,6 +647,61 @@
"resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz",
"integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA=="
},
+ "node_modules/@uppy/companion-client": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-2.2.2.tgz",
+ "integrity": "sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==",
+ "peer": true,
+ "dependencies": {
+ "@uppy/utils": "^4.1.2",
+ "namespace-emitter": "^2.0.1"
+ }
+ },
+ "node_modules/@uppy/core": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/@uppy/core/-/core-2.3.4.tgz",
+ "integrity": "sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==",
+ "peer": true,
+ "dependencies": {
+ "@transloadit/prettier-bytes": "0.0.7",
+ "@uppy/store-default": "^2.1.1",
+ "@uppy/utils": "^4.1.3",
+ "lodash.throttle": "^4.1.1",
+ "mime-match": "^1.0.2",
+ "namespace-emitter": "^2.0.1",
+ "nanoid": "^3.1.25",
+ "preact": "^10.5.13"
+ }
+ },
+ "node_modules/@uppy/store-default": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@uppy/store-default/-/store-default-2.1.1.tgz",
+ "integrity": "sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==",
+ "peer": true
+ },
+ "node_modules/@uppy/utils": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-4.1.3.tgz",
+ "integrity": "sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==",
+ "peer": true,
+ "dependencies": {
+ "lodash.throttle": "^4.1.1"
+ }
+ },
+ "node_modules/@uppy/xhr-upload": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz",
+ "integrity": "sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==",
+ "peer": true,
+ "dependencies": {
+ "@uppy/companion-client": "^2.2.2",
+ "@uppy/utils": "^4.1.2",
+ "nanoid": "^3.1.25"
+ },
+ "peerDependencies": {
+ "@uppy/core": "^2.3.3"
+ }
+ },
"node_modules/@vitejs/plugin-vue": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz",
@@ -769,6 +850,17 @@
"url": "https://github.com/sponsors/antfu"
}
},
+ "node_modules/@vueuse/core/node_modules/@vueuse/shared": {
+ "version": "10.4.1",
+ "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.4.1.tgz",
+ "integrity": "sha512-vz5hbAM4qA0lDKmcr2y3pPdU+2EVw/yzfRsBdu+6+USGa4PxqSQRYIUC9/NcT06y+ZgaTsyURw2I9qOFaaXHAg==",
+ "dependencies": {
+ "vue-demi": ">=0.14.5"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
"node_modules/@vueuse/core/node_modules/vue-demi": {
"version": "0.14.6",
"resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
@@ -803,20 +895,20 @@
}
},
"node_modules/@vueuse/shared": {
- "version": "10.4.1",
- "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.4.1.tgz",
- "integrity": "sha512-vz5hbAM4qA0lDKmcr2y3pPdU+2EVw/yzfRsBdu+6+USGa4PxqSQRYIUC9/NcT06y+ZgaTsyURw2I9qOFaaXHAg==",
+ "version": "10.11.1",
+ "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.11.1.tgz",
+ "integrity": "sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==",
"dependencies": {
- "vue-demi": ">=0.14.5"
+ "vue-demi": ">=0.14.8"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/@vueuse/shared/node_modules/vue-demi": {
- "version": "0.14.6",
- "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
- "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+ "version": "0.14.10",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz",
+ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
@@ -838,6 +930,164 @@
}
}
},
+ "node_modules/@wangeditor/basic-modules": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz",
+ "integrity": "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==",
+ "peer": true,
+ "dependencies": {
+ "is-url": "^1.2.4"
+ },
+ "peerDependencies": {
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "lodash.throttle": "^4.1.1",
+ "nanoid": "^3.2.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/code-highlight": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz",
+ "integrity": "sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==",
+ "peer": true,
+ "dependencies": {
+ "prismjs": "^1.23.0"
+ },
+ "peerDependencies": {
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/core": {
+ "version": "1.1.19",
+ "resolved": "https://registry.npmjs.org/@wangeditor/core/-/core-1.1.19.tgz",
+ "integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==",
+ "peer": true,
+ "dependencies": {
+ "@types/event-emitter": "^0.3.3",
+ "event-emitter": "^0.3.5",
+ "html-void-elements": "^2.0.0",
+ "i18next": "^20.4.0",
+ "scroll-into-view-if-needed": "^2.2.28",
+ "slate-history": "^0.66.0"
+ },
+ "peerDependencies": {
+ "@uppy/core": "^2.1.1",
+ "@uppy/xhr-upload": "^2.0.3",
+ "dom7": "^3.0.0",
+ "is-hotkey": "^0.2.0",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.debounce": "^4.0.8",
+ "lodash.foreach": "^4.5.0",
+ "lodash.isequal": "^4.5.0",
+ "lodash.throttle": "^4.1.1",
+ "lodash.toarray": "^4.4.0",
+ "nanoid": "^3.2.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/editor": {
+ "version": "5.1.23",
+ "resolved": "https://registry.npmjs.org/@wangeditor/editor/-/editor-5.1.23.tgz",
+ "integrity": "sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==",
+ "peer": true,
+ "dependencies": {
+ "@uppy/core": "^2.1.1",
+ "@uppy/xhr-upload": "^2.0.3",
+ "@wangeditor/basic-modules": "^1.1.7",
+ "@wangeditor/code-highlight": "^1.0.3",
+ "@wangeditor/core": "^1.1.19",
+ "@wangeditor/list-module": "^1.0.5",
+ "@wangeditor/table-module": "^1.1.4",
+ "@wangeditor/upload-image-module": "^1.0.2",
+ "@wangeditor/video-module": "^1.1.4",
+ "dom7": "^3.0.0",
+ "is-hotkey": "^0.2.0",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.debounce": "^4.0.8",
+ "lodash.foreach": "^4.5.0",
+ "lodash.isequal": "^4.5.0",
+ "lodash.throttle": "^4.1.1",
+ "lodash.toarray": "^4.4.0",
+ "nanoid": "^3.2.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/editor-for-vue": {
+ "version": "5.1.12",
+ "resolved": "https://registry.npmjs.org/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz",
+ "integrity": "sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==",
+ "peerDependencies": {
+ "@wangeditor/editor": ">=5.1.0",
+ "vue": "^3.0.5"
+ }
+ },
+ "node_modules/@wangeditor/list-module": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@wangeditor/list-module/-/list-module-1.0.5.tgz",
+ "integrity": "sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==",
+ "peer": true,
+ "peerDependencies": {
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/table-module": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@wangeditor/table-module/-/table-module-1.1.4.tgz",
+ "integrity": "sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==",
+ "peer": true,
+ "peerDependencies": {
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "lodash.isequal": "^4.5.0",
+ "lodash.throttle": "^4.1.1",
+ "nanoid": "^3.2.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/upload-image-module": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz",
+ "integrity": "sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==",
+ "peer": true,
+ "peerDependencies": {
+ "@uppy/core": "^2.0.3",
+ "@uppy/xhr-upload": "^2.0.3",
+ "@wangeditor/basic-modules": "1.x",
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "lodash.foreach": "^4.5.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/video-module": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@wangeditor/video-module/-/video-module-1.1.4.tgz",
+ "integrity": "sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==",
+ "peer": true,
+ "peerDependencies": {
+ "@uppy/core": "^2.1.4",
+ "@uppy/xhr-upload": "^2.0.7",
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "nanoid": "^3.2.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
"node_modules/acorn": {
"version": "8.10.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
@@ -1063,6 +1313,12 @@
"node": ">= 0.8"
}
},
+ "node_modules/compute-scroll-into-view": {
+ "version": "1.0.20",
+ "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
+ "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==",
+ "peer": true
+ },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -1100,6 +1356,19 @@
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
"integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
},
+ "node_modules/d": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
+ "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
+ "peer": true,
+ "dependencies": {
+ "es5-ext": "^0.10.64",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
"node_modules/dayjs": {
"version": "1.11.10",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
@@ -1207,6 +1476,15 @@
"node": ">=6.0.0"
}
},
+ "node_modules/dom7": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/dom7/-/dom7-3.0.0.tgz",
+ "integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==",
+ "peer": true,
+ "dependencies": {
+ "ssr-window": "^3.0.0-alpha.1"
+ }
+ },
"node_modules/echarts": {
"version": "5.4.3",
"resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.3.tgz",
@@ -1344,6 +1622,46 @@
"resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz",
"integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
},
+ "node_modules/es5-ext": {
+ "version": "0.10.64",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
+ "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
+ "hasInstallScript": true,
+ "peer": true,
+ "dependencies": {
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.3",
+ "esniff": "^2.0.1",
+ "next-tick": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
+ "peer": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "^0.10.35",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "node_modules/es6-symbol": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
+ "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
+ "peer": true,
+ "dependencies": {
+ "d": "^1.0.2",
+ "ext": "^1.7.0"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
"node_modules/esbuild": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
@@ -1542,6 +1860,21 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/esniff": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
+ "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
+ "peer": true,
+ "dependencies": {
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.62",
+ "event-emitter": "^0.3.5",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/espree": {
"version": "9.6.1",
"resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
@@ -1606,6 +1939,16 @@
"node": ">=0.10.0"
}
},
+ "node_modules/event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+ "peer": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ },
"node_modules/execa": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz",
@@ -1629,6 +1972,15 @@
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
+ "node_modules/ext": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
+ "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
+ "peer": true,
+ "dependencies": {
+ "type": "^2.7.2"
+ }
+ },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -1884,6 +2236,16 @@
"node": ">=8"
}
},
+ "node_modules/html-void-elements": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz",
+ "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==",
+ "peer": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/human-signals": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
@@ -1893,6 +2255,15 @@
"node": ">=14.18.0"
}
},
+ "node_modules/i18next": {
+ "version": "20.6.1",
+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz",
+ "integrity": "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==",
+ "peer": true,
+ "dependencies": {
+ "@babel/runtime": "^7.12.0"
+ }
+ },
"node_modules/ignore": {
"version": "5.2.4",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
@@ -1902,6 +2273,16 @@
"node": ">= 4"
}
},
+ "node_modules/immer": {
+ "version": "9.0.21",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
+ "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==",
+ "peer": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/immer"
+ }
+ },
"node_modules/import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -1987,6 +2368,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-hotkey": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.2.0.tgz",
+ "integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==",
+ "peer": true
+ },
"node_modules/is-inside-container": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
@@ -2023,6 +2410,15 @@
"node": ">=8"
}
},
+ "node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/is-stream": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
@@ -2035,6 +2431,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-url": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
+ "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
+ "peer": true
+ },
"node_modules/is-wsl": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
@@ -2155,12 +2557,54 @@
"lodash-es": "*"
}
},
+ "node_modules/lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
+ "peer": true
+ },
+ "node_modules/lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
+ "peer": true
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "peer": true
+ },
+ "node_modules/lodash.foreach": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
+ "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==",
+ "peer": true
+ },
+ "node_modules/lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
+ "peer": true
+ },
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
+ "node_modules/lodash.throttle": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+ "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==",
+ "peer": true
+ },
+ "node_modules/lodash.toarray": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
+ "integrity": "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==",
+ "peer": true
+ },
"node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -2225,6 +2669,15 @@
"node": ">= 0.6"
}
},
+ "node_modules/mime-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mime-match/-/mime-match-1.0.2.tgz",
+ "integrity": "sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==",
+ "peer": true,
+ "dependencies": {
+ "wildcard": "^1.1.0"
+ }
+ },
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
@@ -2266,6 +2719,12 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
+ "node_modules/namespace-emitter": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/namespace-emitter/-/namespace-emitter-2.0.1.tgz",
+ "integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==",
+ "peer": true
+ },
"node_modules/nanoid": {
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
@@ -2289,6 +2748,12 @@
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true
},
+ "node_modules/next-tick": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
+ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
+ "peer": true
+ },
"node_modules/normalize-wheel-es": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
@@ -2583,6 +3048,16 @@
"node": ">=4"
}
},
+ "node_modules/preact": {
+ "version": "10.23.2",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.23.2.tgz",
+ "integrity": "sha512-kKYfePf9rzKnxOAKDpsWhg/ysrHPqT+yQ7UW4JjdnqjFIeNUnNcEJvhuA8fDenxAGWzUqtd51DfVg7xp/8T9NA==",
+ "peer": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/preact"
+ }
+ },
"node_modules/prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -2619,6 +3094,15 @@
"node": ">=6.0.0"
}
},
+ "node_modules/prismjs": {
+ "version": "1.29.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
+ "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
@@ -2670,6 +3154,12 @@
}
]
},
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
+ "peer": true
+ },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -2860,6 +3350,15 @@
"queue-microtask": "^1.2.2"
}
},
+ "node_modules/scroll-into-view-if-needed": {
+ "version": "2.2.31",
+ "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
+ "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
+ "peer": true,
+ "dependencies": {
+ "compute-scroll-into-view": "^1.0.20"
+ }
+ },
"node_modules/semver": {
"version": "7.5.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
@@ -2907,6 +3406,38 @@
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
"dev": true
},
+ "node_modules/slate": {
+ "version": "0.72.8",
+ "resolved": "https://registry.npmjs.org/slate/-/slate-0.72.8.tgz",
+ "integrity": "sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==",
+ "peer": true,
+ "dependencies": {
+ "immer": "^9.0.6",
+ "is-plain-object": "^5.0.0",
+ "tiny-warning": "^1.0.3"
+ }
+ },
+ "node_modules/slate-history": {
+ "version": "0.66.0",
+ "resolved": "https://registry.npmjs.org/slate-history/-/slate-history-0.66.0.tgz",
+ "integrity": "sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==",
+ "peer": true,
+ "dependencies": {
+ "is-plain-object": "^5.0.0"
+ },
+ "peerDependencies": {
+ "slate": ">=0.65.3"
+ }
+ },
+ "node_modules/snabbdom": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/snabbdom/-/snabbdom-3.6.2.tgz",
+ "integrity": "sha512-ig5qOnCDbugFntKi6c7Xlib8bA6xiJVk8O+WdFrV3wxbMqeHO0hXFQC4nAhPVWfZfi8255lcZkNhtIBINCc4+Q==",
+ "peer": true,
+ "engines": {
+ "node": ">=12.17.0"
+ }
+ },
"node_modules/source-map-js": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
@@ -2915,6 +3446,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/ssr-window": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz",
+ "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==",
+ "peer": true
+ },
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -2997,6 +3534,12 @@
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
"dev": true
},
+ "node_modules/tiny-warning": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
+ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
+ "peer": true
+ },
"node_modules/titleize": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz",
@@ -3027,6 +3570,12 @@
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
"dev": true
},
+ "node_modules/type": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
+ "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==",
+ "peer": true
+ },
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -3200,6 +3749,12 @@
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
"integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
},
+ "node_modules/wildcard": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-1.1.2.tgz",
+ "integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==",
+ "peer": true
+ },
"node_modules/wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
diff --git a/admin/package.json b/admin/package.json
index 24e7113..68eea66 100644
--- a/admin/package.json
+++ b/admin/package.json
@@ -13,6 +13,7 @@
"@element-plus/icons-vue": "^2.1.0",
"@vueuse/core": "^10.4.1",
"@vueuse/shared": "^10.11.0",
+ "@wangeditor/editor-for-vue": "^5.1.12",
"axios": "^1.5.1",
"echarts": "^5.4.3",
"element-plus": "^2.3.14",
diff --git a/admin/src/api/api.js b/admin/src/api/api.js
index 79b5930..44edc11 100644
--- a/admin/src/api/api.js
+++ b/admin/src/api/api.js
@@ -163,4 +163,40 @@ export const PlanGetList = (data={}) => {
//号源详情
export const PlanGetDetail = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/PlanGetDetail',data:data})
+}
+//号源详情
+export const PlanSave = (data={}) => {
+ return axios({url:import.meta.env.VITE_APP_API+'v1/admin/PlanSave',data:data})
+}
+//获取套餐列表
+export const ComboGetList = (data={}) => {
+ return axios({url:import.meta.env.VITE_APP_API+'v1/admin/ComboGetList',data:data})
+}
+//获取套餐详情
+export const ComboGetDetail = (data={}) => {
+ return axios({url:import.meta.env.VITE_APP_API+'v1/admin/ComboGetDetail',data:data})
+}
+//保存套餐详情
+export const ComboSave = (data={}) => {
+ return axios({url:import.meta.env.VITE_APP_API+'v1/admin/ComboSave',data:data})
+}
+//保存医院信息
+export const HospitalSave = (data={}) => {
+ return axios({url:import.meta.env.VITE_APP_API+'v1/admin/HospitalSave',data:data})
+}
+//获取医院列表
+export const HospitalGetList = (data={}) => {
+ return axios({url:import.meta.env.VITE_APP_API+'v1/admin/HospitalGetList',data:data})
+}
+//获取医院基本信息
+export const GetBaseInfoDetail = (data={}) => {
+ return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetBaseInfoDetail',data:data})
+}
+//更新套餐
+export const UpdateCombo = (data={}) => {
+ return axios({url:import.meta.env.VITE_APP_API+'admin/UpdateCombo',data:data})
+}
+//更新缓存
+export const SaveCacheInfo = (data={}) => {
+ return axios({url:import.meta.env.VITE_APP_API+'v1/admin/SaveCacheInfo',data:data})
}
\ No newline at end of file
diff --git a/admin/src/router/index.js b/admin/src/router/index.js
index 9814f87..054f9c2 100644
--- a/admin/src/router/index.js
+++ b/admin/src/router/index.js
@@ -127,6 +127,20 @@ const router = createRouter({
meta: {
title: '号源明细'
}
+ },{
+ path: '/comboMngr/combo',
+ name: 'ComboMngrCombo',
+ component: () => import('../views/ComboMngr/Combo.vue'),
+ meta: {
+ title: '套餐管理'
+ }
+ },{
+ path: '/hospitalMngr/hospital',
+ name: 'HospitalMngrHospital',
+ component: () => import('../views/HospitalMngr/Hospital.vue'),
+ meta: {
+ title: '医院管理'
+ }
}]
},
diff --git a/admin/src/views/ComboMngr/Combo.vue b/admin/src/views/ComboMngr/Combo.vue
new file mode 100644
index 0000000..eff0717
--- /dev/null
+++ b/admin/src/views/ComboMngr/Combo.vue
@@ -0,0 +1,233 @@
+
+
+
+