Compare commits

..

No commits in common. 'main' and 'wenjuan' have entirely different histories.

1
.gitignore vendored

@ -16,4 +16,3 @@ yarn-error.log
/.vscode
pnpm-lock.yaml
h5/node_modules
Laravel/composer.lock

@ -10,22 +10,15 @@ class QuestionItemController extends Controller
{
public function item(Request $request)
{
$hospital_id = $request->post('hospital_id');
$items = DB::table('items')
->select(['item_id', 'name', 'pinyin', 'sex'])
->where(['hospital_id' => $hospital_id])
->get();
return \Yz::Return(true, '操作完成', [
'list' => $items
]);
}
public function combo(Request $request)
{
$combos = DB::table('combos')
->select(['combo_id', 'name', 'pinyin'])
->get();
return \Yz::Return(true, '操作完成', [
'list' => $combos
]);
}
public function create(Request $request)
{
@ -97,15 +90,7 @@ class QuestionItemController extends Controller
if (!!$search) {
$db->where('name', $search);
}
$list = $db->orderBy('id', 'desc')->paginate(20);
return \Yz::Return(true, '操作完成', [
'list' => $list
]);
}
public function select(Request $request)
{
$list = DB::table('question_items')->select(['id', 'name'])->get();
$list = $db->paginate(20);
return \Yz::Return(true, '操作完成', [
'list' => $list
]);

@ -1,104 +0,0 @@
<?php
namespace App\Http\Controllers\API\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class QuestionListController extends Controller
{
public function create(Request $request)
{
$name = $request->post('name');
$desc = $request->post('desc');
$icon = $request->post('icon');
$order = $request->post('order');
$question = $request->post('question');
if (!$question) {
return \Yz::echoError('请选择问卷');
}
if (!$name) {
return \Yz::echoError('请填写名称');
}
if (mb_strlen($name) > 20) {
return \Yz::echoError('名称过长');
}
if (mb_strlen($desc) > 200) {
return \Yz::echoError('说明过长');
}
if (!$icon) {
return \Yz::echoError('请上传图片');
}
if (mb_strlen($icon) > 200) {
return \Yz::echoError('图片链接过长');
}
DB::table('question_lists')->insert([
'name' => $name,
'desc' => $desc ?? '',
'icon' => $icon,
'order' => $order ?? 0,
'question' => $question ?? 0,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
]);
return \Yz::Return(true, '操作完成');
}
public function update(Request $request)
{
$id = $request->post('id');
$name = $request->post('name');
$desc = $request->post('desc');
$icon = $request->post('icon');
$order = $request->post('order');
$question = $request->post('question');
if (!$question) {
return \Yz::echoError('请选择问卷');
}
if (!$name) {
return \Yz::echoError('请填写名称');
}
if (mb_strlen($name) > 20) {
return \Yz::echoError('名称过长');
}
if (mb_strlen($desc) > 200) {
return \Yz::echoError('说明过长');
}
if (!$icon) {
return \Yz::echoError('请上传图片');
}
if (mb_strlen($icon) > 200) {
return \Yz::echoError('图片链接过长');
}
DB::table('question_lists')->where('id', $id)->update([
'name' => $name,
'desc' => $desc ?? '',
'icon' => $icon,
'order' => $order ?? 0,
'question' => $question ?? 0,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
]);
return \Yz::Return(true, '操作完成');
}
public function delete(Request $request)
{
$id = $request->post('id');
DB::table('question_lists')->where('id', $id)->delete();
return \Yz::Return(true, '操作完成');
}
public function list(Request $request)
{
$search = $request->post('search');
$db = DB::table('question_lists');
if (!!$search) {
$db->where('name', 'like', "%$search%");
}
$list = $db->orderBy('order', 'desc')->get();
return \Yz::Return(true, '操作完成', [
'list' => $list
]);
}
}

@ -19,7 +19,7 @@ class QuestionQuestionController extends Controller
if (mb_strlen($question) > 200) {
return \Yz::echoError('题目过长');
}
$type_array = ['select', 'input', 'city', 'date'];
$type_array = ['select', 'input'];
if (!in_array($type, $type_array)) {
return \Yz::echoError('题目类型异常');
}
@ -45,7 +45,7 @@ class QuestionQuestionController extends Controller
if (mb_strlen($question) > 200) {
return \Yz::echoError('题目过长');
}
$type_array = ['select', 'input', 'city', 'date'];
$type_array = ['select', 'input'];
if (!in_array($type, $type_array)) {
return \Yz::echoError('题目类型异常');
}
@ -72,15 +72,7 @@ class QuestionQuestionController extends Controller
if (!!$search) {
$db->where('question', 'like', "%$search%");
}
$list = $db->orderBy('id', 'desc')->paginate(20);
return \Yz::Return(true, '操作完成', [
'list' => $list
]);
}
public function select(Request $request)
{
$list = DB::table('question_questions')->select(['id', 'question'])->get();
$list = $db->paginate(20);
return \Yz::Return(true, '操作完成', [
'list' => $list
]);

@ -80,16 +80,7 @@ class QuestionnaireController extends Controller
if (!!$type) {
$db->where('type', $type);
}
$list = $db->orderBy('id', 'desc')->paginate(20);
return \Yz::Return(true, '操作完成', [
'list' => $list
]);
}
public function select(Request $request)
{
$db = DB::table('questionnaires');
$list = $db->select(['id', 'name'])->where('type', '问卷调查')->orderBy('id', 'desc')->get();
$list = $db->paginate(20);
return \Yz::Return(true, '操作完成', [
'list' => $list
]);

@ -1,59 +0,0 @@
<?php
namespace App\Http\Controllers\API\Admin\YeWu;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class AnalysisTypeController extends Controller
{
public function GetList(){
$list = DB::table('analysis_types')->get();
return \Yz::Return(true,"查询完成",['list'=>$list]);
}
public function GetDetail()
{
$id = request('id');
$detail = DB::table('analysis_types')->where('id',$id)->first();
if(!!$detail){
$detail->range=json_decode($detail->range,true);
if(isset($detail->range['l'])){
$detail->range['l']=implode(',',$detail->range['l']);
}
if(isset($detail->range['r'])){
$detail->range['r']=implode(',',$detail->range['r']);
}
}
return \Yz::Return(true,"查询完成",['info'=>$detail]);
}
public function Save(){
$info = request('Info');
$range=[
"s"=>isset($info['range']['s'])?$info['range']['s']:0,
"r"=>isset($info['range']['r'])?explode(',', $info['range']['r']):[],
"l"=>isset($info['range']['l'])?explode(',', $info['range']['l']):[],
];
$data=[
'name'=>isset($info['name'])?$info['name']:'',
'range'=>json_encode($range,JSON_UNESCAPED_UNICODE),
'desc'=>isset($info['desc'])?$info['desc']:'',
'color'=>isset($info['color'])?$info['color']:'#78A155',
'mark'=>isset($info['mark'])?$info['mark']:'',
'content'=>isset($info['content'])?$info['content']:'',
'type'=>isset($info['type'])?$info['type']:0,
'status'=>isset($info['status'])?$info['status']:0,
];
if(isset($info['id']) and $info['id']>0){
$u= DB::table('analysis_types')->where('id',$info['id'])->update($data);
}else{
$u= DB::table('analysis_types')->insert($data);
}
if($u){
return \Yz::Return(true,"操作完成",[]);
}else{
return \Yz::echoError1("操作失败");
}
}
}

@ -23,10 +23,10 @@ class ArticleController extends Controller
$data=[
'title'=>$Info['title'],
'type'=>$Info['type'],
'head_img'=>isset($Info['head_img'])?$Info['head_img']:'',
'content'=>isset($Info['content'])?$Info['content']:'',
'author'=>isset($Info['author'])?$Info['author']:'',
'order'=>isset($Info['order'])?$Info['order']:0,
'head_img'=>$Info['head_img'],
'content'=>$Info['content'],
'author'=>$Info['author'],
'order'=>$Info['order'],
];
$do=false;
if($Info['id']===0){

@ -11,7 +11,7 @@ class CheckUpTypeController extends Controller
//体检类型列表
public function GetEnableList()
{
$list=DB::table('checkup_type')->where(['is_del'=>0,'status'=>1])->orWhere('id',8)->get();
$list=DB::table('checkup_type')->where(['is_del'=>0,'status'=>1])->get();
return \Yz::Return(true,'查询完成',['list'=>$list]);
}
}

@ -79,7 +79,7 @@ class ComboController extends Controller
$item[] = [
'id' => $v['Id'],
'name' => $v['名称'],
'desc' => $v['备注'],
'desc' => $v['简介'],
'keshi_name' => $v['科室名称'],
];
}
@ -91,7 +91,7 @@ class ComboController extends Controller
// 查询在库里缓存但思信已经没有的项目ids,标注为弃用0
$k_ids = array_diff($db_combo_item_ids, $sixin_combo_item_ids);
if(count($k_ids)>0){
DB::table('combo_items')->where(['combo_id'=>$combo['Id']])->whereIn('item_id',$k_ids)->delete();
DB::table('combo_items')->whereIn('item_id',$k_ids)->update(['status'=>0]);
}
@ -113,9 +113,6 @@ class ComboController extends Controller
'price' => $combo['价格'],
'items' => $item,
'item_count' => $comboDetail['data'][0]['项目数量'],
'duo_xuan_yi'=>json_encode($combo['包含多选一组'], JSON_UNESCAPED_UNICODE),
'keyue_start_time' => $combo['可约开始时间'],
'keyue_end_time' => $combo['可约截止时间'],
'status' => 1,
'updated_at' => date('Y-m-d H:i:s'),
];
@ -156,7 +153,6 @@ class ComboController extends Controller
$page = request('page');
$pageSize = request('pageSize');
$searchInfo = request('searchInfo');
$type=request('type');
$list = DB::table('combos')
->select('combos.*', 'hospitals.name as hospital_name', 'combo_type.name as combo_type_name', 'combo_crowd.name as combo_crowd_name')
->leftJoin('hospitals', 'hospitals.id', '=', 'combos.hospital_id')
@ -166,24 +162,13 @@ class ComboController extends Controller
$list = $list->where('combos.name', 'like', '%' . $searchInfo['name'] . '%');
}
$list=$list->where(['combos.status'=>1]);
$count = $list->count();
if(isset($type) and $type=='all'){
$list = $list->orderBy('combos.order','asc')->get();
}else{
$list = $list->orderBy('combos.order','asc')
->skip(($page - 1) * $pageSize) // 跳过前9999条记录
->take($pageSize)->get();
}
$list = $list
->skip(($page - 1) * $pageSize) // 跳过前9999条记录
->take($pageSize)->get();
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()
{
@ -212,10 +197,7 @@ class ComboController extends Controller
'cover' => $Info['cover'],
'intro' => $Info['intro'],
'sub_intro' => $Info['sub_intro'],
'desc' => $Info['desc'],
'order' => $Info['order'],
'sale_count' => $Info['sale_count'],
'is_hot' => isset($Info['is_hot'])?$Info['is_hot']:0,
'desc' => $Info['desc']
]);
if ($u) {
return \Yz::Return(true, "更新完成", []);
@ -223,20 +205,4 @@ class ComboController extends Controller
return \Yz::echoError1("没有数据更新");
}
}
//保存排序
public function SaveOrder(){
$order_list = request('order_list');
$count=0;
foreach ($order_list as $order) {
$u=DB::table('combos')->where(['id' => $order['id']])->update(['order' => $order['order']]);
if ($u) {
$count++;
}
}
if ($count) {
return \Yz::Return(true, "更新完成", []);
} else {
return \Yz::echoError1("没有数据更新");
}
}
}

@ -14,32 +14,4 @@ class ComboCrowdController extends Controller
$list=DB::table('combo_crowd')->get();
return \Yz::Return(true,'查询成功',['list'=>$list]);
}
public function Save()
{
$Info=request('Info');
$data=['name'=>$Info['name']];
$u=false;
if(isset($Info['id']) and $Info['id']<>0){
//更新
$u=DB::table('combo_crowd')->where('id',$Info['id'])->update($data);
}else{
//添加
$u=DB::table('combo_crowd')->insert($data);
}
if($u){
return \Yz::Return(true,"操作完成",[]);
}else{
return \Yz::echoError1("操作失败");
}
}
public function Del(){
$id=request('id');
$d=DB::table('combo_crowd')->where('id',$id)->delete();
if($d){
return \Yz::Return(true,"操作完成",[]);
}else{
return \Yz::echoError1("操作失败");
}
}
}

@ -13,31 +13,4 @@ class ComboTypeController extends Controller
$list=DB::table('combo_type')->get();
return \Yz::Return(true,'查询成功',['list'=>$list]);
}
public function Save()
{
$Info=request('Info');
$data=['name'=>$Info['name']];
$u=false;
if(isset($Info['id']) and $Info['id']<>0){
//更新
$u=DB::table('combo_type')->where('id',$Info['id'])->update($data);
}else{
//添加
$u=DB::table('combo_type')->insert($data);
}
if($u){
return \Yz::Return(true,"操作完成",[]);
}else{
return \Yz::echoError1("操作失败");
}
}
public function Del(){
$id=request('id');
$d=DB::table('combo_type')->where('id',$id)->delete();
if($d){
return \Yz::Return(true,"操作完成",[]);
}else{
return \Yz::echoError1("操作失败");
}
}
}

@ -1,81 +0,0 @@
<?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("操作失败");
}
}
}

@ -43,7 +43,7 @@ class ItemController extends Controller
$sex=null;
if(isset($item['性别限制'])){
$sex_array=['全部'=>0,'男'=>1,'女'=>2];
$sex = array_key_exists($item['性别限制'], $sex_array) ? $sex_array[$item['性别限制']] : null;
$sex=$sex_array[$item['性别限制']]>=0?$sex_array[$item['性别限制']]:null;
}
$db_item=DB::table('items')->where(['hospital_id'=>$hospital_id,'item_id'=>$item['Id']])->first();
@ -61,7 +61,6 @@ class ItemController extends Controller
'keshi_name'=>$item['科室名称'],
'beizhu'=>$item['备注'],
'jianjie'=>$item['简介'],
'tishi'=>$item['提示信息'],
'status'=>1,
'updated_at'=>date('Y-m-d H:i:s'),
];

@ -2,173 +2,31 @@
namespace App\Http\Controllers\API\Admin\YeWu;
use App\Http\Controllers\API\AspNetZhuanController;
use App\Http\Controllers\API\XCXApiController;
use App\Http\Controllers\Controller;
use App\Services\OrderService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class OrderController extends Controller
{
public function GetList()
{
$page = request('page');
$pageSize = request('pageSize');
$searchInfo = request('searchInfo');
$list = DB::table('orders');
if (isset($searchInfo['name'])) {
$list = $list->where('name', 'like', '%' . $searchInfo['name'] . '%');
public function GetList()
{
$page = request('page');
$pageSize = request('pageSize');
$searchInfo = request('searchInfo');
$list=DB::table('orders');
if(isset($searchInfo['name'])){
$list = $list->where('name', 'like', '%' . $searchInfo['name'] . '%');
}
if(isset($searchInfo['id_number'])){
$list = $list->where('id_number', $searchInfo['id_number'] );
}
if(isset($searchInfo['order_number'])){
$list = $list->where('order_number', $searchInfo['order_number'] );
}
$count=$list->count();
$list=$list
->skip(($page-1)*$pageSize) // 跳过前9999条记录
->take($pageSize)->get();
return \Yz::Return(true,"查询完成",['list'=>$list,'count'=>$count]);
}
if (isset($searchInfo['id_number'])) {
$list = $list->where('id_number', $searchInfo['id_number']);
}
if (isset($searchInfo['order_number'])) {
$list = $list->where('order_number', $searchInfo['order_number']);
}
$count = $list->count();
$list = $list->orderBy('id', 'desc')
->skip(($page - 1) * $pageSize) // 跳过前9999条记录
->take($pageSize)->get();
return \Yz::Return(true, "查询完成", ['list' => $list, 'count' => $count]);
}
public function GetDetail()
{
$id = request('id');
$order = DB::table('orders')->where(['id' => $id])->first();
return \Yz::Return(true, "查询完成", ['info' => $order]);
}
public function Save()
{
$info = request('info');
$date = [
'note' => $info['note']
];
$u = DB::table('orders')->where(['id' => $info['id']])->update($date);
if ($u) {
return \Yz::Return(true, "操作完成", []);
} else {
return \Yz::echoError1("保存失败");
}
}
public function Refund()
{
$order_id = request('order_id');
$do_type = request('do_type');//1仅退款 2取消预约并退款
$orderInfo = DB::table('orders')->where(['id' => $order_id])->first();
if (!$orderInfo) return \Yz::echoError1("未找到有效订单");
$person = DB::table('web_user_person')->where(['id' => $orderInfo->person_id])->first();
if (!$person) return \Yz::echoError1("用户不存在");
if ($do_type == 2) {
if ($orderInfo->status !== 2) return \Yz::echoError1("订单状态异常。当前状态:" . $orderInfo->status);
if ($orderInfo->check_status == 2) return \Yz::echoError1("已登记体检,禁止退款");
//调用思信取消,恢复号源
if ($orderInfo->appointment_number <> null and $orderInfo->appointment_number <> '') {
$ap = new \App\Http\Controllers\API\H5\OrderController();
$cancel = $ap->cancel_appointment($orderInfo->hospital_id, [
'type' => $orderInfo->type,
'预约Id' => $orderInfo->appointment_number
]);
if ($cancel['code'] != 0) return \Yz::echoError1("取消预约失败," . $cancel['message']);
}
}
if (in_array($do_type, [1, 2])) {
//如果有二线取消二线
$yyid = 6;
if ($orderInfo->hospital_id == 1) {
$yyid = 6;
}
if ($orderInfo->hospital_id == 4) {
$yyid = 2;
}
$AspNet = new AspNetZhuanController();
$erxian_info = json_decode($orderInfo->erxian_appointment_info, true);
if (isset($erxian_info) and !empty($erxian_info)) {
foreach ($erxian_info as $key => $plan_nmr) {
if (isset($plan_nmr['gid'])) {
//调用接口取消二线
$erxian_status = $AspNet::ErXian(['id' => $plan_nmr['gid'], 'yyid' => $yyid, 'action' => 3], uniqid());
$erxian_info[$key]['gid'] = '';
$ex_u = DB::table('orders')->where(['id' => $orderInfo->id])->update([
'erxian_appointment_info' => json_encode($erxian_info, JSON_UNESCAPED_UNICODE),
]);
}
}
}
//如果真实支付大于0 则调用小程序退款
if ($orderInfo->true_price > 0) {
$data = [
'orderid' => $orderInfo->order_number,
'refund_order_id' => 'T' . $orderInfo->order_number,
'refund_amount' => (int)($orderInfo->true_price * 100),
'refund_reason' => "体检H5订单退款",
];
$XCX = new XCXApiController();
$res = $XCX::Post('订单退款', $data);
if ($res['data']['refund_state'] != 'SUCCESS') {
return \Yz::echoError1("退款失败" . $res['data']['refund_state']);
}
}
$now_datetime = date('Y-m-d H:i:s');
//调用接口恢复积分和预存款
$env = config('app.globals.Env');
$AspNet = new AspNetZhuanController();
$jifen_huifu_status = true;
$yucunkuan_huifu_status = true;
$r_yyid = $orderInfo->hospital_id;
if ($r_yyid == 1) {
$yyid = 6;
}
if ($r_yyid == 4) {
$yyid = 2;
}
if ($env == 'pro') { //如果是正式环境
if ($orderInfo->jifen > 0 and $orderInfo->is_refund_jifen == 0) {
$jifen_huifu_status = false;
$jifen_huifu_status = $AspNet::UseJiFen($person->ghzid, $orderInfo->jifen, $yyid, $orderInfo->id, 'tj_h5', '抵扣体检H5订单', $now_datetime);
if ($jifen_huifu_status === true) {
DB::table('orders')->where('id', $orderInfo->id)->update(['is_refund_jifen' => 1]);
}
}
if ($orderInfo->yucunkuan > 0 and $orderInfo->is_refund_yucunkuan == 0) {
$yucunkuan_huifu_status = false;
$yucunkuan_huifu_status = $AspNet::UseYuCunKuan($person->ghzid, $orderInfo->yucunkuan, $yyid, 0, $orderInfo->id, 'tj_h5', '抵扣体检H5订单', $now_datetime);
if ($yucunkuan_huifu_status === true) {
DB::table('orders')->where('id', $orderInfo->id)->update(['is_refund_yucunkuan' => 1]);
}
}
if (!empty($orderInfo->youhuiquan)) {
$youhuiquan = json_decode($orderInfo->youhuiquan, true);
$data = [
'action' => 4,
'ghzid' => $person->ghzid,
'dzjid' => $youhuiquan['id'],
'hxbz' => "H5撤销核销",
'yyid' => $yyid
];
$AspNet::YouHuiQuan($data);
}
}
DB::table('orders')->where(['id' => $order_id])->update([
'status' => 5,
'refund_time' => $now_datetime
]);
//恢复号源
$up_plan = DB::table('plans')->where(['id' => $orderInfo->plan_id, 'status' => 2])->update([
'status' => 1
]);
return \Yz::Return(true, "退款成功", []);
}
}
}

@ -14,8 +14,6 @@ class PlanController extends Controller
public function CreatePlan()
{
$Info = request('CPlan');
$dateRange = request('dateRange');
$Info['dateRange'] = $dateRange;
$params = [
'model_id' => isset($Info['model_id']) ? $Info['model_id'] : null,
'dateRange' => isset($Info['dateRange']) ? $Info['dateRange'] : null,
@ -35,35 +33,32 @@ class PlanController extends Controller
}
$model = DB::table('plan_model as a')->where(['a.id' => $params['model_id'], 'a.is_del' => 0, 'a.status' => 1])->first();
if (!$model) return \Yz::echoError1('模板不可用');
// $planType = DB::table('plan_type as a')->where(['a.id' => $model->plan_type, 'a.is_del' => 0, 'a.status' => 1])->first();
// if (!$planType) return \Yz::echoError1('号源类型不可用');
$planType = DB::table('plan_type as a')->where(['a.id' => $model->plan_type, 'a.is_del' => 0, 'a.status' => 1])->first();
if (!$planType) return \Yz::echoError1('号源类型不可用');
//查询此时间段内是否有已经生成的号源
$cha = DB::table('plans')->whereBetween('date', $Info['dateRange'])->where(['is_del'=>0])->whereIn('status',[0,1])->get();
if (count($cha) > 0) {
return \Yz::return(false, '号源重复', ['list' => $cha]);
$cha=DB::table('plans')->whereBetween('date',$Info['dateRange'])->get();
if(count($cha)>0){
return \Yz::return(false,'号源重复',['list'=>$cha]);
}
//获取模板的全部时间点
// $s=new TimeService();
// $timelist=$s->TimePointsArr($model->start_time,$model->end_time,$model->interval_time);
$timelist = DB::table('plan_model_time')->where(['model_id' => $params['model_id']])->get();
if (count($timelist) < 1) return \Yz::echoError1('');
$s=new TimeService();
$timelist=$s->TimePointsArr($model->start_time,$model->end_time,$model->interval_time);
if(count($timelist)<1) return \Yz::echoError1('');
$startDate = new DateTime($Info['dateRange'][0]);
$endDate = new DateTime($Info['dateRange'][1]);
$currentDate = $startDate;
$success_count = 0;
$success_count=0;
while ($currentDate <= $endDate) {
//循环生成
$date_ymd = $currentDate->format('Y-m-d');
//查询这一天已经占用的号源
$usedPlans= DB::table('plans')->where(['date'=>$date_ymd,'status'=>2])->get();
$date_ymd=$currentDate->format('Y-m-d');
//判断节假日是否生成
$s_day = DB::table('plan_holiday')->select('*', 'type as tp')->where(['date' => $date_ymd])->first();
if (!!$s_day) {
if ($s_day->tp == 1 and $params['workday_create'] === 0) {
$s_day=DB::table('plan_holiday')->select('*','type as tp')->where(['date'=>$date_ymd])->first();
if(!!$s_day){
if($s_day->tp==1 and $params['workday_create']===0){
$currentDate->modify('+1 day');
continue;
}
if ($s_day->tp == 2 and $params['holiday_create'] === 0) {
if($s_day->tp==2 and $params['holiday_create']===0){
$currentDate->modify('+1 day');
continue;
}
@ -72,176 +67,95 @@ class PlanController extends Controller
//获取星期几 星期1=1 星期日=7
$dayOfWeek = $currentDate->format('N');
//如果星期匹配上了
if (in_array($dayOfWeek, $params['week'])) {
foreach ($timelist as $key => $time) {
$planType=null;
if(isset( $time->plan_type_id)){
$planType = DB::table('plan_type as a')->where(['a.id' => $time->plan_type_id, 'a.is_del' => 0, 'a.status' => 1])->first();
if (!$planType) return \Yz::echoError1('号源类型不可用');
}
$cleanTime = implode('', explode(':', $time->time)); // 去除冒号的时间字符串
$tiaoguo=false;
foreach ($usedPlans as $usekey => $usedPlan) { //如果有占用的号源则跳过
if($usedPlan->date==$date_ymd and $usedPlan->time==$time->time){
$tiaoguo=true;
break;
}
}
if($tiaoguo) continue;
$data = [
'model_id' => $model->id,
'date' => $date_ymd,
'week' => $dayOfWeek,
'time' => $time->time,
'type' => $time->type,
'plan_number' => substr($cleanTime, 0, 4),
'is_vip' => empty($planType)?null: $planType->is_vip,
'use_type' => empty($planType)?null:$planType->use_type,
'sex' => empty($planType)?null:$planType->sex,
'checkup_type_id' => empty($planType)?null:$planType->checkup_type_id,
'amount_limit1' =>empty($planType)?null: $planType->amount_limit1,
'amount_limit2' =>empty($planType)?null: $planType->amount_limit2,
'hospital_id' => $model->hospital_id,
'status' => 1,
'is_del' => 0
if(in_array($dayOfWeek, $params['week'])) {
foreach ($timelist as $key=>$time){
$type=1; //正常
if(in_array($key,json_decode($model->y_number,true))){
$type=0;//预留
}
$data=[
'model_id'=>$model->id,
'date'=>$date_ymd,
'week'=>$dayOfWeek,
'time'=>$time,
'type'=>$type,
'plan_number'=>implode('', explode(':', $time)),
'is_vip'=>$planType->is_vip,
'use_type'=>$planType->use_type,
'sex'=>$planType->sex,
'checkup_type_id'=>$planType->checkup_type_id,
'amount_limit1'=>$planType->amount_limit1,
'amount_limit2'=>$planType->amount_limit2,
'hospital_id'=>$model->hospital_id,
'status'=>1,
'is_del'=>0
];
$i = DB::table('plans')->insert($data);
if ($i) {
$success_count++;
}
}
];
$i=DB::table('plans')->insert($data);
if($i){
$success_count++;
}
}
}
// 日期加一天
$currentDate->modify('+1 day');
}
if ($success_count > 0) {
return \Yz::Return(true, '', ['success_count' => $success_count]);
} else {
return \Yz::echoError1('没有计划被创建');
}
if($success_count>0){
return \Yz::Return(true,'',['success_count'=>$success_count]);
}else{
return \Yz::echoError1('没有计划被创建');
}
}
public function GetList()
{
$page = request('page');
$pageSize = request('pageSize');
$searchInfo = request('searchInfo');
$list = DB::table('plans as a')
// ->leftJoin('plan_type as b','a.plan_type','=','b.id')
// ->select('a.*','b.name as plan_type_name')
->where(['a.is_del' => 0]);
if (!isset($searchInfo['date'])) {
$searchInfo['date'] = date('Y-m-d');
$page =request('page');
$pageSize =request('pageSize');
$searchInfo=request('searchInfo');
$list=DB::table('plans as a')
// ->leftJoin('plan_type as b','a.plan_type','=','b.id')
// ->select('a.*','b.name as plan_type_name')
->where(['a.is_del'=>0]);
if(!isset($searchInfo['date'])){
$searchInfo['date']=date('Y-m-d');
}
$list = $list->where(['a.date' => $searchInfo['date']]);
$count = $list->count();
$list = $list->orderBy('a.id', 'asc')->get();
return \Yz::Return(true, '查询完成', ['list' => $list, 'count' => $count, 'date' => $searchInfo['date']]);
$list=$list->where(['a.date'=>$searchInfo['date']]);
$count=$list->count();
$list=$list ->orderBy('a.id', 'asc')->get();
return \Yz::Return(true,'查询完成',['list'=>$list,'count'=>$count,'date'=> $searchInfo['date']]);
}
public function GetDetail()
{
$id = request('id');
$info = DB::table('plans')->where(['id' => $id,'is_del'=>0])->first();
if (!!$info) {
if(empty($info->checkup_type_id)){
$info->checkup_type_id='[]';
}
$info->checkup_type_id = json_decode($info->checkup_type_id, true);
return \Yz::Return(true, '查询完成', ['info' => $info]);
} else {
$id =request('id');
$info=DB::table('plans')->where(['id'=>$id])->first();
if(!!$info){
$info->checkup_type_id=json_decode($info->checkup_type_id,true);
return \Yz::Return(true,'查询完成',['info'=>$info]);
}else{
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('操作失败');
}
}
}
//批量更新号源类型
public function BatchUpdatePlanType(){
$ids = request('ids');
$type = request('type');
$info = request('info');
$cha =DB::table('plans')->whereIn('id', $ids)->where(['status'=>2])->get();
if(count($cha) >0){
return \Yz::echoError1('有号源被占用,不能执行此操作');
}
if($type==0){
$data=[
'is_vip'=>null,
'use_type'=>null,
'sex'=>null,
'checkup_type_id'=>[],
'amount_limit1'=>null,
'amount_limit2'=>null,
'type'=>0,
];
}
if($type==1){
if(empty($info['checkup_type_id'])) return \Yz::echoError1('体检类型不能为空');
if(!isset($info['is_vip'])) return \Yz::echoError1('是否vip不能为空');
if(!isset($info['use_type'])) return \Yz::echoError1('团检/个检不能为空');
if(!isset($info['sex'])) return \Yz::echoError1('性别不能为空');
$data=[
$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'=>isset($info['amount_limit1'])?$info['amount_limit1']:0,
'amount_limit2'=>isset($info['amount_limit2'])?$info['amount_limit2']:0,
'type'=>1,
];
}
$u=DB::table('plans')->whereIn('id', $ids)->update($data);
if ($u){
return \Yz::Return(true, '操作成功', []);
}else{
return \Yz::echoError1('操作失败');
}
}
public function Del()
{
$ids = request('ids');
$dates = request('dates');
if(empty($ids) and empty($dates)) return \Yz::echoError1("条件不完整");
$del=DB::table('plans');
if(!empty($ids)){
$del=$del ->whereIn('id', $ids);
}
if(isset($dates) and !empty($dates)){
$del=$del->whereIn('date',$dates);
}
$del=$del->whereIn('status',[0,1])->update(['is_del'=>1]);
if($del){
return \Yz::Return(true, '操作成功', []);
}else{
return \Yz::echoError1('操作失败');
'amount_limit1'=>$info['amount_limit1'],
'amount_limit2'=>$info['amount_limit2'],
'status'=>$info['status'],
]);
if($u){
return \Yz::Return(true,'保存成功',[]);
}else{
return \Yz::echoError1('操作失败');
}
}
}
}

@ -1,26 +0,0 @@
<?php
namespace App\Http\Controllers\API\Admin\YeWu;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class PlanListController extends Controller
{
public function GetList()
{
$searchInfo = request('searchInfo');
$today=date('Y-m-d');
if(empty($searchInfo['dateRange']) or count($searchInfo['dateRange'])<>2){
$searchInfo['dateRange']=[$today,$today];
}
$list=DB::select("select date,
SUM(CASE WHEN type = 0 THEN 1 ELSE 0 END) as type_0_count,
SUM(CASE WHEN type =1 THEN 1 ELSE 0 END) as type_1_count,
SUM(CASE WHEN status=2 THEN 1 ELSE 0 END) as type_used_count
from plans where date >=? and date<=? and is_del=0 GROUP BY date",$searchInfo['dateRange']);
return \Yz::Return(true,"查询完成",['list'=>$list,'dateRange'=>$searchInfo['dateRange'],'count'=>0]);
}
}

@ -46,8 +46,6 @@ class PlanModelController extends Controller
public function Save()
{
$Info =request('Info');
$Timelist =request('Timelist');
$params = [
'hospital_id' => isset($Info['hospital_id']) ? $Info['hospital_id'] :null,
'name' => isset($Info['name']) ? $Info['name'] : null,
@ -57,7 +55,7 @@ class PlanModelController extends Controller
'count' => isset($Info['count']) ? $Info['count'] : 0,
'status'=>isset($Info['status']) ? $Info['status'] : 0,
];
$requiredFields = ['hospital_id'=>'医院','name'=>'名称','interval_time'=>'时间间隔'];
$requiredFields = ['hospital_id'=>'医院','name'=>'名称','interval_time'=>'时间间隔','plan_type'=>'号源类型'];
// 判断是否为空
foreach ($requiredFields as $key=> $field) {
if (!isset($params[$key]) || $params[$key] === null) {
@ -71,34 +69,15 @@ class PlanModelController extends Controller
$params['end_time']=$Info['TimeRange'][1];
$do=false;
$table=DB::table('plan_model');
$table_model_time=DB::table('plan_model_time');
DB::beginTransaction();
if($Info['id']==0){
$model_id=$table->insertGetId($params);
$do=$table->insert($params);
}
if($Info['id']>0){
$model_id=$Info['id'];
$table->where(['id'=>$Info['id']])->update($params);
}
$model_time_data=[];
foreach ($Timelist as $key=>$value){
$model_time_data[]=[
'type'=>isset($value['plan_type_id']) ? 1 : 0,
'model_id'=>$model_id,
'time'=>$value['time'],
'type_color'=>isset($value['type_color']) ? $value['type_color'] : null,
'plan_type_id'=>isset($value['plan_type_id']) ? $value['plan_type_id'] : null,
];
}
if(count($model_time_data)>0){
DB::table('plan_model_time')->where(['model_id'=>$model_id])->delete();
$do=$table_model_time->insert($model_time_data);
$do=$table->where(['id'=>$Info['id']])->update($params);
}
if($do){
DB::commit();
return \Yz::Return(true,'操作成功',[]);
}else{
DB::rollBack();
return \Yz::echoError1('操作失败');
}
@ -110,8 +89,6 @@ class PlanModelController extends Controller
if(!!$info){
$info->TimeRange=[$info->start_time,$info->end_time];
$info->y_number=json_decode($info->y_number,true);
$list=DB::table('plan_model_time as a')->where(['model_id'=>$id])->get();
$info->list=$list;
return \Yz::Return(true,'查询完成',$info);
}else{
return \Yz::echoError1('查询失败');

@ -20,9 +20,8 @@ class PlanTypeController extends Controller
'amount_limit1' => isset($Info['amount_limit1']) ? $Info['amount_limit1'] : 0,
'amount_limit2' => isset($Info['amount_limit2']) ? $Info['amount_limit2'] : 0,
'status'=>isset($Info['status']) ? $Info['status'] : 0,
'color'=>isset($Info['color']) ? $Info['color'] : null,
];
$requiredFields = ['name'=>'名称','is_vip'=>'vip类型','use_type'=>'个检/团检类型','checkup_type_id'=>'体检类型','status'=>'状态','color'=>'颜色'];
$requiredFields = ['name'=>'名称','is_vip'=>'vip类型','use_type'=>'个检/团检类型','checkup_type_id'=>'体检类型','status'=>'状态'];
// 判断是否为空
foreach ($requiredFields as $key=> $field) {
if (!isset($params[$key]) || $params[$key] === null) {

@ -14,70 +14,65 @@ class QuestionController extends Controller
if (!isset($searchInfo['hospital_id'])) return \Yz::echoError1("医院id不能为空");
if (!isset($searchInfo['q_type'])) return \Yz::echoError1("问卷类型不能为空");
$list = DB::table('questions')
->where(['hospital_id' => $searchInfo['hospital_id'],
'q_type' => $searchInfo['q_type'],
'is_del' => 0,
])->orderBy('order', 'asc')->get();
return \Yz::Return(true, "查询成功", ['list' => $list]);
->where(['hospital_id'=>$searchInfo['hospital_id'],
'q_type'=>$searchInfo['q_type'],
'is_del'=>0,
])->orderBy('order','asc')->get();
return \Yz::Return(true,"查询成功",['list'=>$list]);
}
public function Save()
{
$QuestionInfo = request('QuestionInfo');
$params = [
'hospital_id' => isset($QuestionInfo['hospital_id']) ? $QuestionInfo['hospital_id'] : null,
'question' => isset($QuestionInfo['question']) ? $QuestionInfo['question'] : null,
'content' => (isset($QuestionInfo['content']) and !empty($QuestionInfo['content'])) ? json_encode($QuestionInfo['content'], JSON_UNESCAPED_UNICODE) : null,
'type' => isset($QuestionInfo['type']) ? $QuestionInfo['type'] : null,
'status' => isset($QuestionInfo['status']) ? $QuestionInfo['status'] : null,
'order' => isset($QuestionInfo['order']) ? $QuestionInfo['order'] : null,
'q_type' => isset($QuestionInfo['q_type']) ? $QuestionInfo['q_type'] : null,
'hospital_id'=>isset($QuestionInfo['hospital_id'])?$QuestionInfo['hospital_id']:null,
'question'=>isset($QuestionInfo['question'])?$QuestionInfo['question']:null,
'content'=>(isset($QuestionInfo['content']) and !empty($QuestionInfo['content']))?json_encode($QuestionInfo['content'],JSON_UNESCAPED_UNICODE):null,
'type'=>isset($QuestionInfo['type'])?$QuestionInfo['type']:null,
'status'=>isset($QuestionInfo['status'])?$QuestionInfo['status']:null,
'order'=>isset($QuestionInfo['order'])?$QuestionInfo['order']:null,
'q_type'=>isset($QuestionInfo['q_type'])?$QuestionInfo['q_type']:null,
];
$requiredFields = [
'hospital_id', 'question', 'content', 'type', 'status', 'order', 'q_type'
'hospital_id','question','content','type','status','order','q_type'
];
// 判断是否为空
foreach ($requiredFields as $field) {
if (!isset($params[$field]) || $params[$field] === null) {
return \Yz::echoError1('参数' . $field . '不能为空');
return \Yz::echoError1('参数' . $field . '不能为空');
}
}
if (isset($QuestionInfo['id']) and $QuestionInfo['id'] <> 0) {
$insert = DB::table('questions')->where(['id' => $QuestionInfo['id'], 'is_del' => 0])->update($params);
} else {
$insert = DB::table('questions')->insert($params);
if(isset($QuestionInfo['id']) and $QuestionInfo['id']<>0){
$insert=DB::table('questions')->where(['id'=>$QuestionInfo['id'],'is_del'=>0])->update($params);
}else{
$insert=DB::table('questions')->insert($params);
}
if ($insert) {
return \Yz::Return(true, '操作成功', []);
} else {
if($insert){
return \Yz::Return(true,'操作成功',[]);
}else{
return \Yz::echoError1('操作失败');
}
}
public function GetDetail()
{
$id = request('id');
$info = DB::table('questions')->where(['id' => $id, 'is_del' => 0])->first();
if (!!$info) {
$info->content = json_decode($info->content, true);
$info=DB::table('questions')->where(['id'=>$id,'is_del'=>0])->first();
if(!!$info){
$info->content=json_decode($info->content,true);
}
return \Yz::Return(true, '查询完成', $info);
return \Yz::Return(true,'查询完成',$info);
}
public function Del()
{
$id = request('id');
$del = DB::table('questions')->where(['id' => $id])->update([
'is_del' => 1
$del=DB::table('questions')->where(['id'=>$id])->update([
'is_del'=>1
]);
if ($del) {
return \Yz::Return(true, '操作成功', []);
} else {
if($del){
return \Yz::Return(true,'操作成功',[]);
}else{
return \Yz::echoError1('操作失败');
}
}
}

@ -1,120 +0,0 @@
<?php
namespace App\Http\Controllers\API\Admin\YeWu;
use App\Http\Controllers\Controller;
use App\Lib\Tools;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;
class QuestionLogController extends Controller
{
public function Export()
{
$q_type = request('q_type');
$dateRange = request('dateRange');
if(!isset($dateRange) or count($dateRange)<>2) return \Yz::echoError1("请选择日期");
$dateRange=[$dateRange[0].' 00:00:00',$dateRange[1].' 23:59:59'];
$q_list=DB::table('questions')->where(['q_type'=>2,'is_del'=>0,'status'=>1])->orderBy('order','asc')->get();
$log_list = DB::table('questions_log')->whereBetween('created_at',$dateRange)->where(['q_type' => $q_type])->get();
if(count($log_list)==0) return \Yz::echoError1("暂无数据可导出");
$cols_SN = $this->generateSequence(400);
$template_path = Storage::path('public/excel/manyidudiaocha.xlsx');
$spreadsheet = IOFactory::load($template_path);
$worksheet = $spreadsheet->getActiveSheet();
$styleArray = [
'borders' => [
'allBorders' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => 'FF000000'],
],
],
];
$row=3;
foreach ($log_list as $key=> $item) {
$personinfo=DB::table('web_user_person')->where(['id'=>$item->personid])->first();
$sex='未知';
if($personinfo->sex==1) $sex='男';
if($personinfo->sex==2) $sex='女';
$item->content=json_decode($item->content,true);
$worksheet->setCellValueExplicit($cols_SN[0] . $row, $key+1, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit($cols_SN[1] . $row, $personinfo->name, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit($cols_SN[2] . $row, $item->created_at, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit($cols_SN[3] . $row, $personinfo->name, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit($cols_SN[4] . $row, $personinfo->phone, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit($cols_SN[5] . $row, $sex, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit($cols_SN[6] . $row, $personinfo->birthday, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit($cols_SN[7] . $row, Tools::GetAge($personinfo->birthday), \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
foreach ( $item->content as $q_key=>$q_item){
foreach ($q_item['more'] as $morekey=>$moreitem){
if($moreitem<>null){
$q_item['answer'][0]=$q_item['answer'][0].','.$moreitem;
}
}
$worksheet->setCellValueExplicit($cols_SN[8+$q_key] . $row, $q_item['answer'][0], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
}
$row++;
}
$worksheet->getStyle('A3:Z' . ($row - 1))->applyFromArray($styleArray);
$file_name = Str::orderedUuid();
$dir_path = "public/excel/" . date('Ym') . '/' . $file_name;
Storage::makeDirectory($dir_path);
//$name_date = date('n.j', strtotime($date . ' 00:00:00'));
$excel_path = $dir_path . "/满意度调查.xlsx";
$writer = new Xlsx($spreadsheet);
$writer->save(Storage::path($excel_path));
$url = Storage::url($excel_path);
return \Yz::Return(true,"获取成功",['url' => env('APP_URL').$url]);
}
function generateSequence($L) {
$sequence = [];
$current = '';
// Helper function to increment the sequence
function increment(&$str) {
$len = strlen($str);
$str = strrev($str); // Reverse string for easier manipulation
for ($i = 0; $i < $len; $i++) {
if ($str[$i] == 'Z') {
$str[$i] = 'A';
} else {
$str[$i] = chr(ord($str[$i]) + 1);
break;
}
}
// If we've gone through all characters and they were all 'Z'
if ($i == $len && $str[$len-1] == 'A') {
$str .= 'A'; // Append an 'A' at the end, equivalent to carrying over
}
$str = strrev($str); // Reverse back to original order
}
// Initialize the first value of the sequence
if ($L > 0) {
$current = 'A';
$sequence[] = $current;
}
// Generate the sequence up to length L
for ($i = 1; $i < $L; $i++) {
increment($current);
$sequence[] = $current;
}
return $sequence;
}
}

@ -1,51 +0,0 @@
<?php
namespace App\Http\Controllers\API\Admin\YeWu;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class YuYueOrderController extends Controller
{
public function GetList()
{
$page = request('page');
$pageSize = request('pageSize');
$searchInfo = request('searchInfo');
$list=DB::table('orders_yuyue');
if(isset($searchInfo['name'])){
$list = $list->where('name', 'like', '%' . $searchInfo['name'] . '%');
}
if(isset($searchInfo['id_number'])){
$list = $list->where('id_number', $searchInfo['id_number'] );
}
if(isset($searchInfo['order_number'])){
$list = $list->where('order_number', $searchInfo['order_number'] );
}
$count=$list->count();
$list=$list->orderBy('id','desc')
->skip(($page-1)*$pageSize) // 跳过前9999条记录
->take($pageSize)->get();
return \Yz::Return(true,"查询完成",['list'=>$list,'count'=>$count]);
}
public function GetDetail()
{
$id = request('id');
$order=DB::table('orders_yuyue')->where(['id'=>$id])->first();
return \Yz::Return(true,"查询完成",['info'=>$order]);
}
public function Save()
{
$info = request('info');
$date=[
'note'=>$info['note']
];
$u=DB::table('orders_yuyue')->where(['id'=>$info['id']])->update($date);
if($u){
return \Yz::Return(true,"操作完成",[]);
}else{
return \Yz::echoError1("保存失败");
}
}
}

@ -35,68 +35,45 @@ class ApiMapController extends Controller
'GetGeJianButtonList' => $base_url . '/api/H5/GetGeJianButtonList',
'ArticleGetList' => $base_url . '/api/H5/ArticleGetList',
'ArticleGetDetail' => $base_url . '/api/H5/ArticleGetDetail',
'GetAllItems' => $base_url . '/api/H5/GetAllItems', //获取全部自选项目
'BuyInfo' => $base_url . '/api/H5/BuyInfo', //获取全部自选项目
'GetComboSort' => $base_url . '/api/H5/GetComboSort', //套餐排序、筛选标签
'GetPersonIntegralSaveMoneyCouponInfo' => $base_url . '/api/H5/GetPersonIntegralSaveMoneyCouponInfo', //获取就诊人基本信息和预存款、代金券、积分
'DoctorGetList' => $base_url . '/api/H5/DoctorGetList', //获取体检医生列表
'ComboRecommend' => $base_url . '/api/H5/ComboRecommend', //套餐推荐
'GetReadme' => $base_url . '/api/H5/GetReadme', //须知
'NMRGetMonthPlanCount' => $base_url . '/api/H5/NMRGetMonthPlanCount', //核磁每日号源
'NMRGetDayPlanList' => $base_url . '/api/H5/NMRGetDayPlanList', //核磁每日号源
'GetGroupUnit' => $base_url . '/api/H5/GetGroupUnit', //团检登记查询获取单位分组
'GetGroupCombo' => $base_url . '/api/H5/GetGroupCombo', //获取团检套餐
'OrderCreate' => $base_url . '/api/H5/OrderCreate', //创建订单
'GetReportList' => $base_url . '/api/H5/GetReportList', //获取关联的所有体检人报告列表
'GetReportJieLunJianYi' => $base_url . '/api/H5/GetReportJieLunJianYi', //获取报告结论建议页面数据
'GetReportDetaiList' => $base_url . '/api/H5/GetReportDetaiList', //完整报告中的列表
'GetReportDetai' => $base_url . '/api/H5/GetReportDetai', //完整报告中的详情
'StartPay' => $base_url . '/api/H5/StartPay', //开始支付
'CheckPay' => $base_url . '/api/H5/CheckPay', //支付查询
'Refund' => $base_url . '/api/H5/Refund', //退款
'GetMonthPlanCount' => $base_url . '/api/H5/GetMonthPlanCount', //按月获取每日号源
'GetDayPlanList' => $base_url . '/api/H5/GetDayPlanList', //获取每日号源
'ComboCompare' => $base_url . '/api/H5/ComboCompare', //套餐对比
'GetOrderDetail' => $base_url . '/api/H5/GetOrderDetail', //获取订单详情
'ReportContrast' => $base_url . '/api/H5/ReportContrast', //报告对比
'QuestionGetList' => $base_url . '/api/H5/QuestionGetList', //获取问卷
'QuestionSubmitAnswer' => $base_url . '/api/H5/QuestionSubmitAnswer', //提交问卷回答
'AnalysisTypeGetList' => $base_url . '/api/H5/AnalysisTypeGetList', //趋势分析项目列表
'ReportAnalysis' => $base_url . '/api/H5/ReportAnalysis', //报告趋势详情
'HunQianQuestionSubmit' => $base_url . '/api/H5/HunQianQuestionSubmit', //婚前问卷提交
'ChangeAppointment' => $base_url . '/api/H5/ChangeAppointment', //改约
'UsableIntegralSaveMoney' => $base_url . '/api/H5/UsableIntegralSaveMoney', //获取本单可用金额和积分
'GetAllItems' => $base_url . '/api/H5/GetAllItems',//获取全部自选项目
'BuyInfo' => $base_url . '/api/H5/BuyInfo',//获取全部自选项目
'GetComboSort' => $base_url . '/api/H5/GetComboSort',//套餐排序、筛选标签
'GetPersonIntegralSaveMoneyCouponInfo' => $base_url . '/api/H5/GetPersonIntegralSaveMoneyCouponInfo',//获取就诊人基本信息和预存款、代金券、积分
'DoctorGetList' => $base_url . '/api/H5/DoctorGetList',//获取体检医生列表
'ComboRecommend' => $base_url . '/api/H5/ComboRecommend',//套餐推荐
'GetReadme' => $base_url . '/api/H5/GetReadme',//须知
'NMRGetMonthPlanCount' => $base_url . '/api/H5/NMRGetMonthPlanCount',//核磁每日号源
'NMRGetDayPlanList' => $base_url . '/api/H5/NMRGetDayPlanList',//核磁每日号源
'GetGroupUnit' => $base_url . '/api/H5/GetGroupUnit',//团检登记查询获取单位分组
'GetGroupCombo' => $base_url . '/api/H5/GetGroupCombo',//获取团检套餐
'OrderCreate' => $base_url . '/api/H5/OrderCreate',//创建订单
'GetReportList' => $base_url . '/api/H5/GetReportList',//获取关联的所有体检人报告列表
'GetReportJieLunJianYi' => $base_url . '/api/H5/GetReportJieLunJianYi',//获取报告结论建议页面数据
'GetReportDetaiList' => $base_url . '/api/H5/GetReportDetaiList',//完整报告中的列表
'GetReportDetai' => $base_url . '/api/H5/GetReportDetai',//完整报告中的详情
'StartPay' => $base_url . '/api/H5/StartPay',//开始支付
'CheckPay' => $base_url . '/api/H5/CheckPay',//支付查询
'Refund' => $base_url . '/api/H5/Refund',//退款
'GetMonthPlanCount' => $base_url . '/api/H5/GetMonthPlanCount',//按月获取每日号源
'GetDayPlanList' => $base_url . '/api/H5/GetDayPlanList',//获取每日号源
'ComboCompare' => $base_url . '/api/H5/ComboCompare',//套餐对比
'GetOrderDetail' => $base_url . '/api/H5/GetOrderDetail',//获取订单详情
'ReportContrast' => $base_url . '/api/H5/ReportContrast',//报告对比
'QuestionGetList' => $base_url . '/api/H5/QuestionGetList',//获取问卷
'QuestionSubmitAnswer' => $base_url . '/api/H5/QuestionSubmitAnswer',//提交问卷回答
'AnalysisTypeGetList' => $base_url . '/api/H5/AnalysisTypeGetList',//趋势分析项目列表
'ReportAnalysis' => $base_url . '/api/H5/ReportAnalysis',//报告趋势详情
'HunQianQuestionSubmit' => $base_url . '/api/H5/HunQianQuestionSubmit',//婚前问卷提交
'ChangeAppointment' => $base_url . '/api/H5/ChangeAppointment',//改约
'FenzhenAbandon' => $base_url . '/api/H5/Fenzhen/abandon', // 分诊弃检
'FenzhenList' => $base_url . '/api/H5/Fenzhen/list', // 分诊时间线
'FenzhenInfo' => $base_url . '/api/H5/Fenzhen/info', // 分诊项目详情
'FenzhenCheck' => $base_url . '/api/H5/Fenzhen/check', // 分诊检测
'FenzhenAbandon' => $base_url . '/api/H5/Fenzhen/abandon',// 分诊弃检
'FenzhenList' => $base_url . '/api/H5/Fenzhen/list',// 分诊时间线
'FenzhenInfo' => $base_url . '/api/H5/Fenzhen/info',// 分诊项目详情
'FenzhenCheck' => $base_url . '/api/H5/Fenzhen/check',// 分诊检测
'QuestionGet' => $base_url . '/api/H5/Question/get', // 问卷调查
'QuestionSubmit' => $base_url . '/api/H5/Question/submit', // 问卷提交
'QuestionLogInfo' => $base_url . '/api/H5/QuestionLog/info', // 提交信息
'QuestionLogList' => $base_url . '/api/H5/QuestionLog/list', // 问卷列表
'QuestionLogDelete' => $base_url . '/api/H5/QuestionLog/delete', // 问卷删除记录
'QuestionLogPush' => $base_url . '/api/H5/QuestionLog/push', // 上次答题记录
'QuestionChoose' => $base_url . '/api/H5/Question/choose', // 健康问卷列表
'AddressData' => $base_url . '/api/H5/Address/data', // 省市区数据
'UserHunjian' => $base_url . '/api/H5/User/hunjian', // 婚检人员信息
'hunjianBySFZ' => $base_url . '/api/H5/hunjianBySFZ', // 婚检人员信息
'CheckedSignIn' => $base_url . '/api/H5/CheckedSignIn', // 检后签到
'SendMsgCode' => $base_url . '/api/H5/SendMsgCode', // 发送验证码
'CheckMsgCode' => $base_url . '/api/H5/CheckMsgCode', // 验证验证码
'CheckEnableNmrTime' => $base_url . '/api/H5/CheckEnableNmrTime', // 查询是否有可用核磁号源
];
}
public function address()
{
$address_data = file_get_contents(public_path('assets/address.json'));
return \Yz::Return(true, '获取成功', [
'data' => json_decode($address_data, true)
]);
}
public function test()
{
return \Yz::Return(true, '获取成功', [

@ -1,269 +0,0 @@
<?php
namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Schema;
class AspNetZhuanController extends Controller
{
public static $request;
public static $BaseUrl = "http://220.174.210.111:82";//url
public static $JF_BaseUrl = "http://220.174.210.111:82/jifen.aspx";//积分预存款Url
//获取用户积分和预存款
public static function GetJiFen_YuCunKuan($type, $ghzid)
{
$res = self::Get(self::$JF_BaseUrl . '?type=' . $type . '&ghzid=' . $ghzid,"查询剩余积分/预存款");
if ($type == 1) return $res['剩余积分'];
if ($type == 2) return $res['剩余预存款'];
}
//获取本次账单可使用的积分
public static function GetEnableCount($ghzid,$ysje,$ssje)
{
$res = self::Get(self::$JF_BaseUrl . '?type=3' . '&ghzid=' . $ghzid. '&ysje=' . $ysje. '&ssje=' . $ssje,"查询本单积分");
return $res['本次账单可抵扣积分'];
}
//使用积分
public static function UseJiFen($ghzid,$jifen,$yyid,$caozuorenid,$caozuorenmigncheng,$beizhu,$dingdanshijian){
$res = self::Get(self::$JF_BaseUrl . '?type=4' . '&ghzid=' . $ghzid. '&jifen=' . $jifen.'&yyid='.$yyid.'&caozuorenid='.$caozuorenid.'&caozuorenmigncheng='.urlencode($caozuorenmigncheng).'&beizhu='.urlencode($beizhu).'&dingdanshijian='.urlencode($dingdanshijian),"积分变更");
return true;
}
//使用预存款
public static function UseYuCunKuan($ghzid,$yucunkuan,$yyid,$yucunkuanleixing,$caozuorenid,$caozuorenmigncheng,$beizhu,$dingdanshijian)
{
$res = self::Get(self::$JF_BaseUrl . '?type=5' . '&ghzid=' . $ghzid. '&yucunkuan=' . $yucunkuan.'&yyid='.$yyid.'&yucunkuanleixing='.$yucunkuanleixing.'&caozuorenid='.$caozuorenid.'&caozuorenmigncheng='.urlencode($caozuorenmigncheng).'&beizhu='.urlencode($beizhu).'&dingdanshijian='.urlencode($dingdanshijian),"预存款变更");
return true;
}
//二线预约
public static function ErXian($data,$nonce)
{
// $res= self::Post(self::$BaseUrl . '/erxianzhongzhuan.aspx?str='.$nonce,$data,'二线号源');
$res= self::Post(self::$BaseUrl . '/erxian.aspx?str='.$nonce,$data,'二线号源');
if($data['action']==2) return $res['gid']??false;
return $res['data']??true;
}
//发送短信
public static function SendMsg($r_yyid,$tel,$name,$time,$sex){
$yy_name='';
if($r_yyid==1){
$yyid=6;
$yy_name="现代妇儿秀英院区";
}
if($r_yyid==4){
$yyid=2;
$yy_name="现代妇儿府城院区";
}
$keshi="健康管理中心1区";
if($sex==1) $keshi="健康管理中心1楼男宾区";
if($sex==2) $keshi="健康管理中心2楼女宾区";
$sex_zh='';
if($sex==1) $sex_zh="先生";
if($sex==2) $sex_zh="女士";
//$content="时间:".$time.";科室:".$keshi."。温馨提醒:您的预约已成功,请在预约时间前 30 分钟达到科室凭身份证原件开单。建议您体检前3天清淡饮食、禁烟酒";
$content=$time." 健康体检。请提前10分钟凭身份证到".$yy_name.$keshi."签到。建议体检前3天清淡饮食、禁烟酒。体检当天需禁食禁水空腹6小时以上";
$url=self::$BaseUrl."/tuisong.aspx?yyid=".$yyid."&type=8&mobile=".$tel."&msg1=".urlencode($name)."&msg2=".urlencode($content);
self::get($url,"短信发送");
}
//发送验证码
public static function SendYanZhengMaCode($r_yyid,$tel,$code){
if($r_yyid==1){
$yyid=6;
$yy_name="现代妇儿秀英院区";
}
if($r_yyid==4){
$yyid=2;
$yy_name="现代妇儿府城院区";
}
$url=self::$BaseUrl."/tuisong.aspx?yyid=".$yyid."&type=13&mobile=".$tel."&msg1=".urlencode($code);
self::get($url,"短信发送");
}
//通用短信发送
public static function PublicSendMsg($type,$r_yyid,$tel,$msg)
{
if($r_yyid==1){
$yyid=6;
$yy_name="现代妇儿秀英院区";
}
if($r_yyid==4){
$yyid=2;
$yy_name="现代妇儿府城院区";
}
$url=self::$BaseUrl."/tuisong.aspx?yyid=".$yyid."&type=".$type."3&mobile=".$tel."&msg1=".urlencode($msg);
self::get($url,"短信发送");
}
//获取优惠卷类型
public static function YouHuiQuan($data)
{
$nonce=uniqid();
//$res= self::Post(self::$BaseUrl . '/zhongzhuan.aspx?str='.$nonce,$data,'获取优惠卷类型');
$res= self::Post(self::$BaseUrl . '/youhuijuan.aspx?str='.$nonce,$data,'获取优惠卷类型');
return $res['data']??true;
}
//获取人员档案
public static function GetPersonInfo($data)
{
$res= self::Post(self::$BaseUrl . '/renyuan.aspx',$data,'获取人员档案');
if($data['action']==2) return $res;
return $res['data'] ?? false;
}
//获取报告解读日期和状态
public static function GetReportAnalysis($data)
{
$res= self::Post2(self::$BaseUrl . '/baogaojiedu.aspx',$data,'报告解读');
return $res;
}
//获取指定日期医生排班
public static function GetDoctorDateList($data)
{
$res= self::Post2(self::$BaseUrl . '/yisheng.aspx',$data,'医生排班');
return $res;
}
//微信推送
public static function WeiXinSend($data)
{
$nonce=uniqid();
$res= self::Post(self::$BaseUrl . '/sendwx.aspx?str='.$nonce,$data,'微信推送');
return $res;
}
public static function Get($url,$mark)
{
self::RequestLog($url, [], $mark, '.Net转发');
$response = Http::get($url);
if($mark=="短信发送"){
Log::info( $response->body());
return true;
}
if ($response->successful()) {
$res = $response->json();
self::$request->response_data = json_encode($res, JSON_UNESCAPED_UNICODE);
self::$request->save();
if ($res['code'] == "200") {
return $res;
} else {
throw new HttpResponseException(\Yz::echoError1("调用".$mark."接口失败:" . $res['msg']));
}
} else {
$status = $response->status();
// 获取响应体作为字符串
$body = $response->body();
self::$request->response_data = $body;
self::$request->save();
throw new HttpResponseException(\Yz::echoError1("调用".$mark."接口失败:" . $status . "body:" . $body));
}
}
public static function Post($url,$data,$mark)
{
self::RequestLog($url, $data, $mark, '.Net转发');
$response = Http::post($url,$data);
if ($response->successful()) {
$res = $response->json();
$res_string=json_encode($res, JSON_UNESCAPED_UNICODE);
$str_len = mb_strlen($res_string, 'utf-8');
$str_size = $str_len / 1024;
$save_res = $res_string;
if ($str_size > 10) $save_res = '{"data":"Row size too large"}';
self::$request->response_data = $save_res;
self::$request->save();
if (strpos($url, "renyuan.aspx") !== false and $data['action']==2) {
return $res;
}
if ($res['code'] == "200") {
return $res;
} else {
throw new HttpResponseException(\Yz::echoError1("调用".$mark."接口失败:" . $res['msg']));
}
} else {
$status = $response->status();
// 获取响应体作为字符串
$body = $response->body();
self::$request->response_data = $body;
self::$request->save();
throw new HttpResponseException(\Yz::echoError1("调用".$mark."接口失败:" . $status . "body:" . $body));
}
}
public static function Post2($url,$data,$mark)
{
self::RequestLog($url, $data, $mark, '.Net转发');
$response = Http::post($url,$data);
if ($response->successful()) {
$res = $response->json();
$res_string=json_encode($res, JSON_UNESCAPED_UNICODE);
$str_len = mb_strlen($res_string, 'utf-8');
$str_size = $str_len / 1024;
$save_res = $res_string;
if ($str_size > 10) $save_res = '{"data":"Row size too large"}';
self::$request->response_data = $save_res;
self::$request->save();
return $res;
} else {
$status = $response->status();
// 获取响应体作为字符串
$body = $response->body();
self::$request->response_data = $body;
self::$request->save();
throw new HttpResponseException(\Yz::echoError1("调用".$mark."接口失败:" . $status . "body:" . $body));
}
}
public static function RequestLog($url, $post_data, $mark, $code = 0)
{
self::CheckTableName();
foreach ($post_data as $key => $post_datum) {
$str_len = mb_strlen(json_encode($post_datum, JSON_UNESCAPED_UNICODE), 'utf-8');
$str_size = $str_len / 1024;
if ($str_size > 10) {
$post_data["$key"] = 'Row size too large';
}
}
$post_data = json_encode($post_data, JSON_UNESCAPED_UNICODE);
self::$request->code = $code;
self::$request->mark = $mark;
self::$request->post_data = $post_data == '[]' ? '{}' : $post_data;
self::$request->request_url = $url;
self::$request->save();
}
public static function CheckTableName()
{
$table_name = 'zz_peis_log_' . date('ym');
$table_count = DB::select('select count(1) as c from information_schema.TABLES where table_schema = ? and table_name = ?', [env('DB_DATABASE'), $table_name])[0];
if ($table_count->c === 0) {
Schema::create($table_name, function (Blueprint $table) {
$table->id();
$table->string('code', 50)->index();
$table->string('mark', 50)->index();
$table->text('post_data');
$table->text('response_data')->nullable();
$table->string('request_url', 2000);
$table->timestamps();
});
}
self::$request = new \App\Models\PEISLog();
self::$request->setTable($table_name);
}
}

@ -28,5 +28,4 @@ class AnalysisTypeController extends Controller
}
return \Yz::return(true,"查询完成",['list' => $analysis_list]);
}
}

@ -11,16 +11,7 @@ class CheckUpTypeController extends Controller
//H5获取体检类型名称和logo
public function GetList()
{
$openid = request('openid');
$user=DB::table('web_users')->where(['openid'=>$openid])->first();
$list=DB::table('checkup_type');
$list=$list->where(['status'=>1,'is_del'=>0]);
if($user->dev===1){ //开发人员开启婚检
$list=$list->orWhere('id',4);
}
$list=$list->get();
return \Yz::Return(true,"查询完成",['list'=>$list]);
$list=DB::table('checkup_type')->where(['status'=>1,'is_del'=>0])->get();
return \Yz::Return(true,"查询完成",['list'=>$list]);
}
}

@ -2,7 +2,6 @@
namespace App\Http\Controllers\API\H5;
use App\Http\Controllers\API\AspNetZhuanController;
use App\Http\Controllers\Controller;
use App\Services\ConfigService;
use Illuminate\Http\Request;
@ -40,18 +39,12 @@ class ComboController extends Controller
$doctor = $request->post('doctor');
$openid = $request->post('openid');
$search = $request->post('search');
$combo_sort = $request->post('combo_sort');
$combo_type = $request->post('combo_type');
$combo_crowd = $request->post('combo_crowd');
$combo_price = $request->post('combo_price');
$combo_item = $request->post('combo_item');
$checkup_type_id = $request->post('checkup_type_id');
$keshi_name=$request->post('keshi_name');
$price_range=$request->post('price_range');
$sort_price=$request->post('sort_price');
$sort_sale_count=$request->post('sort_sale_count');
$hospital = DB::table('hospitals')->select('id', 'name', 'address', 'latitude', 'longitude')->where(['id' => $hospital])->first();
$user = DB::table('web_users')->where(['openid' => $openid, 'status' => 1, 'is_del' => 0])->first();
@ -63,7 +56,7 @@ class ComboController extends Controller
$canshu = [];
$canshu[]=$person->sex;
$sql = '';
if (isset($combo_price) and !isset($price_range)) {
if (isset($combo_price)) {
$price_list = [
"1" => [0, 299],
"2" => [300, 999],
@ -75,18 +68,11 @@ class ComboController extends Controller
$sql = " and (a.price>=? and a.price<=?) ";
$canshu[] = $price_list[$combo_price][0];
$canshu[] = $price_list[$combo_price][1];
}
if (isset($price_range) and !isset($combo_price)) {
$sql = " and (a.price>=? and a.price<=?) ";
$canshu[] = $price_range[0];
$canshu[] = $price_range[1];
}
}
if(isset($checkup_type_id)){
$sql = $sql . " and a.checkup_type_id=? ";
$canshu[] = $checkup_type_id;
}else{
$sql = $sql . " and a.checkup_type_id<>4 ";
}
if (isset($combo_type)) {
$sql = $sql . " and a.type_id=? ";
@ -96,23 +82,12 @@ class ComboController extends Controller
$sql = $sql . " and a.crowd_id=? ";
$canshu[] = $combo_crowd;
}
if(isset($search) and !empty($search)){
$sql = $sql . " and a.name like ? ";
$canshu[] = '%'.$search.'%';
}
if(isset($sort_price) and $sort_price==1) $combo_sort=3;
if(isset($sort_price) and $sort_price==2) $combo_sort=4;
if(isset($sort_sale_count) and $sort_sale_count==1) $combo_sort=7;
if(isset($sort_sale_count) and $sort_sale_count==2) $combo_sort=8;
if (isset($combo_sort)) {
if ($combo_sort == 1) {
$sql = $sql . " ";
}
if ($combo_sort == 2) {
$sql = $sql . " order by a.sale_count desc";
$sql = $sql . " ";
}
if ($combo_sort == 3) {
$sql = $sql . " order by a.price";
@ -120,57 +95,14 @@ class ComboController extends Controller
if ($combo_sort == 4) {
$sql = $sql . " order by a.price desc";
}
if ($combo_sort == 5) {
$sql = $sql . " order by b.count desc";
}
if ($combo_sort == 6) {
$sql = $sql . " order by b.count ";
}
if ($combo_sort == 7) {
$sql = $sql . " order by a.sale_count ";
}
if ($combo_sort == 8) {
$sql = $sql . " order by a.sale_count desc";
}
}
if (!isset($combo_sort)) {
$sql = $sql . " order by a.order ";
}
if(isset($keshi_name)){
$combo_ids=DB::table('combo_items')->where(['status'=>1,'keshi_name'=>$keshi_name]) ->pluck('combo_id')->toArray();
$count = count($combo_ids);
$placeholders = implode(', ', array_fill(0, $count, '?'));
if(count($combo_ids)>0){
$sql = $sql . " and a.combo_id in ($placeholders) ";
$canshu =array_merge($canshu, $combo_ids);
}else{
$sql = $sql . " and a.combo_id in (?) ";
$canshu =array_merge($canshu, [0]);
}
}
if(isset($combo_item)){
$combo_ids=DB::table('combo_items')->whereIn('item_id',$combo_item)->where(['status'=>1])
->groupBy('combo_id')
->havingRaw('COUNT(DISTINCT item_id) = '.count($combo_item))
->pluck('combo_id')->toArray();
$count = count($combo_ids);
$placeholders = implode(', ', array_fill(0, $count, '?'));
if(count($combo_ids)>0){
$sql = $sql . " and a.combo_id in ($placeholders) ";
$canshu =array_merge($canshu, $combo_ids);
}else{
$sql = $sql . " and a.combo_id in (?) ";
$canshu =array_merge($canshu, [0]);
}
}
$combos = DB::select("select * from combos as a LEFT JOIN (
select combo_id as c_id,count(*) as count from combo_items where status in(1) group by combo_id
) as b on a.combo_id=b.c_id where a.status=1 and a.sex in(?,0) " . $sql ." ", $canshu);
select combo_id as c_id,count(*) as count from orders where status in(2,4) group by combo_id
) as b on a.combo_id=b.c_id where a.status=1 and a.sex in(?,0)" . $sql, $canshu);
foreach ($combos as $key => $combo) {
$combo->count=$combo->count?$combo->count:0;
@ -188,33 +120,6 @@ select combo_id as c_id,count(*) as count from combo_items where status in(1) gr
'text_color' => '#34C292',
'color' => '#E9F8F3',
];
//多选一
$duo_xuan_yi=[];
if(json_decode($combo->duo_xuan_yi)){
$N1=json_decode($combo->duo_xuan_yi);
foreach ($N1 as $k=>$v){
$duo_xuan_yi[$k][]=[
'zu_name'=>$v->组名称,
'item_list'=>[]
];
foreach ($v->包含项目 as $k2=>$v2){
$duo_xuan_yi[$k]['item_list'][]=
[
'item_id' =>$v2->Id,
'item_name' => $v2->名称,
'price'=>$v2->价格
];
}
}
}
$combo->duo_xuan_yi =$duo_xuan_yi;
}
$hospital_info = $hospital;
@ -228,46 +133,12 @@ select combo_id as c_id,count(*) as count from combo_items where status in(1) gr
'id' => $doctor,
'name' => '张大夫'
];
//获取套餐价格分布
$step = 500;
$maxPrice = 20000 + $step;
$result=DB::select("SELECT FLOOR(price / ?) * ? AS price_range_start, COUNT(*) AS count
FROM combos
WHERE price >= 0 AND price < ?
GROUP BY price_range_start;",[$step,$step,$maxPrice]);
$price_ranges = [];
for ($i = 0; $i <= 20000; $i += $step) {
$price_ranges[$i] = 0;
}
foreach ($result as $row) {
if (isset($price_ranges[$row->price_range_start])) {
$price_ranges[$row->price_range_start] = $row->count;
}
}
$formatted_price_ranges = [];
$formatted_price_ranges[]=['start' => 0,
'count' => 0];
foreach ($price_ranges as $start => $count) {
// 如果你想包括结束值,可以添加 'end' 键,例如:'end' => $start + 99
$formatted_price_ranges[] = [
'start' => $start,
'count' => $count
];
}
$price_max_min=DB::select("SELECT
MAX(price) AS highest_price,
MIN(price) AS lowest_price
FROM combos;");
return \Yz::Return(true, '获取成功', [
'list' => $combos,
'hospital' => $hospital_info,
'doctor' => $doctor_info,
'info' => $info,
'price_range' => $formatted_price_ranges,
'price_max_min' =>isset($price_range)?$price_range:[0,$maxPrice],
'price_max' =>$maxPrice,
'step' => $step,
]);
}
@ -278,11 +149,9 @@ FROM combos;");
$crowd = DB::table('combo_crowd')->get();
$sort_list = [
["id" => 1, 'name' => '综合排序'],
["id" => 2, 'name' => '销售最多'],
["id" => 2, 'name' => '预约最多'],
["id" => 3, 'name' => '低价优先'],
["id" => 4, 'name' => '高价优先'],
["id" => 5, 'name' => '项目最多'],
["id" => 6, 'name' => '项目最少'],
];
$price_list = [
['name' => '300以下', 'id' => 1],
@ -306,26 +175,14 @@ FROM combos;");
$hospital_id = request('hospital');
$combo_id = request('combo_id'); //购买的套餐id
$item_ids = request('item_ids'); //自选项目ids
$duo_xuan_yi = request('duo_xuan_yi'); //多选1
$group_id = request('group_id'); //团检登记id
$wj_flag= request('wj'); //问卷标记
$coupon_id=request('coupon_id'); //代金券id
$person_id = request('person_id'); //就诊人id
$person=DB::table('web_user_person')->where(['id' => $person_id,'is_del'=>0])->first();
if(!$person) return \Yz::echoError1("用户不存在");
if (!isset($hospital_id)) return \Yz::echoError1("医院id不能为空");
$hospital = DB::table('hospitals')->where(['id' => 1, 'status' => 1, 'is_del' => 0])->first();
if(isset($wj_flag) and $wj_flag==1){
$wj_zhekou=config('app.globals.Wj_ZheKou');//问卷过来的折扣率
}
$combo_info = false;//套餐信息
$pay_item_count = 0;//需自费项目个数
$all_original_price = 0;
$true_price = 0;
$nmr_list=[];
if (isset($combo_id) and $combo_id != 0) {
// $combo=DB::table('combos')->where(['hospital_id'=>$hospital_id,'combo_id'=>$combo_id,'status'=>1])->first();
$combo = DB::select("select a.*,b.*,c.name as crowd_name from combos as a LEFT JOIN (
@ -333,42 +190,9 @@ select combo_id as c_id,count(*) as sale_count from orders where status in(2,4)
) as b on a.combo_id=b.c_id left join combo_crowd as c on a.crowd_id=c.id where a.combo_id=? and a.status=1 ", [$combo_id]);
if (!$combo) return \Yz::echoError1("套餐不存在");
$combo = $combo[0];
//构建多选一数据
$Nx1_arrInfo=[];
if(isset($duo_xuan_yi) and !empty($duo_xuan_yi)){
$combo_Nx1=json_decode($combo->duo_xuan_yi,true);
foreach ($duo_xuan_yi as $r_k=>$r_v){
foreach ($combo_Nx1 as $k=> $n1v){
if($r_v['zu_name'] == $n1v['组名称']){
foreach ($n1v['包含项目'] as $k2 => $v2){
if($v2['Id'] == $r_v['item_id']){
if($v2['科室名称']=='影像科'){
$nmr_list[]=[
'item_id' => $v2['Id'],
'name' => $v2['名称'],
'price' => $v2['价格'],
];
}
$Nx1_arrInfo[] = [
'id' => $v2['Id'],
'name' => $v2['名称'],
'desc' => $v2['简介'],
'keshi_name' => $v2['科室名称'],
];
}
}
}
}
}
}
$combo_info['hospital_name'] = $hospital->name;
$combo_info['combo_name'] = $combo->name;
$combo_info['combo_sex'] = $combo->sex;
$combo_info['crowd_name'] = $combo->crowd_name;
$combo_info['img'] = $combo->cover;
$combo_info['sale_count'] = $combo->sale_count==null?0:$combo->sale_count;
@ -392,30 +216,23 @@ select combo_id as c_id,count(*) as sale_count from orders where status in(2,4)
$combo_info['original_price'] = $combo->original_price;
$all_original_price += $combo_info['original_price'];
$combo_items = json_decode($combo->items, true);
$combo_items=array_merge($combo_items,$Nx1_arrInfo); //合并多选一
$groupedData = [];
$comboItemCount=0;
foreach ($combo_items as $item) {
$keshiName = $item['keshi_name'];
if($keshiName<>'材料费'){
$comboItemCount++;
}
if (!isset($groupedData[$keshiName])) {
$groupedData[$keshiName] = [];
}
$groupedData[$keshiName][] = $item;
}
foreach ($groupedData as $keshiName => $children) {
$combo_info['items'][] = [
'keshi_name' => $keshiName,
'children' => $children
];
}
$combo_info['items']= $this->KeShiPaiXu($combo_info['items']);
$pay_item_count += $combo->item_count;
$true_price += $combo_info['price'];
$combo_info['tags'][0]['text']=$comboItemCount. '个项目';
//如果有影像科则存储在nmr_list
$comboItem=DB::table('combo_items')->where(['combo_id' => $combo_id, 'status' => 1,'keshi_name'=>'影像科'])->get();
if(count($comboItem)>0){
@ -423,28 +240,19 @@ select combo_id as c_id,count(*) as sale_count from orders where status in(2,4)
$nmr_list[]=[
'item_id' => $item->item_id,
'name' => $item->name,
'price' => $item->price,
];
}
}
}
$items_info = false;//自选项目信息
$zixuan_item=[];
if (isset($item_ids) and !empty($item_ids)) {
$item_price = 0;
$price = 0;
$items_original_price = 0;
$items = DB::table('items')->whereIn('item_id', $item_ids)->where(['status' => 1])->get();
$zixuan_item=$items;
$groupedData = [];
foreach ($items as $item) {
//判断套餐项目和自选项目是否冲突
if(isset($combo_items)){
foreach ($combo_items as $comboitem) {
if($comboitem['id']==$item->item_id) return \Yz::echoError1($item->name."已经存在,不可重复选择");
}
}
$item_price = bcadd($item_price, $item->price, 2);
// $price=$price+$item->price;
$price = bcadd($price, $item->price, 2);
// $all_original_price+=$item->original_price;
$all_original_price = bcadd($all_original_price, $item->original_price, 2);
// $items_original_price+=$item->original_price;
@ -453,23 +261,17 @@ select combo_id as c_id,count(*) as sale_count from orders where status in(2,4)
if (!isset($groupedData[$keshiName])) {
$groupedData[$keshiName] = [];
}
$groupedData[$keshiName][] = ['desc' => $item->jianjie, 'name' => $item->name,'price'=>$item->price,'original_price'=>$item->original_price,'id'=>$item->item_id];
$groupedData[$keshiName][] = ['desc' => $item->jianjie, 'name' => $item->name,'price'=>$item->price];
//如果有影像科则存储在nmr_list字段
if($item->keshi_name=='影像科'){
$nmr_list[]=[
'item_id' => $item->item_id,
'name' => $item->name,
'price' => $item->price,
];
}
}
if(isset($wj_flag) and $wj_flag==1){
$item_price=number_format($item_price*$wj_zhekou, 2, '.', '') ;
}
$items_info['price'] =$item_price;
$items_info['price'] = $price;
$items_info['original_price'] = $items_original_price;
foreach ($groupedData as $keshiName => $children) {
$items_info['items'][] = [
@ -477,16 +279,15 @@ select combo_id as c_id,count(*) as sale_count from orders where status in(2,4)
'children' => $children
];
}
$items_info['items']= $this->KeShiPaiXu($items_info['items']);
$pay_item_count += count($items);
$true_price += $items_info['price'];
}
//调用his接口查询用户积分和预存款计算可以抵扣的金额
$integral_money = 90;//积分抵扣金额
$save_money = 150;//预存款抵扣金额
$coupon_money = 50;//优惠券抵扣金额
//用户真实支付价格,应减去抵扣(二期实现)
$group_info = false;
@ -507,34 +308,9 @@ select combo_id as c_id,count(*) as sale_count from orders where status in(2,4)
$lose_price=$group_info[0]['tongshou_xiane']- $true_price;
if($lose_price<0) $lose_price=0;
}
$true_price = $true_price + $group_info[0]['sixi_zong_ji_jin_e'];
$true_price = ($true_price - $group_info[0]['tongshou_xiane']) > 0 ? $true_price - $group_info[0]['tongshou_xiane'] : 0;
//如果有多选一项目
//构建多选一数据
$Nx1_arrInfo=[];
if(isset($duo_xuan_yi) and !empty($duo_xuan_yi) and (!isset($combo_id) or $combo_id == 0)){
foreach ($duo_xuan_yi as $r_k=>$r_v){
$Nx1_arrInfo[]=[
'id' => $r_v['item_id'],
'name' => $r_v['item_name'],
];
}
}
$group_info[0]['items'] =array_merge($group_info[0]['items'],$Nx1_arrInfo); //合并多选一
foreach ($zixuan_item as $item) {
//判断团检套餐项目和自选项目是否冲突
if (isset( $group_info[0]['items'])) {
foreach ( $group_info[0]['items'] as $group_info_item) {
if ($group_info_item['id'] == $item->item_id) return \Yz::echoError1($item->name . "已经存在,不可重复选择");
}
}
}
// return \Yz::Return(true,"",$group_info[0]['items']);
$all_items = DB::table('items')->where(['status' => 1])->get();
$item_new = [];
foreach ($group_info[0]['items'] as $item) {
@ -548,7 +324,6 @@ select combo_id as c_id,count(*) as sale_count from orders where status in(2,4)
$nmr_list[]=[
'item_id' => $it->item_id,
'name' => $it->name,
'price' => $it->price,
];
}
break;
@ -574,43 +349,6 @@ select combo_id as c_id,count(*) as sale_count from orders where status in(2,4)
}
}
$temp_nmr=[];
$keywords = ['磁'];
foreach ($nmr_list as $key=>$item){
foreach ($keywords as $index => $keyword) {
if (strpos($item['name'], $keyword) !== false) {
// 如果找到关键字,且结果数组中还没有该关键字的记录,则初始化
if (!isset($temp_nmr[$index])) {
$temp_nmr[$index] = [
'item_id' => $item['item_id'],
'name' => $item['name'],
'price' => $item['price'],
];
} else {
// 如果已经存在记录,只拼接名称
$temp_nmr[$index]['name'] .= ' / ' . $item['name'];
}
}
}
}
// 将结果数组转换为最终格式
$finalResult = [];
foreach ($temp_nmr as $index => $data) {
$finalResult[] = [
'item_id' => $data['item_id'],
'name' => $data['name'],
'price' => $data['price']
];
}
$nmr_list=$finalResult;
//使用优惠券
if(isset($coupon_id) and !empty($coupon_id)){
if($true_price==0) return \Yz::echoError1("金额为0无需使用优惠券");
$true_price=$this->useYouHuiQuan($true_price,$person,$coupon_id);
}
$data = [
'group_info' => $group_info,
@ -623,9 +361,7 @@ select combo_id as c_id,count(*) as sale_count from orders where status in(2,4)
'original_price' =>number_format($all_original_price, 2, '.', '') ,//总原价
'pay_item_count' => $pay_item_count,//需要付费的项目数量
'lose_price'=>number_format($lose_price, 2, '.', ''),//剩余的不用就会浪费的金额
// 'nmr_list' => $nmr_list,//核磁项目列表
'nmr_list' => [],//不返回给前端了
'nmr_list2' => $nmr_list//核磁项目列表,重新定义一个字段用于前端携带返回
'nmr_list' => $nmr_list//核磁项目列表
];
return \Yz::Return(true, "查询成功", $data);
}
@ -639,14 +375,6 @@ select combo_id as c_id,count(*) as sale_count from orders where status in(2,4)
->whereIn('a.combo_id', $combo_ids)->where(['a.status' => 1])->get();
foreach ($combos as $key => $combo) {
$combo->items = json_decode($combo->items, true);
$item_list=[];
foreach ($combo->items as $key => $item) {
if($item['keshi_name']<>'材料费'){
$item_list[]=$item;
}
}
$item_list=$this->KeShiPaiXu($item_list);
$combo->items=$item_list;
$count = DB::table('orders')->where(['combo_id' => $combo->combo_id])->whereIn('status', [2, 4])->count();
$combo->saleCount = $count;
}
@ -706,10 +434,10 @@ select combo_id as c_id,count(*) as sale_count from orders where status in(2,4)
$ids= "'" . implode("','", $topTwoIndexes) . "'";
$sex=$person->sex;
$combos = DB::select("select * from combos as a LEFT JOIN (
select combo_id as c_id,count(*) as count from orders where status in(2,4) group by combo_id
) as b on a.combo_id=b.c_id where a.status=1 and a.combo_id in (".$ids.") and a.sex in(".$sex.",0)");
) as b on a.combo_id=b.c_id where a.status=1 and a.combo_id in (".$ids.")");
foreach ($combos as $key => $combo) {
@ -742,7 +470,6 @@ select combo_id as c_id,count(*) as count from orders where status in(2,4) group
return \Yz::Return(true, "查询完成", ['combos' => $list]);
}
function jaccard_similarity($set1, $set2) {
// 计算交集
$intersection = array_intersect($set1, $set2);
@ -755,81 +482,4 @@ select combo_id as c_id,count(*) as count from orders where status in(2,4) group
// 返回Jaccard相似度
return count($intersection) / count($union);
}
//使用优惠券
public function useYouHuiQuan($true_price,$person,$coupon_id){
$env=config('app.globals.Env');
//如果使用了代金券
if(isset($coupon_id) and !empty($coupon_id)){
if($true_price==0) return \Yz::echoError1("无需使用代金券");
$quanInfo=false;
if($env=='pro') { //如果是正式环境
$AspNet=new AspNetZhuanController();
$data=[
'ghzid'=>$person->ghzid,
'action'=>1,
];
$YouHuiQuanList=$AspNet::YouHuiQuan($data);
foreach ($YouHuiQuanList as $key=>$quan){
if($quan['DZJID']==$coupon_id){
$quanInfo=$quan;
}
}
if(!!$quanInfo and $quanInfo['是否在有效内']===true and $quanInfo['TimeNuZTTextm']=="有效" and $quanInfo['ZT']==1){
}else{
return \Yz::echoError1("此代金券不可用");
}
$quanType=false;
$YouHuiQuanType=$AspNet::YouHuiQuan(['action'=>2]);
foreach ($YouHuiQuanType as $key=>$type){
if($quanInfo['DZJLBID']==$type['DZJLBID']){
$quanType=$type;
}
// if($type['TJXCXHX']==1 and ($type['MKJE']===0 || $type['MKJE']>=$true_price)){
// $YouHuiQuanType_ids[]=$type['DZJLBID'];
// }
}
if($quanType===false or $quanInfo===false) return \Yz::echoError1("此代金券不可用");
if($quanType['TJXCXHX']!=1 ) return \Yz::echoError1("此代金券不可用");
if($quanType['MKJE']==0 or $quanType['MKJE']>=$true_price){
//抵扣代金券金额
if($quanType['YHLX']==1){//抵扣券
$true_price=($true_price-$quanInfo['JE'])>0 ? $true_price-$quanInfo['JE']:0;
}
if($quanType['YHLX']==2){//抵扣券
$true_price=number_format($true_price*$quanType['DZBL'],2, '.', '');
}
}
}
return $true_price;
}
}
public function KeShiPaiXu($data)
{
// 给定的科室顺序
$sortedOrder = config('app.globals.KeShiPaiXu');
// 创建一个科室到其在期望顺序中位置的映射
$sortedOrderMap = array_flip($sortedOrder);
// 使用 usort 函数进行排序
usort($data, function($a, $b) use ($sortedOrderMap) {
// 获取两个科室在期望顺序中的位置
$posA = isset($sortedOrderMap[$a['keshi_name']]) ? $sortedOrderMap[$a['keshi_name']] : PHP_INT_MAX;
$posB = isset($sortedOrderMap[$b['keshi_name']]) ? $sortedOrderMap[$b['keshi_name']] : PHP_INT_MAX;
// 比较两个位置,确定排序
return $posA - $posB;
});
return $data;
}
}

@ -2,177 +2,41 @@
namespace App\Http\Controllers\API\H5;
use App\Http\Controllers\API\AspNetZhuanController;
use App\Http\Controllers\Controller;
use DateInterval;
use DatePeriod;
use DateTime;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class DoctorController extends Controller
{
//获取体检医生列表
public function GetList()
{
$date = request('date');
$hospital = request('hospital');
$month = request('month');
$doctor_id = request('doctor_id');
$person_id = request('person_id');
$checkup_type = request('checkup_type');
$zhou_firstday = request('zhou_firstday');
if(!isset($person_id)) return \Yz::echoError1("用户id缺失");
$personInfo=DB::table('web_user_person')->where('id',$person_id)->first();
$hospital_map = [
'h1' => '6',
'h4' => '2',
];
$datesArray = [];
if (isset($date)) {
$datesArray[] = $date;
}elseif(isset($month) and $month == 'all') {
// 循环30次每次获取一天后的日期
for ($i = 0; $i < 31; $i++) {
// 使用strtotime函数计算$i天后的日期然后用date函数格式化日期
$datesArray[] = date('Y-m-d', strtotime("+$i days"));
}
}
if (isset($month) and (strlen($month) == 7 or strlen($month) == 6)) {
$firstDay = strtotime($month . '-01');
// 获取该月的最后一天
$lastDay = strtotime('+1 month', $firstDay) - 86400; // 减去一天的秒数86400秒得到最后一天
// 从第一天到最后一天,逐天添加到数组中
$currentDay = $firstDay;
while ($currentDay <= $lastDay) {
$datesArray[] = date('Y-m-d', $currentDay);
$currentDay = strtotime('+1 day', $currentDay);
}
}
if (empty($datesArray)) return \Yz::Return(false,"参数错误");
$dnet = new AspNetZhuanController();
$res = $dnet->GetDoctorDateList([
"yyid" => $hospital_map["h$hospital"],
"data" => $datesArray,
"action" => "1"
]);
//return \Yz::Return(true,"",['data'=>$res]);
$list = [];
$keshi=[
'A0030090'=>'内科',
'A0030091'=>'妇科',
'A0030102'=>'外科'
];
$keshi_sex_list=[
'A0030116'=>'2',
'A0030106'=>'1'
];
if(isset($checkup_type) and $checkup_type == '4'){
$keshi_sex_list=[
'A0030087'=>'1',
'A0030089'=>'2'
];
}
if ($res['code'] == '200' && count($res['yisheng']) != 0) {
foreach ($res['yisheng'] as $key => $value) {
$keshiname='';
$keshi_sex='';
if(isset($keshi[$value['KSID']])){
$keshiname=$keshi[$value['KSID']];
}
if(isset($keshi_sex_list[$value['KSID']])){
$keshi_sex=$keshi_sex_list[$value['KSID']];
}
if($keshi_sex==$personInfo->sex){
$is_paiban=false;
if(isset($res['paiban'])){
foreach ($res['paiban'] as $key => $date_value) {
foreach ($date_value as $key2 => $value2) {
if($value2['YSID']== $value['U_ID'] and $value2['KSID']==$value['KSID']){
$is_paiban=true;
break;
}
}
if($is_paiban) break;
}
}
if($is_paiban){
$list[] = [
'head_img' => 'data:image/jpeg;base64,' . $value['U_IMG'],
'name' => $value['U_NAME'],
'id' => $value['U_ID'],
'level' => $value['ZC_NAME'],
'hospital' => '',
'time' => $value['U_GDPB'],
'desc' => $value['U_JIANJIE'],
'keshiname'=>$keshiname,
'keshi_id'=>$value['KSID'],
'keshi_sex'=>$keshi_sex,
];
}
}
}
//获取体检医生列表
public function GetList()
{
$date =request('date');
$list=[
[
'head_img'=>'/storage/20240822/yisheng.png',
'name'=>'李医生',
'level'=>'副主任医师',
'hospital'=>'秀英',
'time'=>'周二下午、周三、五上午',
'desc'=>'擅长:产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠'
],
[
'head_img'=>'/storage/20240822/yisheng.png',
'name'=>'张医生',
'level'=>'副主任医师',
'hospital'=>'秀英',
'time'=>'周二下午、周三、五上午',
'desc'=>'擅长:产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠'
],
[
'head_img'=>'/storage/20240822/yisheng.png',
'name'=>'王医生',
'level'=>'副主任医师',
'hospital'=>'秀英',
'time'=>'周二下午、周三、五上午',
'desc'=>'擅长:产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠,产科急危重症抢救及高危妊娠'
],
];
return \Yz::Return(true,"查询完成",['list'=>$list]);
}
$paiban=[];
$dates=[];
if(isset($month) and (strlen($month) == 7 or strlen($month) == 6) and isset($doctor_id)){
$k=0;
foreach ($res['paiban'] as $key => $date_value) {
foreach ($date_value as $key2 => $value2) {
if($value2['YSID']==$doctor_id and $keshi_sex_list[$value2['KSID']]==$personInfo->sex){
$paiban[]=$value2;
}
}
}
$firstDay = date("Y-m-d", strtotime($month . "-01"));
// 获取当月的最后一天
$lastDay = date("Y-m-t", strtotime($month));
for ($i = $firstDay; $i <= $lastDay; $i = date("Y-m-d", strtotime($i . " +1 day"))) {
foreach ($paiban as $key => $value) {
if(date('Y-m-d', strtotime($value['PBRQ']))==$i){
$dates[]=[
'date'=>$i,
'paiban'=>$value,
];
}
}
$k++;
}
}
//7日内的日期
$startDate = new DateTime('today'); // 设置开始时间为今天
if(isset($zhou_firstday)){
$startDate = new DateTime($zhou_firstday);
}
$endDate = clone $startDate;
$endDate->modify('+6 days'); // 结束时间为今天之后的第6天
$period = new DatePeriod($startDate, new DateInterval('P1D'), $endDate);
$week7=[];
foreach ($period as $date) {
$f_date=$date->format('Y-m-d');
$xingqi=\App\Lib\Tools::GetWeekName($f_date);
$week7[]=[
'date'=>$f_date,
'xingqi'=>$xingqi
];
}
$f_date=$endDate->format('Y-m-d');
$xingqi=\App\Lib\Tools::GetWeekName($f_date);
$week7[] = [
'date'=>$f_date,
'xingqi'=>$xingqi
];
return \Yz::Return(true, "查询完成", ['list' => $list, 'paiban' => $dates, 'week7' => $week7]);
}
}

@ -2,14 +2,11 @@
namespace App\Http\Controllers\API\H5;
use App\Http\Controllers\API\AspNetZhuanController;
use App\Http\Controllers\Controller;
use App\Services\ComboItemGroupService;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use App\Services\OrderService;
class FenzhenController extends Controller
{
@ -18,65 +15,16 @@ class FenzhenController extends Controller
public function abandon()
{
// 这里放 弃检逻辑
$id = request('id');
$xmid = request('xmid');
$orderInfo = DB::table('orders')->where('id', $id)->first();
if (!$orderInfo) return \Yz::echoError1("订单不存在");
$service = new ComboItemGroupService();
$q = $service->QiJian($orderInfo->tj_number, $orderInfo->name, [$xmid]);
if ($q['status'] === true) {
self::fenzhenAbandon($orderInfo, $xmid);
return \Yz::Return(true, "弃检成功", []);
} else {
return \Yz::echoError1($q['msg']);
}
}
public function fenzhenAbandon($orderInfo, $xmid)
{
$data = [
'name' => $orderInfo->name,
'id_number' => $orderInfo->id_number,
'uuid' => $orderInfo->tj_number,
'type' => '',
'check_type' => '1',
'sex' => $orderInfo->sex,
'birthday' => $orderInfo->birthday,
'phone' => $orderInfo->phone,
'registration_number' => $orderInfo->plan_number,
'items' => [],
'drops' => [(string)$xmid],
'regenerate' => '1',
'line_up' => '1',
'mute' => '2',
'show' => '1',
];
self::fz('abandon', $data);
return \Yz::Return(true, "弃检成功");
}
public function check()
{
// 这里放 检查是否有 体检引导的数据
$id_number = request('id_number');
$type = 1;
$list = DB::table('orders')->where(['id_number' => $id_number])->where('appointment_date', '>=', date('Y-m-d'))
->whereIn('status', [2, 4])->orderBy('id', 'desc')->get();
if (count($list) == 0) {
$type = 2;
$list = DB::table('orders')->where(['id_number' => $id_number])->whereIn('status', [2, 4])->where('tj_number', '!=', null)->get();
if (count($list) == 0) {
$type = 3;
$list = DB::table('orders')->where(['id_number' => $id_number])->whereIn('status', [2, 4])->orderBy('id', 'desc')->get();
}
} else {
$l = [$list[0]];
$list = $l;
}
return \Yz::Return(true, "弃检成功", [
'list' => $list,
'type' => $type
]);
$list = DB::table('orders')->where(['id_number' => $id_number])->whereIn('status', [2, 4])->get();
return \Yz::Return(true, "弃检成功", ['list' => $list]);
}
public function list()
@ -84,235 +32,67 @@ class FenzhenController extends Controller
$id = request('id');
$info = DB::table('orders')->where(['id' => $id])->whereIn('status', [2, 4])->first();
if (!$info) return \Yz::echoError1("查询就诊人订单失败");
if($info->check_read_status==1){
DB::table('orders')->where('id', $id)->update(['check_read_status' => 2]);
}
$end_time = date('H:i', strtotime($info->appointment_date . ' ' . $info->appointment_time) + (60 * 60 * 0.54));
$clinics = [];
$order = new OrderService();
$order_data = $order->DepartmentItemCount($info->id);
$clinics = $order_data['department_list'];
$report_day = $order_data['wait_day'];
$is_checked_sign_in = $order_data['is_checked_sign_in'];
$error_day = $report_day;
if ($report_day == -1) {
$report_day = false;
}
// return \Yz::Return(true, "查询成功", [
// 'a'=>$order_data
// ]);
$res = self::fz('time', [
'exam_id' => $info->tj_number ?? '??????????',
'start_time' => date('H:i', strtotime($info->appointment_date . ' ' . $info->appointment_time)),
'clinics' => $clinics
'clinics' => [[
"name" => "外科诊室",
"count" => 3
], [
"name" => "内科诊室",
"count" => 3
]]
]);
$KaHao='';//卡号
$person_ghzid = '';
$dnet = new AspNetZhuanController();
$res2 = $dnet->GetPersonInfo([
"zjh" => $info->id_number,
"action" => "2",
"ghzid"=>""
]);
$KaHao=isset($res2['data'][0]['KH'])?$res2['data'][0]['KH']:'';
$person_info = DB::table('web_user_person')->where('id', $info->web_user_id)->first();
if (!!$person_info) {
$person_ghzid = $person_info->ghzid;
}
if (!!$res) {
$time_line = $res['data']['time_line'];
$end_queue = $res['data']['end_queue'];
$clinic_map = [];
foreach ($time_line as $key => $item) {
if (isset($item['his_number'])) {
$clinic_map[] = $item['his_number'];
}
}
$last_time = strtotime('2024-10-10 ' . $time_line[count($time_line) - 1]['time'] . ':00');
if (!$res['data']['queue']) {
$push_end = false;
foreach ($clinics as $item) {
if (!in_array($item['keshi_id'], $clinic_map)) {
$push_end = true;
$item_count = $item['count'];
$in_time = date('H:i', $last_time);
$time_line = array_merge(array_splice($time_line, 0, count($time_line) - 1), [
[
"desc" => "预计 $in_time 进入队列",
"more" => 0,
"name" => $item['name'],
"status" => 1,
'count' => -1,
"time" => "$in_time",
"tip" => "剩余{$item_count}项正在排队中,"
]
], [$time_line[count($time_line) - 1]]);
$last_time = $last_time + (60 * 5);
}
}
if ($push_end) {
$in_time = date('H:i', $last_time);
$time_line = array_merge(array_splice($time_line, 0, count($time_line) - 1), [
[
"desc" => "结束时间 $in_time",
"more" => 0,
"name" => "体检结束",
"status" => -1,
'count' => -1,
"time" => "$in_time",
"tip" => ""
]
]);
}
}
$end_status = 0;
$tip_check_show = false;
foreach ($time_line as $time_line_item) {
if ($time_line_item['status'] == 4) {
$end_status += 1;
}
}
if (count($time_line) <= $end_status + 1) {
$tip_check_show = true;
$time_line[count($time_line) - 1]['status'] = 4;
}
// 插入 体检区外的 诊室
if (count($end_queue) != 0) {
foreach ($end_queue as $end_queue_item) {
$time_line[] = $end_queue_item;
}
}
// -1 报告未出 不能预约 报告解读 不显示
// 0 时间未到 不能预约 报告解读 不显示
// 1 时间已到 可以预约 报告解读
// 2 已经预约 报告解读
$check_report_status = -1;
$now_time = time();
// $now_time = strtotime('2024-11-07 00:00:00');
if (!!$res['data']['report']) {
if ($report_day !== false) {
$report_status = false;
$report_time = strtotime($res['data']['report'] . ' 00:00:00') + (60 * 60 * 24 * $report_day);
$report_time_show = date('m月d日', $report_time);
// 这里补充 获取 出具报告 时间的逻辑
if ($report_time < $now_time) {
$report_status = true;
}
if (!$report_status) {
$time_line[] = [
'time' => '',
'name' => '出具报告',
'status' => -1,
'count' => -1,
'desc' => "预计 $report_time_show 出具体检报告",
'tip' => '',
'more' => 0
];
} else {
$time_line[] = [
'time' => '',
'name' => '出具报告',
'status' => -1,
'count' => -1,
'desc' => "已出具体检报告 $report_time_show",
'tip' => '',
'more' => 0
];
}
$check_report_time = $report_time + (60 * 60 * 24);
$check_report_status = 0;
// $check_report_status = '2024年10月11日';
// 这里补充 获取 报告解读 时间的逻辑
if ($check_report_time < $now_time) {
if (!!$info->person_id) {
$user_info = DB::table('web_user_person')->where(['id' => $info->person_id])->first();
if (!!$user_info) {
$hospital_map = [
'h1' => '6',
'h4' => '2'
];
$dnet = new AspNetZhuanController();
$hid = $info->hospital_id;
$report_res = $dnet->GetReportAnalysis([
"yyrq" => date('Y-m-d', $check_report_time),
"ghzid" => $user_info->ghzid,
"yyid" => $hospital_map["h$hid"],
"action" => "1"
]);
switch ($report_res['code']) {
case '200':
$check_report_status = 2;
$show_date = date('m-d', strtotime($report_res['yyrq']));
$time_line[] = [
'time' => '',
'name' => '报告解读',
'status' => -1,
'count' => -1,
'desc' => "已预约 $show_date 报告解读",
'tip' => '',
'more' => 0
];
break;
case '199':
case '201':
$check_report_status = 1;
$time_line[] = [
'time' => '',
'name' => '报告解读',
'status' => -1,
'count' => -1,
'desc' => "可以预约报告解读",
'tip' => '',
'more' => 0
];
break;
case '202':
$check_report_status = 0;
$time_line[] = [
'time' => '',
'name' => '报告解读',
'status' => 1,
'count' => -1,
'desc' => "已完成报告解读",
'tip' => '',
'more' => 0
];
break;
}
}
}
} else {
$check_report_time_show = date('m月d日', $check_report_time);
$time_line[] = [
'time' => '',
'name' => '报告解读',
'status' => -1,
'count' => -1,
'desc' => "预计 $check_report_time_show 可以预约报告解读",
'tip' => '',
'more' => 0
];
}
$report_time = date('m月d日', strtotime($res['data']['report'] . ' 00:00:00') + (60 * 60 * 24 * 5));
$report_status = false;
// 这里补充 获取 出具报告 时间的逻辑
if (!$report_status) {
$time_line[] = [
'time' => '',
'name' => '出具报告',
'status' => -1,
'desc' => "预计 $report_time 出具体检报告",
'tip' => '',
'more' => 0
];
} else {
$time_line[] = [
'time' => '',
'name' => '出具报告',
'status' => -1,
'desc' => "已出具体检报告 $report_status",
'tip' => '',
'more' => 0
];
}
}
if (!$tip_check_show) {
$res['data']['end_time'] = date('H:i', $last_time);
}
$check_tip = false;
// \Yz::debug(['$is_checked_sign_in'=>$is_checked_sign_in,'$error_day'=>$error_day]);
if (!!$is_checked_sign_in) {
if ($error_day == -1) {
if (!!$tip_check_show) {
$et = $info->appointment_date . ' ' . $res['data']['end_time'] . ':00';
$check_tip = (time() - strtotime($et)) > (60 * 20);
}
$check_report_status = 0;
// $check_report_status = '2024年10月11日';
// 这里补充 获取 报告解读 时间的逻辑
if ($check_report_status == 0) {
$check_report_time = date('m月d日', strtotime($res['data']['report'] . ' 00:00:00') + (60 * 60 * 24 * 6));
$time_line[] = [
'time' => '',
'name' => '报告解读',
'status' => -1,
'desc' => "预计 $check_report_time 可以预约报告解读",
'tip' => '',
'more' => 0
];
} else {
$show_date = explode('年', $check_report_status)[1];
$time_line[] = [
'time' => '',
'name' => '报告解读',
'status' => -1,
'desc' => "已预约 $show_date 报告解读",
'tip' => '',
'more' => 0
];
}
}
return \Yz::Return(true, "获取成功", [
@ -321,21 +101,13 @@ class FenzhenController extends Controller
'sex' => $info->sex,
'combo_name' => $info->title,
'check_date' => $info->appointment_date,
'plan_number' => $info->plan_number,
'start_time' => $res['data']['start_time'] . ':00',
'end_time' => $res['data']['end_time'],
'yuji_end_time' => $res['data']['yuji_end_time'],
'yuji_use_time' => $res['data']['yuji_use_time'],
'use_time' => $res['data']['use_time'],
'qrcode' => $person_ghzid,
'tj_number' => $info->tj_number,
'ghzid' => $person_ghzid,
'kahao'=>$KaHao,
'end_time' => $res['data']['end_time'],
'qrcode' => '',
'code' => $info->appointment_number,
],
'list' => $time_line,
'report' => $check_report_status,
'check_tip' => $check_tip,
]);
} else {
return \Yz::Return(true, "获取成功", [
@ -344,21 +116,13 @@ class FenzhenController extends Controller
'sex' => $info->sex,
'combo_name' => $info->title,
'check_date' => $info->appointment_date,
'plan_number' => $info->plan_number,
'start_time' => $info->appointment_time,
'end_time' => $end_time,
'yuji_end_time' => $end_time,
'yuji_use_time' => '',
'use_time' => '',
'qrcode' => $person_ghzid,
'ghzid' => $person_ghzid,
'kahao'=>$KaHao,
'tj_number' => $info->tj_number,
'qrcode' => '',
'code' => $info->appointment_number,
],
'list' => [],
'report' => -1,
'check_tip' => false,
]);
}
}
@ -373,24 +137,8 @@ class FenzhenController extends Controller
'exam_id' => $info->tj_number ?? '??????????',
'clinic' => $clinic,
]);
$person_ghzid = '';
$person_info = DB::table('web_user_person')->where('id', $info->person_id)->first();
if (!!$person_info) {
$person_ghzid = $person_info->ghzid;
}
if (!!$res) {
if ($res['code'] == 200) {
$item_list = $res['data']['list'];
foreach ($item_list as $item_index => $item_info) {
$db_item = DB::table('items')
->where('item_id', $item_info['id'])
->first();
if (!!$db_item) {
$item_list[$item_index]['desc'] = self::item_desc($db_item);
} else {
$item_list[$item_index]['desc'] = '';
}
}
return \Yz::Return(true, "获取成功", [
'info' => [
'name' => $info->name,
@ -399,12 +147,10 @@ class FenzhenController extends Controller
'check_date' => $info->appointment_date,
'start_time' => $info->appointment_time,
'end_time' => '10:25',
'qrcode' => $person_ghzid,
'ghzid' => $person_ghzid,
'tj_number' => $info->tj_number,
'qrcode' => '',
'code' => $info->appointment_number,
],
'list' => $item_list,
'list' => $res['data']['list'],
]);
} else {
return \Yz::Return(false, $res['message']);
@ -414,24 +160,6 @@ class FenzhenController extends Controller
}
}
public function item_desc($item)
{
// $canqian = $item->can_qian_hou == '餐前' ? '餐前' : '';
$beizhu = !!$item->beizhu ? $item->beizhu : '';
$tishi = !!$item->tishi ? $item->tishi : '';
$ret = [];
// if (!!$canqian) {
// $ret[] = $canqian;
// }
if (!!$beizhu) {
$ret[] = $beizhu;
}
if (!!$tishi) {
$ret[] = $tishi;
}
return count($ret) == 0 ? '' : '(' . implode(',', $ret) . ')';
}
public function post($url, $data)
{
$data_string = json_encode($data, JSON_UNESCAPED_UNICODE);
@ -464,14 +192,10 @@ class FenzhenController extends Controller
$url_map = [
'time' => '/api/Open/TiJian/get',
'info' => '/api/Open/TiJian/info',
'search' => '/api/Open/TiJian/search',
'change' => '/api/Open/TiJian/change',
'export' => '/api/Open/TiJian/export',
'abandon' => '/api/Open/Queue/registration?client=open',
];
$url = env('FENZHEN_URL');
$res = self::post("$url{$url_map[$type]}", $content);
// /api/Open/TiJian/get
// /api/Open/TiJian/get
self::$log->callback = $res;
self::$log->save();
if (json_decode($res)) {

@ -53,9 +53,9 @@ class HomeController extends Controller
'icon' => '/assets/h5/tuanjianyuyue.png'
]],
'button' => [[[
'message' => '',
'message' => '暂未开放',
'name' => '健康问卷',
'jump' => '/pages/main/question/choose/choose',
'jump' => '/pages/main/cjwt/cjwt',
'icon' => '/assets/h5/a_jiankangwenjuan.png'
],
// [
@ -76,7 +76,7 @@ class HomeController extends Controller
'icon' => '/assets/h5/a_tijianyindao.png'
]], [[
'message' => '',
'name' => '报告解读预约',
'name' => '解读报告',
'jump' => 'XCX/pages/other/entry/index?path=/pages/outpatient/doctor-appointment/index&scene=1035&hospitalAreaId=6&departmentCode=A0030077&subDepartmentCode=4773794195699464904',
'icon' => '/assets/h5/a_jiedubaogao.png'
], [
@ -95,22 +95,17 @@ class HomeController extends Controller
'name' => '报告查询',
'jump' => '/pages/main/bgcx/bgcx',
'icon' => '/assets/h5/a_baogaochaxun.png'
],
[
'message' => '',
'name' => '健康宣教',
'jump' => '/pages/posts/posts/posts?type=4',
'icon' => '/assets/h5/xuanjiao.png'
],
[
], [
'message' => '暂未开放',
'name' => '检后复查',
'jump' => '/pages/main/cjwt/cjwt',
'icon' => '/assets/h5/a_jianhoufucha.png'
], [
'message' => '',
'name' => '我的订单',
'jump' => '/pages/main/order/order',
'icon' => '/assets/h5/a_wodedingdan.png'
]
]
]]
],
'color' => true,
];
@ -124,9 +119,9 @@ class HomeController extends Controller
{
$list = [
[
'message' => '',
'message' => '暂未开放',
'name' => '检前健康评估',
'url' => '/pages/main/question/question/question?id=4',
'url' => '',
'logo' => '/assets/h5/zhuyishixiang.png'
],
[

@ -4,20 +4,13 @@ namespace App\Http\Controllers\API\H5;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class HospitalExtraController extends Controller
{
//获取注意事项
public function GetReadme()
{
$type= request('type');
$readme_config="1、检前受检者保证充足睡眠时间保持良好身心状态。体检当日须空腹体检前一日避免油腻、辛辣刺激性食物勿饮酒彩超男士适量憋尿女士须憋足量尿。<br/>\n2、体检时着宽松衣物不要佩戴金属物品以防丢失或影响检查结果。<br/>\n3、做妇科检查的女士请避开生理期48小时内避免性生活。\n1未婚有性生活史选择检查妇科的需签署妇科知情同意书方可进行检查。<br/>\n4、孕期、哺乳期及半年内有备孕计划的男士、女士不建议做胸片、CT、钼靶、碳13、碳14检查。<br/>\n5、体检时服用特殊药品或身体有其它不适症状请及时向检查医师说明<br/>\n6、涉及幽门螺杆菌检查项目的碳13或14近期吃过胃药及消炎药的请提醒护士以免影响数值<br/>\n7、做过心脏支架、搭桥手术、四肢有钢钉钢板、腿部有严重静脉曲张者请您不要选做动脉硬化检测。<br/>\n8、体检结束后将指引单交回前台如未体检完成请勿将指引单带走。<br/>\n备注当日因各种原因未体检完成的请尽快补检完成。";
//type=2 婚检注意事项
if(isset($type) and $type==2){
$info=DB::table("articles")->where("id",75)->first();
$readme_config=$info->content;
}
return \Yz::Return(true,"查询完成",['content'=>$readme_config]);
}

@ -2,7 +2,6 @@
namespace App\Http\Controllers\API\H5;
use App\Http\Controllers\API\AspNetZhuanController;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
@ -14,56 +13,15 @@ class IntegralSaveMoneyCouponController extends Controller
{
$openid =request('openid');
$person_id =request('person_id');
$combo_id =request('combo_id');
$user=DB::table('web_users')->where(['openid'=>$openid,'status'=>1,'is_del'=>0])->first();
if(!$user) return \Yz::echoError1('openid对应用户不存在');
$person=DB::table('web_user_person')->where(['user_id'=>$user->id,'is_del'=>0,'id'=>$person_id])->first();
if(!$person) return \Yz::echoError1('就诊人信息查询失败');
$quan_ids=false;
if(isset($combo_id)){
$quan_ids=DB::table('coupons_combos')->where(['combo_id'=>$combo_id])->pluck('coupon_hisid')->toArray();
}
$jifen=0;
$yucunkuan=0;
$YouHuiQuanType_ids=[];
$coupon_list=[];
$env=config('app.globals.Env');
if($env=='pro') { //如果是正式环境
$AspNet=new AspNetZhuanController();
$jifen= $AspNet::GetJiFen_YuCunKuan(1,$person->ghzid);
$yucunkuan= $AspNet::GetJiFen_YuCunKuan(2,$person->ghzid);
$YouHuiQuanType=$AspNet::YouHuiQuan(['action'=>2]);
foreach ($YouHuiQuanType as $key=>$type){
if($type['TJXCXHX']==1){
$YouHuiQuanType_ids[]=$type['DZJLBID'];
}
}
if(count($YouHuiQuanType_ids)>0 and isset($combo_id)){ //如果没有选择套餐,则不显示优惠券
$data=[
'ghzid'=>$person->ghzid,
'action'=>1,
];
$YouHuiQuanList=$AspNet::YouHuiQuan($data);
foreach ($YouHuiQuanList as $key=>$quan){
if(in_array($quan['DZJLBID'],$YouHuiQuanType_ids) and $quan['是否在有效内']===true and $quan['TimeNuZTTextm']=="有效" and $quan['ZT']==1){
if(isset($combo_id) and !in_array($quan['DZJLBID'],$quan_ids)){continue;} //如果设置了套餐id,则比对券id是否绑定套餐只有绑定的才能显示
$coupon_list[]=[
'id'=>$quan['DZJID'],
"title"=>$quan['DZJLBMC'],
"date_range"=>[substr($quan['YSQKSSJ'],0,10),substr($quan['YSQJSSJ'],0,10)],
'price'=>$quan['JE'],
"desc"=>$quan['DZJLBMC']
];
}
}
}
}
if($env=='dev') {//如果是开发环境
$jifen=50;
$yucunkuan=20;
$coupon_list=[
if(!$user) return \Yz::echoError1('就诊人信息查询失败');
return \Yz::Return(true,"查询完成",[
'person'=>$person,
'integral'=>10,
'save_money'=>80,
'coupon_list'=>[
[
'id'=>1,
"title"=>"新人专属",
@ -78,43 +36,8 @@ class IntegralSaveMoneyCouponController extends Controller
'price'=>'60',
"desc"=>"满500可用"
]
];
}
return \Yz::Return(true,"查询完成",[
'person'=>$person,
'integral'=>$jifen,
'save_money'=>$yucunkuan,
'coupon_list'=>$coupon_list,
],
]);
}
//获取本单可用积分
public function UsableIntegralSaveMoney(){
$ysje =request('ysje');
$ssje =request('ssje');
$type =request('type'); //1积分2预存款预存款暂时不用此接口查
$openid =request('openid');
$person_id =request('person_id');
if(!isset($type)) return \Yz::echoError1("type不能为空");
$user=DB::table('web_users')->where(['openid'=>$openid,'status'=>1,'is_del'=>0])->first();
if(!$user) return \Yz::echoError1('openid对应用户不存在');
$person=DB::table('web_user_person')->where(['user_id'=>$user->id,'is_del'=>0,'id'=>$person_id])->first();
if(!$person) return \Yz::echoError1('就诊人信息查询失败');
$count=0;
$env=config('app.globals.Env');
if($env=='pro') { //如果是正式环境
$AspNet=new AspNetZhuanController();
$count= $AspNet::GetEnableCount($person->ghzid,$ysje,$ssje);
}
if($env=='dev') {//如果是开发环境
$count=30;
}
if($type==1){
return \Yz::Return(true,"查询完成",['keyong_jifen'=>$count]);
}
return \Yz::echoError1("查询失败");
}
}

@ -22,7 +22,6 @@ class ItemController extends Controller
$list = [];
$group_arr = [];
$group_list = [];
$items= $this->KeShiPaiXu($items);
foreach ($items as $item) {
if($item->sex <> $person->sex and $item->sex<>0){
continue;
@ -63,7 +62,7 @@ class ItemController extends Controller
'price' =>$item->price,
'original_price'=>$item->original_price,
'pinyin' => $item->pinyin,
'desc'=>$item->beizhu
'desc'=>$item->jianjie
];
@ -72,17 +71,4 @@ class ItemController extends Controller
}
return \Yz::Return(true,"查询成功",['list'=>$group_list]);
}
public function KeShiPaiXu($data){
$sortOrder =config('app.globals.KeShiPaiXu');
// 创建一个映射,用于快速查找每个科室名称在排序数组中的位置
$sortMap = array_flip($sortOrder);
// 使用 sortBy 方法进行排序
$sortedData = $data->sortBy(function ($data) use ($sortMap) {
// 如果科室名称存在于映射中,则返回其位置;否则返回一个很大的数字,使其排在最后
return isset($sortMap[$data->keshi_name]) ? $sortMap[$data->keshi_name] : PHP_INT_MAX;
});
return $sortedData;
}
}

@ -2,7 +2,6 @@
namespace App\Http\Controllers\API\H5;
use App\Http\Controllers\API\AspNetZhuanController;
use App\Http\Controllers\Controller;
use DateTime;
use Illuminate\Http\Request;
@ -15,64 +14,18 @@ class NMRController extends Controller
{
$hospital_id =request('hospital_id');
$month=request('month');
$list=[
[
'date'=>'2024-9-29',
'count'=>20,
],
[
'date'=>'2024-9-30',
'count'=>10,
],
// 获取给定月份的第一天
$firstDayOfMonth = date('Y-m-01', strtotime($month));
// 获取给定月份的最后一天
$lastDayOfMonth = date('Y-m-t', strtotime($month));
$today = date('Y-m-d');
$days = [];
for ($date = $firstDayOfMonth; $date <= $lastDayOfMonth; $date = date('Y-m-d', strtotime($date . ' +1 day'))) {
// 如果当前日期大于或等于今天的日期,则添加到数组中
if ($date >= $today) {
$days[] = $date;
}
}
$aspnet=new AspNetZhuanController();
$list=[];
$nmr=$aspnet::ErXian(['yyid'=>6,'data'=>$days ,'action'=>"1"],uniqid());
//获取每日数量
foreach($nmr as $k=>$v){
$t_v=[];
foreach ($v as $k1 => $v1) {
if($v1['keyong']==0){
$t_v[]=$v1;
}
}
$list[]=[
'date'=>$k,
'count'=>count($t_v)
];
}
//获取整月日期
// 获取当月的第一天
$firstDay = date("Y-m-d", strtotime($month . "-01"));
// 获取当月的最后一天
$lastDay = date("Y-m-t", strtotime($month));
$dates = array();
$k=0;
for ($i = $firstDay; $i <= $lastDay; $i = date("Y-m-d", strtotime($i . " +1 day"))) {
$xingqi=\App\Lib\Tools::GetWeekName($i);
$dates[]=[
'date'=>$i,
'xingqi'=>$xingqi,
'count'=>0
];
foreach ($list as $item) {
if($item['date'] == $i){
$dates[$k]=[
'date'=>$i,
'xingqi'=>$xingqi,
'count'=>$item['count']
];
break;
}
}
$k++;
}
return \Yz::Return(true,"查询完成",['list'=>$dates]);
];
return \Yz::Return(true,"查询完成",['list'=>$list]);
}
//核磁当日号源
@ -88,88 +41,45 @@ class NMRController extends Controller
$dateTimeClone->modify("$i days"); // 修改日期
$days7[] = $dateTimeClone->format('Y-m-d'); // 按照需要的格式添加到结果数组
}
$list=[
[
'id'=>1,
'status'=>1,
'time'=>'10:15'
],
[
'id'=>1,
'status'=>1,
'time'=>'10:45'
]
];
$weeklist=[[
'date'=>'2024-09-28',
'count'=>20,
]
$aspnet=new AspNetZhuanController();
];
$week7=[];
$currentDate = new DateTime();
$nmr=$aspnet::ErXian(['yyid'=>6,'data'=>$days7,'action'=>"1"],uniqid());
//获取每日数量
foreach($nmr as $k=>$v){
$t_v=[];
foreach ($v as $k1 => $v1) {
$givenDate = new DateTime($v1['DTime']);
if($v1['keyong']==0 and $givenDate > $currentDate){
$t_v[]=$v1;
}
}
$xingqi=\App\Lib\Tools::GetWeekName($k);
$k=0;
foreach ($days7 as $date) {
$xingqi=\App\Lib\Tools::GetWeekName($date);
$week7[]=[
'date'=>$k,
'count'=>count($t_v),
'date'=>$date,
'count'=>0,
'xingqi'=>$xingqi
];
}
$list=[];
if(isset($nmr[$date])){
foreach($nmr[$date] as $k=>$v){
$givenDate = new DateTime($v['DTime']);
if($givenDate > $currentDate){
$list[]=[
'id'=>$v['TimeNum'],
'time'=>$v['Time'],
'status'=>$v['keyong']==="0"?1:2,
foreach ($weeklist as $plan) {
if($plan['date'] == $date){
$week7[$k]=[
'date'=>$date,
'xingqi'=>$xingqi,
'count'=>$plan['count']
];
break;
}
}
$k++;
}
// $list=[
// [
// 'id'=>1,
// 'status'=>1,
// 'time'=>'10:15'
// ],
// [
// 'id'=>1,
// 'status'=>1,
// 'time'=>'10:45'
// ]
// ];
// $week7=[];
// $k=0;
// foreach ($days7 as $date) {
// $xingqi=\App\Lib\Tools::GetWeekName($date);
// $week7[]=[
// 'date'=>$date,
// 'count'=>0,
// 'xingqi'=>$xingqi
// ];
// foreach ($weeklist as $plan) {
// if($plan['date'] == $date){
// $week7[$k]=[
// 'date'=>$date,
// 'xingqi'=>$xingqi,
// 'count'=>$plan['count']
// ];
// break;
// }
// }
// $k++;
// }
return \Yz::Return(true,"查询完成",['list'=>$list,'weeklist'=>$week7]);
}
//检查核磁时间是否可用
public function CheckEnableNmrTime(){
$date=request('date');
$time=request('time');
$service=new \App\Services\NmrService();
$res=$service->CheckEnableNmrTime($date,$time);
return \Yz::Return($res['status'],'',['datetime'=>$res['datetime']]);
}
}

File diff suppressed because it is too large Load Diff

@ -2,10 +2,8 @@
namespace App\Http\Controllers\API\H5;
use App\Http\Controllers\API\AspNetZhuanController;
use App\Http\Controllers\API\XCXApiController;
use App\Http\Controllers\Controller;
use App\Services\OrderService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
@ -88,15 +86,12 @@ class PayController extends Controller
//判断如果支付成功,更改订单状态
if ($res['data']['trade_state'] === 'SUCCESS') {
$order = DB::table('orders')->where(['order_number' => $order_number])->first();
if($order->status == 1){
DB::table('orders')->where(['id' => $order->id])->update([
'status' => 2,
'pay_time' => date('Y-m-d H:i:s'),
]);
$Finish = new OrderController();//预约体检
$Finish->Finish($order_number);
}
DB::table('orders')->where(['id' => $order->id])->update([
'status' => 2,
'pay_time' => date('Y-m-d H:i:s'),
]);
$Finish = new OrderController();//预约体检
$Finish->Finish($order_number);
return \Yz::Return(true, "支付成功", ['id' => $order->id]);
} else {
return \Yz::echoError1("支付失败" . $res['data']['trade_state']);
@ -110,51 +105,40 @@ class PayController extends Controller
//判断订单状态是否是已经支付,判断是否到检,
$openid = request('openid');
$id = request('id');
if(!isset($id)) return \Yz::echoError1("id不能为空");
$orderInfo = DB::table('orders')->where(['id' => $id,])->first();
if(!$orderInfo) return \Yz::echoError1("未找到有效订单");
$userInfo = DB::table('web_users')->where(['id' => $orderInfo->web_user_id])->first();
if($openid != $userInfo->openid) return \Yz::echoError1("无权操作此订单");
$service = new OrderService();
$res=$service->Refund($id);
if(!$res['status']) return \Yz::echoError1($res['msg']);
if($res['status']) return \Yz::Return(true, "退款成功", []);
}
//机器人退款
public function AutoRefund(){
$id = request('id');
$key = request('key');
if($key != "dfsd2Ajd256SDI02") return \Yz::echoError1("权限校验错误");
if(!isset($id)) return \Yz::echoError1("id不能为空");
$orderInfo = DB::table('orders')->where(['id' => $id])->first();
$person=DB::table('web_user_person')->where(['id' => $orderInfo->person_id])->first();
$service = new OrderService();
$res=$service->Refund($id);
if(!$res['status']) return \Yz::echoError1($res['msg']);
if($res['status']){
//婚检发送提醒
$keshi="健康管理中心";
if($person->sex==1) $keshi="健康管理中心1楼男宾区";
if($person->sex==2) $keshi="健康管理中心2楼女宾区";
if (!$orderInfo) return \Yz::echoError1("未找到有效订单");
if ($orderInfo->status !== 2) return \Yz::echoError1("订单状态异常。当前状态:" . $orderInfo->status);
if ($orderInfo->check_status == 2) return \Yz::echoError1("已登记体检,禁止退款");
//调用思信取消,恢复号源
$ap = new OrderController();
$cancel = $ap->cancel_appointment($orderInfo->hospital_id, [
'type' => $orderInfo->type,
'预约Id' => $orderInfo->appointment_number
]);
if ($cancel['code'] != 0) return \Yz::echoError1("取消预约失败," . $cancel['message']);
//如果真实支付大于0 则调用小程序退款
if ($orderInfo->true_price > 0) {
$data = [
"ghzid" => $person->ghzid,
"yyid" => 6,
"type" => "15",
"msg1" => $person->name,
"msg2" => $keshi,
"msg3" => isset($orderInfo->doctor)?$orderInfo->doctor:"无",
"msg4" => $orderInfo->appointment_date.' '.$orderInfo->appointment_time,
"msg5" => "",
"msg6" => "",
"url" => ""
'orderid' => $orderInfo->order_number,
'refund_order_id' => 'T' . $orderInfo->order_number,
'refund_amount' => (int)($orderInfo->true_price * 100),
'refund_reason' => "体检H5订单退款",
];
$dnet = new AspNetZhuanController();
$dnet->WeiXinSend($data);
return \Yz::Return(true, "自动退款成功", []);
$XCX = new XCXApiController();
$res = $XCX::Post('订单退款', $data);
if ($res['data']['refund_state'] != 'SUCCESS') {
return \Yz::echoError1("退款失败" . $res['data']['refund_state']);
}
}
DB::table('orders')->where(['id' => $id])->update([
'status' => 5
]);
//恢复号源
$up_plan = DB::table('plans')->where(['id' => $orderInfo->plan_id, 'status' => 2])->update([
'status' => 1
]);
return \Yz::Return(true, "退款成功", []);
}
public static function nonce($l = 16)

@ -6,7 +6,6 @@ use App\Http\Controllers\API\PEISApiController;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class PersonController extends Controller
{
@ -17,7 +16,6 @@ class PersonController extends Controller
$group_list=[];
foreach ($info['data'] as $it) {
$items = [];
$duoxuan_yi=[];
$group_info = $it;
if (isset($group_info['项目列表'])) {
foreach ($group_info['项目列表'] as $datum) {
@ -27,62 +25,6 @@ class PersonController extends Controller
];
}
}
if(isset($group_info['单位Id']) and !empty($group_info['单位Id']) and isset($group_info['分组Id']) and !empty($group_info['分组Id'])){
$items=[];
$peis = new PEISApiController();
$data=[
"单位Id"=>$group_info['单位Id']
];
$fenzu = $peis::Post('单位分组批次查询', 1, $data);
// Log::info(json_encode($fenzu,JSON_UNESCAPED_UNICODE));
if(empty($fenzu['data'])) break;
foreach ($fenzu['data'][0]['分组'] as $key => $value) {
if($value['Id']==$group_info['分组Id']){
$group_info['总计金额']=$value['价格'];
if (isset($value['包含项目信息'])) {
foreach ($value['包含项目信息'] as $datum) {
$items[] = [
'id' => $datum['Id'],
'name' => $datum['名称'],
];
}
}
if(isset($value['包含多选一组'])){
//多选一
$duo_xuan_yi=[];
$N1=$value['包含多选一组'];
foreach ($N1 as $k=>$v){
$duo_xuan_yi[$k][]=[
'zu_name'=>$v['组名称'],
'item_list'=>[]
];
foreach ($v['包含项目'] as $k2=>$v2){
$duo_xuan_yi[$k]['item_list'][]=
[
'item_id' =>$v2['Id'],
'item_name' => $v2['名称'],
'price'=>$v2['价格']
];
}
}
$duoxuan_yi= $duo_xuan_yi;
}
break;
}
}
}
$checkup_type=DB::table('checkup_type')->where(['status'=>1,'is_del'=>0])->get();
$checkup_type_id=0;
foreach ($checkup_type as $ct) {
@ -100,13 +42,10 @@ class PersonController extends Controller
'group_name' => $group_info['单位名称'] . ($group_info['部门名称']),
'bumen_name' => $group_info['部门名称'],
'group_id' => $group_info['预约Id'],
'tongshou_xiane'=>$group_info['统收限额']==0?0.00:$group_info['统收限额'],
'tongshou_xiane'=>$group_info['统收限额'],
'sixi_zong_ji_jin_e'=>$group_info['总计金额'],
'danwei_id'=>$group_info['单位Id'],
'fenzu_id'=>$group_info['分组Id'],
'checkup_type_id'=>$checkup_type_id,
'items' => $items,
'duo_xuan_yi'=>$duoxuan_yi,
];
$group_list[]=$data;
}
@ -142,19 +81,15 @@ class PersonController extends Controller
//获取团检套餐
public function GetGroupCombo()
{
$hospital_id = request('hospital_id');
$group_id = request('group_id');
if (!isset($group_id)) return \Yz::echoError1('group_id不能为空');
$data = [
'电话号码' => null,
'证件号码' => null,
'预约Id'=>$group_id
];
$res = self::group_info($hospital_id, $data);
if($res[0]['fenzu_id']=="") return \Yz::echoError1("用户分组不能为空");
return \Yz::Return(true,"查询完成",['unit'=>$res]);
}
}

@ -28,16 +28,15 @@ class PlanController extends Controller
$list=DB::table('plans')
->whereBetween('date',[$first_day,$last_day])->whereIn('status',[1])
->whereRaw('CONCAT(date, " ", time) >?', [$currentDateTime])
->whereRaw('JSON_CONTAINS(checkup_type_id, ?, "$")', [json_encode($checkup_type_id)])
->where(['hospital_id'=>$hospital_id,'type'=>1,'is_del'=>0])
->where('is_vip','<>',1)
->whereRaw('JSON_CONTAINS(checkup_type_id, ?, "$")', [$checkup_type_id])
->where(['hospital_id'=>$hospital_id,'type'=>1])
->whereIn('use_type',[0,$use_type]);
if(isset($person_id)){
$personInfo=DB::table('web_user_person')->where(['id'=>$person_id])->first();
if(!!$personInfo){
$list=$list->whereIn('sex',[0,$personInfo->sex]);
}
}
// if($use_type==1){
// $list=$list->where(['amount_limit1'=>0])->orWhere('amount_limit1','>=',$amount);
// }
// if($use_type==2){
// $list=$list->where(['amount_limit2'=>0])->orWhere('amount_limit2','>=',$amount);
// }
if ($use_type == 1) {
$list = $list->where(function ($query) use ($amount) {
$query->where('amount_limit1', 0)->orWhere('amount_limit1', '>=', $amount);
@ -51,18 +50,7 @@ class PlanController extends Controller
}
$list=$list->select('date', DB::raw('COUNT(*) as count'));
$list=$list->groupBy('date')->get();
//如果是婚检不是星期二、五、六数量设置为0
if ($checkup_type_id == 4) {
$dates = array();
foreach ($list as $item) {
$date = $item->date;
$dayOfWeek = date('N', strtotime($date));
if (in_array($dayOfWeek, config('app.globals.HunJianXingQi')) ) {
$dates[] = $item;
}
}
$list = $dates;
}
//获取整月日期
// 获取当月的第一天
@ -99,39 +87,18 @@ class PlanController extends Controller
$hospital_id =request('hospital');
$openid =request('openid');
$person_id=request('person_id');
$person_sex=request('person_sex');
$combo_id=request('combo_id');
$date=request('date');
$use_type=request('use_type');//使用类型 1个检 2团检
$checkup_type_id=(string)request('checkup_type_id');//体检类型表对应id
$amount=request('amount');//总金额
if(!isset($checkup_type_id)) return \Yz::echoError1("体检类型不能为空");
$personInfo=false;
if(isset($person_id)){
$personInfo=DB::table('web_user_person')->where(['id'=>$person_id])->first();
}
$currentDateTime = now();
$list=DB::table('plans')
->where('date',$date)->whereIn('status',[1,2])
->whereRaw('CONCAT(date, " ", time) >?', [$currentDateTime])
->whereRaw('JSON_CONTAINS(checkup_type_id, ?, "$")',[$checkup_type_id])
->where(['hospital_id'=>$hospital_id,'type'=>1,'is_del'=>0])
->where('is_vip','<>',1)
->whereRaw('JSON_CONTAINS(checkup_type_id, ?, "$")', [$checkup_type_id])
->where(['hospital_id'=>$hospital_id,'type'=>1])
->whereIn('use_type',[0,$use_type]);
$comboItemsNmr=[];
if(!!$combo_id){
$comboInfo=DB::table('combos')->where(['combo_id'=>$combo_id])->first();
if(!empty($comboInfo->keyue_start_time) and !empty($comboInfo->keyue_end_time)){
$list=$list->whereBetween('time',[$comboInfo->keyue_start_time,$comboInfo->keyue_end_time]);
}
$comboItemsNmr=DB::table('combo_items')->where(['combo_id'=>$combo_id])->where('name', 'like', '%磁%')->get();
}
if(!!$personInfo){
$list=$list->whereIn('sex',[0,$personInfo->sex]);
}
if(isset($person_sex)){
$list=$list->whereIn('sex',[0,$person_sex]);
}
if ($use_type == 1) {
$list = $list->where(function ($query) use ($amount) {
$query->where('amount_limit1', 0)->orWhere('amount_limit1', '>=', $amount);
@ -143,26 +110,9 @@ class PlanController extends Controller
$query->where('amount_limit2', 0)->orWhere('amount_limit2', '>=', $amount);
});
}
$list=$list->orderBy('time','asc')->get();
if(count($comboItemsNmr)>0){
//如果有核磁项目11点往后的号源不可用
foreach ($list as $key=>$item) {
if($item->time > '11:00:00' and $item->time <= '12:00:00'){
$list[$key]->status=2;
}
}
}
//如果是婚检不是星期二、五、六数量设置为0
if ($checkup_type_id == 4) {
$dayOfWeek = date('N', strtotime($date));
if(!in_array($dayOfWeek, config('app.globals.HunJianXingQi')) ) {
$list=[];
}
$list=$list->get();
}
// 获取前后各三天的日期
$dateTime = new DateTime($date);
$days7=[];
@ -176,22 +126,14 @@ class PlanController extends Controller
->whereBetween('date',[$days7[0],$days7[6]])->whereIn('status',[1])
->whereRaw('CONCAT(date, " ", time) >?', [$currentDateTime])
->whereRaw('JSON_CONTAINS(checkup_type_id, ?, "$")', [$checkup_type_id])
->where(['hospital_id'=>$hospital_id,'type'=>1,'is_del'=>0])
->where('is_vip','<>',1)
->where(['hospital_id'=>$hospital_id,'type'=>1])
->whereIn('use_type',[0,$use_type]);
if(!!$combo_id){
$comboInfo=DB::table('combos')->where(['combo_id'=>$combo_id])->first();
if(!empty($comboInfo->keyue_start_time) and !empty($comboInfo->keyue_end_time)){
$weeklist=$weeklist->whereBetween('time',[$comboInfo->keyue_start_time,$comboInfo->keyue_end_time]);
}
if(count($comboItemsNmr)>0){
$weeklist=$weeklist->whereNotBetween('time',['11:00:00','12:00:00']);
}
}
if(!!$personInfo){
$weeklist=$weeklist->whereIn('sex',[0,$personInfo->sex]);
}
// if($use_type==1){
// $weeklist=$weeklist->where(['amount_limit1'=>0])->orWhere('amount_limit1','>=',$amount);
// }
// if($use_type==2){
// $weeklist=$weeklist->where(['amount_limit2'=>0])->orWhere('amount_limit2','>=',$amount);
// }
if ($use_type == 1) {
$weeklist = $weeklist->where(function ($query) use ($amount) {
$query->where('amount_limit1', 0)->orWhere('amount_limit1', '>=', $amount);
@ -205,18 +147,6 @@ class PlanController extends Controller
}
$weeklist=$weeklist->select('date', DB::raw('COUNT(*) as count'));
$weeklist=$weeklist->groupBy('date')->get();
//如果是婚检不是星期二、五、六数量设置为0
if ($checkup_type_id == 4) {
$dates = array();
foreach ($weeklist as $item) {
$date = $item->date;
$dayOfWeek = date('N', strtotime($date));
if (in_array($dayOfWeek, config('app.globals.HunJianXingQi')) ) {
$dates[] = $item;
}
}
$weeklist = $dates;
}
$week7=[];
$k=0;
foreach ($days7 as $date) {

@ -12,8 +12,6 @@ class QuestionController extends Controller
{
$hospital_id = request('hospital_id');
$q_type = request('q_type');
$person= request('person');
$count=0;
if (!isset($hospital_id)) return \Yz::echoError1("医院id不能为空");
if (!isset($q_type)) return \Yz::echoError1("问卷类型不能为空");
$list = DB::table('questions')
@ -24,15 +22,10 @@ class QuestionController extends Controller
])->orderBy('order','asc')->get();
foreach ($list as $key=>$item){
$item->content=json_decode($item->content,true);
if($person['sex']==1 and strpos($item->question, '女性') !== false){
$item->show=false;
}else{
$item->show=true;
$count++;
}
}
return \Yz::Return(true,"查询成功",['list'=>$list,'count'=>$count]);
return \Yz::Return(true,"查询成功",['list'=>$list]);
}
//提交调查
public function SubmitAnswer()
@ -45,13 +38,8 @@ class QuestionController extends Controller
if (!$user) return \Yz::echoError1('用户不存在');
if(!isset($q_type)) return \Yz::echoError1('问卷类型不能为空');
if(!isset($content) or empty($content)) return \Yz::echoError1('内容不能为空');
$person=DB::table('web_user_person')->where(['user_id' => $user->id, 'is_del' => 0])->orderBy('is_default')->get();
if(count($person)==0){
return \Yz::echoError1('请先绑定就诊人');
}
$data=[
'userid'=>$user->id,
'personid'=>$person[0]->id,
'q_type'=>$q_type,
'content'=>json_encode($content,JSON_UNESCAPED_UNICODE)
];
@ -68,20 +56,6 @@ class QuestionController extends Controller
$openid = request('openid');
$person_id = request('person_id');
$content = request('content');
$user = DB::table('web_users')->where(['openid' => $openid, 'status' => 1, 'is_del' => 0])->first();
if (!$user) return \Yz::echoError1('用户不存在');
$data=[
'userid'=>$user->id,
'personid'=>$person_id,
'q_type'=>3,
'content'=>!empty($content)?json_encode($content,JSON_UNESCAPED_UNICODE):[]
];
$i=DB::table('questions_log')->insert($data);
if($i){
return \Yz::Return(true,"提交成功",[]);
}else{
return \Yz::echoError1('提交失败');
}
return \Yz::Return(true,"提交成功",[]);
}
}

@ -1,132 +0,0 @@
<?php
namespace App\Http\Controllers\API\H5;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class QuestionnaireController extends Controller
{
public function list(Request $request)
{
$db = DB::table('question_lists');
$question = $db->orderBy('order', 'desc')->get();
$list = [];
foreach ($question as $key => $value) {
$list[] = [
'id' => $value->question,
'title' => $value->name,
'icon' => $value->icon,
'desc' => $value->desc,
];
}
return \Yz::Return(true, '操作完成', [
'list' => $list
]);
}
public function get(Request $request)
{
$id = $request->post('id');
$person = $request->post('person');
$question = DB::table('questionnaires')->where('id', $id)->first();
if (!$question) {
return \Yz::echoError('问卷不存在');
}
$question_ids = json_decode($question->questions, true);
$person_info = DB::table('web_user_person')->where('id', $person)->first();
$list = self::getList($person_info, $question_ids);
//如果是男性屏蔽id为99的问题
$nvxingQuestion=[99,103];
if($person_info->sex==1){
$temp=[];
foreach ($list as $key => $item) {
if(!in_array($item['id'],$nvxingQuestion)){
$temp[]=$item;
}
}
$list=$temp;
}
return \Yz::Return(true, '操作完成', [
'info' => $question,
'list' => $list
]);
}
public function getList($person, $ids, $level = 0)
{
$list = [];
$replace_array = ['name', 'birthday', 'phone', 'id_number'];
foreach ($ids as $id) {
$question = DB::table('question_questions')->where('id', $id)->first();
if (!!$question) {
if ($level < 3) {
$question->option = json_decode($question->option, true);
$item_data = [
'id' => $question->id,
'type' => $question->type,
'question' => $question->question,
'value' => '',
];
if (in_array($question->type, ['input', 'date', 'city'])) {
$v = $question->option['input']['value'];
$item_data['value'] = $v;
$item_data['placeholder'] = $question->option['input']['placeholder'];
} else {
if($question->question=='性别'){
if($person->sex==1) $vl=0;
if($person->sex==2) $vl=1;
}else{
$vl='';
}
$item_data['value'] = $vl;
$select = $question->option['select']['value'];
$select_array = [];
foreach ($select as $select_value) {
$push_item = [
'content' => $select_value['content'],
'children' => []
];
if ($select_value['type'] == 'questions') {
$children = self::getList($person, $select_value['questions'], $level + 1);
if (count($children) > 0) {
$push_item['children'] = $children;
}
}
$select_array[] = $push_item;
}
$item_data['select'] = $select_array;
}
$v = $item_data['value'];
foreach ($replace_array as $replace_item) {
if (!!$person) {
$v = str_replace('${' . $replace_item . '}', $person->$replace_item, $v);
} else {
$v = str_replace('${' . $replace_item . '}', '', $v);
}
}
$v = str_replace('${体重}', '', $v);
$v = str_replace('${身高}', '', $v);
$v = str_replace('${今日日期}',$person->birthday , $v);
if ($v == '${省市县}') {
$v = [[
'value' => '11',
'text' => '北京市'
], [
'value' => '1101',
'text' => '市辖区'
], [
'value' => '110101',
'text' => '东城区'
]];
}
$item_data['value'] = $v;
$list[] = $item_data;
}
}
}
return $list;
}
}

@ -1,415 +0,0 @@
<?php
namespace App\Http\Controllers\API\H5;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class QuestionnairesLogsController extends Controller
{
public function delete(Request $request)
{
$id = $request->post('id');
$person_id = $request->post('person');
$person_info = DB::table('web_user_person')->where('id', $person_id)->first();
if (!$person_info) {
return \Yz::echoError('人员信息不存在');
}
$log_info = DB::table('questionnaires_logs')->where('id', $id)->where('person_id', $person_id)->first();
if (!$log_info) {
return \Yz::echoError('问卷信息不存在');
}
DB::table('questionnaires_logs')->where('id', $id)->update(['del' => 1]);
return \Yz::Return(true, '操作完成');
}
public function list(Request $request)
{
$person_id = $request->post('person');
$person_info = DB::table('web_user_person')->where('id', $person_id)->first();
if (!$person_info) {
return \Yz::echoError('人员信息不存在');
}
$log = DB::table('questionnaires_logs')->select(['*'])
->selectRaw("IFNULL((select `name` from questionnaires where questionnaires.id = questionnaires_logs.person_id),'') as title")
->where('items', '!=', '[]')
->where('person_id', $person_id)
->where('del', 2)
->orderBy('id', 'desc')->get();
$list = [];
foreach ($log as $value) {
$person_info = json_decode($value->person_info, true);
$age = !!$person_info['birthday'] ? date('Y') - date('Y', strtotime($person_info['birthday'])) : 0;
$check_items = json_decode($value->check_items, true);
$count = count($check_items);
$list[] = [
'id' => $value->id,
'title' => $value->title,
'name' => $person_info['name'],
'age' => $age,
'created_at' => $value->created_at,
'count' => $count
];
}
return \Yz::Return(true, '操作完成', [
'log'=>$log,
'list' => $list,
]);
}
public function push(Request $request)
{
$id = $request->post('id');
$person_id = $request->post('person');
$person_info = DB::table('web_user_person')->where('id', $person_id)->first();
if (!$person_info) {
return \Yz::echoError('人员信息不存在');
}
$log_info = DB::table('questionnaires_logs')->where('question_id', $id)->where('person_id', $person_id)->orderBy('id', 'desc')->first();
if (!$log_info) {
return \Yz::echoError('未查询到答题记录');
}
$content = json_decode($log_info->content, true);
return \Yz::Return(true, '操作完成', [
'info' => $content,
]);
}
public function info(Request $request)
{
$id = $request->post('id');
$person_id = $request->post('person');
$person_info = DB::table('web_user_person')->where('id', $person_id)->first();
if (!$person_info) {
return \Yz::echoError('人员信息不存在');
}
$log_info = DB::table('questionnaires_logs')->where('id', $id)->where('person_id', $person_id)->first();
if (!$log_info) {
return \Yz::echoError('问卷信息不存在');
}
$person_info = json_decode($log_info->person_info, true);
$age = !!$person_info['birthday'] ? date('Y') - date('Y', strtotime($person_info['birthday'])) : 0;
$sex = !!$person_info['sex'] ? $person_info['sex'] : 1;
$weight = !!$log_info->weight ? $log_info->weight : 0;
$height = !!$log_info->height ? $log_info->height : 0;
$items_ids = json_decode($log_info->check_items, true);
$check_items = [];
if (!!count($items_ids)) {
$items_info = DB::table('question_items')->whereIn('id', $items_ids)->get();
foreach ($items_info as $key => $value) {
$check_items[] = [
'id' => $value->id,
'name' => $value->name,
];
}
}
$items = json_decode($log_info->items, true);
$check_items_array = json_decode($log_info->check_items_array, true);
$wh = '-';
if (!!$weight && $height) {
$wh = round($weight / pow($height / 100, 2), 2);
}
return \Yz::Return(true, '操作完成', [
'date' => date('Y-m-d', strtotime($log_info->created_at)),
'sex' => $sex,
'age' => $age,
'weight' => $wh,
'items' => $items,
'check_items' => $check_items,
'check_items_array' => $check_items_array,
'price' => [
'jichu' => self::sum_items($items, $check_items_array['jichu']),
'tuijian' => self::sum_items($items, $check_items_array['tuijian']),
'gaoduan' => self::sum_items($items, $check_items_array['gaoduan']),
],
'original_price' => [
'jichu' => self::sum_items($items, $check_items_array['jichu'], false),
'tuijian' => self::sum_items($items, $check_items_array['tuijian'], false),
'gaoduan' => self::sum_items($items, $check_items_array['gaoduan'], false),
],
'count' => [
'jichu' => self::item_count($items, $check_items_array['jichu']),
'tuijian' => self::item_count($items, $check_items_array['tuijian']),
'gaoduan' => self::item_count($items, $check_items_array['gaoduan']),
]
]);
}
public function item_count($items, $check_items)
{
if (count($items)) {
$items_count = DB::table('items')->whereIn('item_id', $items)
->where('keshi_name', '!=', '材料费')->where('status', 1)->count();
} else {
$items_count = 0;
}
if (count($check_items['items'])) {
$check_sum_count = DB::table('items')
->whereIn('item_id', $check_items['items'])
->where('keshi_name', '!=', '材料费')->where('status', 1)->count();
} else {
$check_sum_count = 0;
}
if (count($check_items['combo_items'])) {
$combo_count = DB::table('items')
->whereIn('item_id', $check_items['combo_items'])
->where('keshi_name', '!=', '材料费')->where('status', 1)->count();
} else {
$combo_count = 0;
}
$ic = $items_count + $check_sum_count + $combo_count;
return $ic;
}
public function sum_items($items, $check_items, $zk = true)
{
if (count($items)) {
$sum = DB::table('items')->whereIn('item_id', $items)->where('status', 1)->sum('price');
} else {
$sum = 0;
}
if (count($check_items['items'])) {
$check_sum = DB::table('items')->whereIn('item_id', $check_items['items'])->where('status', 1)->sum('price');
} else {
$check_sum = 0;
}
if (count($check_items['combo_items'])) {
$combo = DB::table('items')->whereIn('item_id', $check_items['combo_items'])->where('status', 1)->sum('price');
} else {
$combo = 0;
}
if (!!$zk) {
$zhekou = config('app.globals.Wj_ZheKou');
} else {
$zhekou = 1;
}
return number_format((($combo + $sum + $check_sum) * $zhekou), 2, '.', '');
}
public function submit(Request $request)
{
$question_id = $request->post('question_id');
$content = $request->post('content');
$use_time = $request->post('use_time');
$question_info = DB::table('questionnaires')->where('id', $question_id)->first();
if (!$question_info) {
return \Yz::echoError('问卷不存在');
}
$person_id = $request->post('person_id');
$person_info = DB::table('web_user_person')->where('id', $person_id)->first();
if (!$person_info) {
return \Yz::echoError('人员信息不存在');
}
$type = $question_info->type;
$items = json_decode($question_info->items, true);
$check_items = [];
$check_items_array = [
'jichu' => [
'combo' => '0',
'combo_items' => [],
'items' => []
],
'tuijian' => [
'combo' => '0',
'combo_items' => [],
'items' => []
],
'gaoduan' => [
'combo' => '0',
'combo_items' => [],
'items' => []
],
];
$question_ids = [];
$question_map = [];
foreach ($content as $key => $value) {
$question_ids[] = $value['id'];
$question_map["q{$value['id']}"] = $value;
}
if (!!count($question_ids)) {
$question_questions = DB::table('question_questions')->whereIn('id', $question_ids)->get();
} else {
$question_questions = [];
}
$weight = 0;
$height = 0;
$score = 0;
foreach ($question_questions as $value) {
$id = $value->id;
$option = json_decode($value->option, true);
if (in_array($value->type, ['input', 'date', 'city'])) {
if ($option['input']['value'] === '${体重}') {
if (isset($question_map["q{$id}"])) {
$weight = $question_map["q{$id}"]['value'];
}
}
if ($option['input']['value'] === '${身高}') {
if (isset($question_map["q{$id}"])) {
$height = $question_map["q{$id}"]['value'];
}
}
} else {
if (isset($question_map["q{$id}"])) {
$v = $question_map["q{$id}"]['active'];
$item_option = $option['select']['value'][$v];
if ($item_option['type'] === 'score') {
if (!isset($item_option['score'])) {
$item_option['score'] = 0;
}
foreach ($content as $content_key => $content_item) {
if ($content_item['id'] == $id) {
$content[$content_key]['score'] = $item_option['score'];
}
}
$score = $score + $item_option['score'];
}
if ($item_option['type'] === 'items') {
foreach ($item_option['items'] as $item) {
if (!in_array($item, $check_items)) {
$check_items_info = DB::table('question_items')->where('id', $item)->first();
if (!!$check_items_info) {
$check_items[] = (string)$item;
if ($check_items_info->jichu != '0') {
$jichu_combo_info = DB::table('combos')->where('combo_id', $check_items_info->jichu)->first();
if (!!$jichu_combo_info) {
if ($check_items_array['jichu']['combo'] == '0') {
$items_ids = [];
$combo_items = json_decode($jichu_combo_info->items, true);
foreach ($combo_items as $combo_item) {
$items_ids[] = $combo_item['id'];
}
$check_items_array['jichu']['combo'] = $check_items_info->jichu;
$check_items_array['jichu']['combo_items'] = $items_ids;
} else {
$items_ids = [];
$combo_items = json_decode($jichu_combo_info->items, true);
foreach ($combo_items as $combo_item) {
if (
!in_array($combo_item['id'], $check_items_array['jichu']['combo_items']) &&
!in_array($combo_item['id'], $check_items_array['jichu']['items'])
) {
$items_ids[] = $combo_item['id'];
}
}
$check_items_array['jichu']['items'] = array_merge($check_items_array['jichu']['items'], $items_ids);
}
}
}
if ($check_items_info->tuijian != '0') {
$tuijian_combo_info = DB::table('combos')->where('combo_id', $check_items_info->tuijian)->first();
if (!!$tuijian_combo_info) {
if ($check_items_array['tuijian']['combo'] == '0') {
$items_ids = [];
$combo_items = json_decode($tuijian_combo_info->items, true);
foreach ($combo_items as $combo_item) {
$items_ids[] = $combo_item['id'];
}
$check_items_array['tuijian']['combo'] = $check_items_info->tuijian;
$check_items_array['tuijian']['combo_items'] = $items_ids;
} else {
$items_ids = [];
$combo_items = json_decode($tuijian_combo_info->items, true);
foreach ($combo_items as $combo_item) {
if (
!in_array($combo_item['id'], $check_items_array['tuijian']['combo_items']) &&
!in_array($combo_item['id'], $check_items_array['tuijian']['items'])
) {
$items_ids[] = $combo_item['id'];
}
}
$check_items_array['tuijian']['items'] = array_merge($check_items_array['tuijian']['items'], $items_ids);
}
}
}
if ($check_items_info->gaoduan != '0') {
$gaoduan_combo_info = DB::table('combos')->where('combo_id', $check_items_info->gaoduan)->first();
if (!!$gaoduan_combo_info) {
if ($check_items_array['gaoduan']['combo'] == '0') {
$items_ids = [];
$combo_items = json_decode($gaoduan_combo_info->items, true);
foreach ($combo_items as $combo_item) {
$items_ids[] = $combo_item['id'];
}
$check_items_array['gaoduan']['combo'] = $check_items_info->gaoduan;
$check_items_array['gaoduan']['combo_items'] = $items_ids;
} else {
$items_ids = [];
$combo_items = json_decode($gaoduan_combo_info->items, true);
foreach ($combo_items as $combo_item) {
if (
!in_array($combo_item['id'], $check_items_array['gaoduan']['combo_items']) &&
!in_array($combo_item['id'], $check_items_array['gaoduan']['items'])
) {
$items_ids[] = $combo_item['id'];
}
}
$check_items_array['gaoduan']['items'] = array_merge($check_items_array['gaoduan']['items'], $items_ids);
}
}
}
}
}
}
}
}
}
}
preg_match_all('/\d+/', $weight, $matches);
$weight = $matches[0][0];
$weight = $weight ? $weight : 0;
preg_match_all('/\d+/', $height, $matches);
$height = $matches[0][0];
$height = $height ? $height : 0;
$ip = self::getTrustedProxiesIp();
$ip2region = new \Ip2Region();
$record = $ip2region->simple($ip);
$ip_info = '';
if (!!$record) {
$ip_info = $record;
}
$log_id = DB::table('questionnaires_logs')->insertGetId([
'question_id' => $question_id,
'type' => $type,
'weight' => $weight,
'height' => $height,
'use_time' => $use_time,
'ip' => $ip,
'ip_info' => $ip_info,
'score' => $score,
'order_id' => '0',
'person_id' => $person_id,
'person_info' => json_encode($person_info, JSON_UNESCAPED_UNICODE),
'content' => json_encode($content, JSON_UNESCAPED_UNICODE),
'items' => json_encode($items, JSON_UNESCAPED_UNICODE),
'check_items' => json_encode($check_items, JSON_UNESCAPED_UNICODE),
'check_items_array' => json_encode($check_items_array, JSON_UNESCAPED_UNICODE),
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
]);
return \Yz::Return(true, '操作完成', [
'id' => $log_id
]);
}
public function getTrustedProxiesIp()
{ //获取用户真实ip
if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$ip = getenv('HTTP_CLIENT_IP');
} elseif (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
$ip = getenv('REMOTE_ADDR');
} elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
$ip = $_SERVER['REMOTE_ADDR'];
}
$res = preg_match('/[\d\.]{7,15}/', $ip, $matches) ? $matches[0] : '';
return $res;
}
}

@ -24,7 +24,6 @@ class ReportController extends Controller
$report_list=[];
$peis = new PEISApiController();
foreach ($persons as $key => $id_number) {
if(strlen($id_number)==0) continue;
$data = [
'电话号码' => "",
'证件号码' => $id_number,
@ -114,11 +113,10 @@ class ReportController extends Controller
$res = $res['data'][0];
$report_res = new ReportService();
$save= $report_res->Save($res);
if($save['status']){
$report = DB::table('report_l1_records as a')->where(['a.体检号' => $tijian_num])->first();
}else{
return \Yz::Return($save['status'],$save['msg'],$save['data']);
return $save;
}
}else{
return \Yz::echoError1("查询报告详情失败");
@ -193,7 +191,7 @@ class ReportController extends Controller
$suojian = [];
$zhenduan = [];
foreach ($items as $item) {
$suojian[] = empty($item->所见)?$item->结果值:$item->所见;
$suojian[] = $item->所见;
$jielun[] = $item->结论;
}
@ -217,15 +215,12 @@ class ReportController extends Controller
}
$error_items[] = $item->基础项目名称 . $m;
}
if($item->结果类型=='数值' and $item->结果值!='' and $item->结果值!=null and $item->结果值范围!='' and $item->结果值范围 !=null){
if($item->结果类型=='数值' and $item->结果值!='' and $item->结果值!=null){
$range = $this->convertToArray($item->结果值范围);
$item->结果值范围=$range;
$item->最大范围=[];
if(count($range)>1){
$kuadu=$range[1]-$range[0];
if($item->结果值=='未见') $item->结果值=0;
if(($item->结果值-$range[1])/$kuadu<=1){
$max=$range[1]+$kuadu;
}else{
@ -402,10 +397,8 @@ class ReportController extends Controller
$date_list = [];
$datetime = '';
foreach ($reports as $item) {
$datetime=explode('T', $item->登记时间)[0];
$jc_item=DB::table('report_l2_items as a')->leftJoin('report_l3_base_items as b','a.id','=','b.report_l2_id')->where(['a.reprort_l1_id'=>$item->id])->get();
foreach ($jc_item as $i) {
if ($i->基础项目代码 == $mark) {
if ($i->结果类型 == '数值' && !!$i->结果值范围) {

@ -2,7 +2,6 @@
namespace App\Http\Controllers\API\H5;
use App\Http\Controllers\API\AspNetZhuanController;
use App\Http\Controllers\API\XCXApiController;
use App\Http\Controllers\Controller;
use App\Services\ConfigService;
@ -11,255 +10,45 @@ use Illuminate\Support\Facades\DB;
class UserController extends Controller
{
public function hunjianBySFZ(Request $request)
{
$sfz = $request->post('sfz');
$res = false;
if(isset($sfz)){
$dnet = new AspNetZhuanController();
$res = $dnet->GetPersonInfo([
"zjh" => $sfz,
"action" => "2",
"ghzid"=>""
]);
return \Yz::Return(true,"查询完成",['info'=>$res]);
}else{
return \Yz::echoError1('身份证不能为空');
}
}
public function hunjian(Request $request)
{
$person_id = $request->post('person_id');
$user_info = DB::table('web_user_person')->where(['id' => $person_id])->first();
$res = false;
if (!!$user_info) {
$dnet = new AspNetZhuanController();
$res = $dnet->GetPersonInfo([
"ghzid" => $user_info->ghzid,
"action" => "1"
]);
}
$id_type_map = [
'身份证' => 0,
'居民身份证' => 0,
'驾驶证' => 1,
'外国护照' => 2,
'护照' => 2,
'港澳居民来往内地通行证' => 3,
'港澳台身份证' => 3,
'港澳通行' => 3,
'外国人永久居留身份证' => 4,
'其他' => 5,
'暂未获取' => 5,
];
$person_info = [
'姓名' => ''
];
if (!!$res && count($res) != 0) {
$res = $res[0];
$id_type = $res['ID_Type_name'] ?? '居民身份证';
$id_type_show = 0;
if (isset($id_type_map[$id_type])) {
$id_type_show = $id_type_map[$id_type];
}
$address = $res['Address'] ?? '';
// $address = '海南省海口市龙华区11111111';
$address_array = [];
if (!!$address) {
$address_data_str = file_get_contents(public_path('assets/address.json'));
$address_data = json_decode($address_data_str, true);
foreach ($address_data as $ak => $av) {
if (strstr($address, $av['name']) !== false) {
$address_array[] = [
'value' => $av['code'],
'text' => $av['name']
];
foreach ($av['children'] as $aak => $aav) {
if (strstr($address, $aav['name']) !== false) {
$address_array[] = [
'value' => $aav['code'],
'text' => $aav['name']
];
foreach ($aav['children'] as $aaak => $aaav) {
if (strstr($address, $aaav['name']) !== false) {
$address_array[] = [
'value' => $aaav['code'],
'text' => $aaav['name']
];
break;
}
}
if (count($address_array) == 2) {
$address_array[] = [
'value' => $aav['children'][0]['code'],
'text' => $aav['children'][0]['name'],
];
}
break;
}
}
if (count($address_array) == 1) {
$address_array[] = [
'value' => $av['children'][0]['code'],
'text' => $av['children'][0]['name'],
];
$address_array[] = [
'value' => $av['children'][0]['children'][0]['code'],
'text' => $av['children'][0]['children'][0]['name'],
];
}
break;
}
}
}
$id_number = $res['ID_No'] ?? '';
$birthplace = '';
if ($id_type_show == 0 && mb_strlen($id_number, 'utf-8') == 18) {
$sheng = substr($id_number, 0, 2);
$shi = substr($id_number, 0, 4);
$xian = substr($id_number, 0, 6);
$address_data_str = file_get_contents(public_path('assets/address.json'));
$address_data = json_decode($address_data_str, true);
foreach ($address_data as $ak => $av) {
if ($av['code'] == $sheng) {
$birthplace = $birthplace . $av['name'];
foreach ($av['children'] as $aak => $aav) {
if ($aav['code'] == $shi) {
$birthplace = $birthplace . $aav['name'];
foreach ($aav['children'] as $aaak => $aaav) {
if ($aaav['code'] == $xian) {
$birthplace = $birthplace . $aaav['name'];
if (count($address_array) == 0) {
$address_array = [
[
'value' => $av['code'],
'text' => $av['name'],
],
[
'value' => $aav['code'],
'text' => $aav['name']
],
[
'value' => $aaav['code'],
'text' => $aaav['name']
],
];
}
break;
}
}
break;
}
}
break;
}
}
}
if (count($address_array) == 0) {
$address_array = [
[
'value' => '11',
'text' => '北京市'
],
[
'value' => '1101',
'text' => '市辖区'
],
[
'value' => '110101',
'text' => '东城区'
],
];
}
$person_info = [
'国籍' => $res['MZ'] == '外国血统' ? '外国' : '中国',
'证件类型' => $id_type_show,
'证件号' => $res['ID_No'] ?? '',
'姓名' => $res['Patname'] ?? '',
'生日' => $res['Patbdate'] ? date('Y-m-d', strtotime($res['Patbdate'])) : date('Y-m-d'),
'民族' => $res['MZ'] ?? '',
'现地址省市区' => $address_array,
'现地址' => $address,
// '详细地址省市区' => $address_array,
// '详细地址' => $address,
'户籍地址省市区' => $address_array,
'户籍地址' => $address,
'工作单位' => "",
'文化程度' => "",
'职业' => "",
'出生地' => $birthplace,
'配偶姓名' => "",
'配偶证件类型' => 0,
'配偶证件号' => "",
'血缘关系' => "无",
// '邮政编码' => "",
'手机号码' => $res['Mobile'] ?? '',
];
}
//查询日志是否曾经录入过婚检
$hunjianLog=DB::table("questions_log")->where(['personid'=>$person_id,'q_type'=>3])->orderBy('id','desc')->first();
if(!!$hunjianLog){
$person_info=json_decode($hunjianLog->content,true);
unset($person_info['详细地址省市区']);
unset($person_info['详细地址']);
unset($person_info['邮政编码']);
}
return \Yz::Return(true, '获取成功', [
'info' => $person_info
]);
}
// 获取配置更新时间
public function info(Request $request)
{
$openid = $request->post('openid');
if (!isset($openid)) return \Yz::echoError1("openid不能为空");
$user = DB::table('web_users')->where(['openid' => $openid])->first();
$userid = false;
if (!$user) {
$userid = DB::table('web_users')->insertGetId(['openid' => $openid]);
} else {
$userid = $user->id;
if(!isset($openid)) return \Yz::echoError1("openid不能为空");
$user=DB::table('web_users')->where(['openid'=>$openid])->first();
$userid=false;
if(!$user){
$userid=DB::table('web_users')->insertGetId(['openid'=>$openid]);
}else{
$userid=$user->id;
}
if ($userid) {
if (self::UpdatePersonList($openid)) { //调用更新就诊人方法
if($userid) {
if(self::UpdatePersonList($openid)){//调用更新就诊人方法
//查询默认就诊人
$person_list = DB::table('web_user_person')->where(['user_id' => $userid, 'is_del' => 0])->get();
$default_person = DB::table('web_user_person')->where(['user_id' => $userid, 'is_default' => 1, 'is_del' => 0])->first();
$count = count($person_list);
if ($count > 0 and !$default_person) {
DB::table('web_user_person')->where(['id' => $person_list[0]->id])->update(['is_default' => 1]);
$default_person = $person_list[0];
}
if(!$default_person) return \Yz::echoError1("获取默认体检人信息失败");
$info = [
'name' => isset($default_person->name) ? $default_person->name : null,
'sex' => isset($default_person->sex) ? $default_person->sex : null,
'phone' => isset($default_person->phone) ? $default_person->phone:null,
'id_number' => isset($default_person->id_number) ? $default_person->id_number:null,
'count' => $count,
'openid' => $openid,
'person_id' => $default_person->id,
'married' => $default_person->married
];
return \Yz::Return(true, '获取成功', [
'info' => $info
]);
}
$person_list=DB::table('web_user_person')->where(['user_id'=>$userid,'is_del'=>0])->get();
$default_person=DB::table('web_user_person')->where(['user_id'=>$userid,'is_default'=>1,'is_del'=>0])->first();
$count=count($person_list);
if($count>0 and !$default_person){
DB::table('web_user_person')->where(['id'=>$person_list[0]->id])->update(['is_default'=>1]);
$default_person=$person_list[0];
}
$info = [
'name' => isset($default_person->name)? $default_person->name:null,
'sex' => isset($default_person->sex)?$default_person->sex:null,
'phone'=>$default_person->phone,
'id_number'=>$default_person->id_number,
'count' => $count,
'openid' => $openid,
'person_id' => $default_person->id,
'married'=>$default_person->married
];
return \Yz::Return(true, '获取成功', [
'info' => $info
]);
}
}
}
//获取名下体检人列表
@ -304,43 +93,43 @@ class UserController extends Controller
//调用his接口查询用户积分和预存款
$integral = 90;
$save_money = 150;
$coupon_count = 2; //优惠券数量
$coupon_count = 2;//优惠券数量
$person->integral = $integral;
$person->save_money = $save_money;
$person->coupon_count = $coupon_count;
return \Yz::Return(true, "查询完成", ['person_info' => $person]);
}
public function tttt()
{
$XCX = new XCXApiController();
$data = [
'wxid' => 'oosgJj-SVIxTrm_g1p213tsSHK5g'
public function tttt(){
$XCX=new XCXApiController();
$data=[
'wxid'=>'oosgJj-SVIxTrm_g1p213tsSHK5g'
];
$res = $XCX::Post('就诊人列表', $data);
$ApiPersonList = $res['data'];
$res=$XCX::Post('就诊人列表',$data);
$ApiPersonList=$res['data'];
//dd($ApiPersonList[0]);
$XCX::XCXDecode($ApiPersonList[0]['idNumber']);
}
}
//更新用户列表,调用远程小程序接口
public function UpdatePersonList($openid)
{
$env = config('app.globals.Env');
if ($env == 'pro') { //如果是正式环境
$XCX = new XCXApiController();
$data = [
'wxid' => $openid
$env=config('app.globals.Env');
if($env=='pro'){ //如果是正式环境
$XCX=new XCXApiController();
$data=[
'wxid'=>$openid
];
$res = $XCX::Post('就诊人列表', $data);
$ApiPersonList = $res['data'];
$res=$XCX::Post('就诊人列表',$data);
$ApiPersonList=$res['data'];
// dd($ApiPersonList);
}
if ($env == 'dev') { //如果是开发环境
if($env=='dev'){//如果是开发环境
$ApiPersonList = [
[
'ghzid' => 'ghz11',
'idNumber' => '15210219920524154X',
'idNumber'=>'15210219920524154X',
'name' => '周京京',
'phone' => '11111111111',
'sex' => '1',
@ -350,7 +139,7 @@ class UserController extends Controller
],
[
'ghzid' => 'ghz22',
'idNumber' => '460026199002190013',
'idNumber'=>'460026199002190013',
'name' => '测试2',
'phone' => '222222222',
'sex' => '1',
@ -360,7 +149,7 @@ class UserController extends Controller
],
[
'ghzid' => 'ghz22555',
'idNumber' => '411329199901052356',
'idNumber'=>'411329199901052356',
'name' => '信息科1',
'phone' => '222222222',
'sex' => '1',
@ -377,7 +166,7 @@ class UserController extends Controller
$user = DB::table('web_users')->where(['openid' => $openid, 'status' => 1, 'is_del' => 0])->first();
if (!$user) return \Yz::echoError1('用户不存在');
//库里存在的用户ghzid数组
$db_person_ghzids = DB::table('web_user_person')->where(['user_id' => $user->id, 'is_del' => 0])->pluck('ghzid')->toArray();
$db_person_ghzids = DB::table('web_user_person')->where(['user_id' => $user->id,'is_del'=>0])->pluck('ghzid')->toArray();
//接口返回的用户ghzids数组
$api_person_ghzids = [];
foreach ($ApiPersonList as $apiperson) {
@ -389,49 +178,50 @@ class UserController extends Controller
$onlyInDb = array_diff($db_person_ghzids, $api_person_ghzids);
// 仅存在于 api接口 中的ghzid
$onlyInApi = array_diff($api_person_ghzids, $db_person_ghzids);
$success_count = 0;
$success_count=0;
foreach ($ApiPersonList as $apiperson) {
$marriage = 0;
if ($apiperson['marriage'] == '未婚') {
$marriage = 2;
$marriage=0;
if($apiperson['marriage']=='未婚'){
$marriage=2;
}
if ($apiperson['marriage'] == '已婚') {
$marriage = 1;
if($apiperson['marriage']=='已婚'){
$marriage=1;
}
$personInfo = [
'ghzid' => $apiperson['ghzid'],
'id_number' => $env == 'dev' ? $apiperson['idNumber'] : $XCX::XCXDecode($apiperson['idNumber']),
'id_number' => $env=='dev'? $apiperson['idNumber']:$XCX::XCXDecode($apiperson['idNumber']),
'name' => $apiperson['name'],
'birthday' => $apiperson['birthday'],
'sex' => $apiperson['sex'],
'phone' => $env == 'dev' ? $apiperson['phone'] : $XCX::XCXDecode($apiperson['phone']),
'married' => $marriage,
'phone' => $env=='dev'?$apiperson['phone']:$XCX::XCXDecode($apiperson['phone']),
'married' =>$marriage,
'user_id' => $user->id,
'patient_type' => $apiperson['patientType'],
'updated_at' => date('Y-m-d H:i:s')
'updated_at'=>date('Y-m-d H:i:s')
];
if (in_array($apiperson['ghzid'], $intersection)) { //双方都有的,更新
$u = DB::table('web_user_person')->where(['user_id' => $user->id, 'ghzid' => $apiperson['ghzid']])->update($personInfo);
if ($u) $success_count += $u;
if (in_array($apiperson['ghzid'], $intersection)) {//双方都有的,更新
$u=DB::table('web_user_person')->where(['user_id' => $user->id, 'ghzid' => $apiperson['ghzid']])->update($personInfo);
if($u) $success_count+=$u;
}
if (in_array($apiperson['ghzid'], $onlyInApi)) { //小程序新增的 添加
$i = DB::table('web_user_person')->insert($personInfo);
if ($i) $success_count++;
$i=DB::table('web_user_person')->insert($personInfo);
if($i) $success_count++;
}
}
if (count($onlyInDb) > 0) { //小程序不存在的用户 ,数据进行删除
$d = DB::table('web_user_person')->where(['user_id' => $user->id])->whereIn('ghzid', $onlyInDb)->update([
$d=DB::table('web_user_person')->where(['user_id' => $user->id])->whereIn('ghzid',$onlyInDb)->update([
'is_del' => 1
]);
if ($d) $success_count++;
if($d) $success_count++;
}
//设置默认体检人
// $default=DB::table('web_user_person')->where(['user_id' => $user->id,'is_del'=>0,'is_default'=>1])->get();
// $p_list=DB::table('web_user_person')->where(['user_id' => $user->id,'is_del'=>0])->get();
// if(count($p_list)>0 and count($default)===0){
// DB::table('web_user_person')->where(['id'=>$p_list[0]->id])->update(['is_default'=>1]);
// }
// $default=DB::table('web_user_person')->where(['user_id' => $user->id,'is_del'=>0,'is_default'=>1])->get();
// $p_list=DB::table('web_user_person')->where(['user_id' => $user->id,'is_del'=>0])->get();
// if(count($p_list)>0 and count($default)===0){
// DB::table('web_user_person')->where(['id'=>$p_list[0]->id])->update(['is_default'=>1]);
// }
return true;
}
}

@ -14,126 +14,28 @@ class OrderController extends Controller
{
$password = request('password');
$serve_id = request('serve_id');
$exam_id = request('exam_id');
if(!isset($exam_id) or empty($exam_id)) return \Yz::echoError1("体检号不能为空");
$exam_id= request('exam_id');
if ($password !== 'YRtA1rx1iWgbpYKX') return \Yz::echoError1("校验密码失败");
if (isset($serve_id) and !empty($serve_id) and $serve_id <> '') { //到检通知
$orderInfo = DB::table('orders')->where('appointment_number', $serve_id)->orderBy('id', 'desc')->first();
if (!$orderInfo){
return $this->CreateOrder($exam_id);
}else{
if (!!$exam_id) {
if ($orderInfo->status == 1) return \Yz::echoError1("订单未付款");
if ($orderInfo->status == 3) return \Yz::echoError1("订单已取消");
if ($orderInfo->status == 4 || $orderInfo->check_status == 2) return \Yz::echoError1("人员已经到检");
if ($orderInfo->status == 5) return \Yz::echoError1("订单已退款");
// $peis = new PEISApiController();
// $data = [
// "电话号码" => $orderInfo->phone,
// "证件号码" => $orderInfo->id_number,
// ];
// $info = $peis::Post('分诊查询体检号', $orderInfo->hospital_id,$data);
DB::table('orders')->where('id', $orderInfo->id)->update([
'status' => 4,
// 'tj_number'=>$info['data'][0]['体检号'],
'tj_number' => $exam_id,
'check_status' => 2,
'check_time' => date('Y-m-d H:i:s'),
'check_read_status'=>1
]);
return \Yz::Return(true, "", ['id' => $orderInfo->id]);
} else {
return \Yz::echoError1("体检号不能为空");
}
}
} else { //体检直接登记用户信息没经过h5登记。根据体检号查询信息入库
return $this->CreateOrder($exam_id);
}
}
//根据体检号拉取数据进行存储
public function CreateOrder($exam_id)
{
if (isset($exam_id)) {
$orderInfo=DB::table('orders')->where('appointment_number',$serve_id)->orderBy('id','desc')->first();
if(!$orderInfo) return \Yz::echoError1("未找到有效订单");
if(!!$exam_id){
if($orderInfo->status==1) return \Yz::echoError1("订单未付款");
if($orderInfo->status==3) return \Yz::echoError1("订单已取消");
if($orderInfo->status==4 || $orderInfo->check_status==2) return \Yz::echoError1("人员已经到检");
if($orderInfo->status==5) return \Yz::echoError1("订单已退款");
$peis = new PEISApiController();
$data = [
'电话号码' => "",
'证件号码' => "",
'体检号' => $exam_id,
'包含内部信息' => true
"电话号码" => $orderInfo->phone,
"证件号码" => $orderInfo->id_number,
];
$reports = $peis::Post('体检报告查询', 1, $data);
if (isset($reports['data'][0]['收费项目列表'])) {
$data = $reports['data'][0];
$items=[];
foreach ($data['收费项目列表'] as $it) {
$items[]=[
'id' => $it['收费项目Id'],
'name' => $it['收费项目名称'],
'price' => '',
];
}
$buyInfo=[
'combo'=>[
'id'=>0,
'name'=>'',
'price'=>''
],
'items'=>$items,
'group'=>[
'id'=>'',
]
];
$sex = 0;
if ($data['性别'] == '男') $sex = 1;
if ($data['性别'] == '女') $sex = 2;
$dataInfo = [
'hospital_id'=>1,
'title' => $data['套餐名称'],
'type' => $data['单位名称'] == '个人' ? 1 : 2,
'source' => '体检推送',
'name' => $data['姓名'],
'id_number' => $data['证件号码'],
'person_id'=>0,
'buy_info' => json_encode($buyInfo, JSON_UNESCAPED_UNICODE),
'status' => 4,
'plan_number' => $data['分诊信息'],
'appointment_date' => explode('T', $data['登记时间'])[0],
'tj_number' => $exam_id,
'phone' => $data['电话号码'],
'sex' => $sex,
'birthday' => explode('T', $data['出生日期'])[0],
'check_status' => 2,
'check_time' => $data['登记时间'],
];
$insert=DB::table('orders')->insert($dataInfo);
if($insert){
return \Yz::Return(true, "创建成功", ['id' => $insert]);
}else{
return \Yz::echoError1("创建失败");
}
} else {
return \Yz::echoError1("根据体检号查询用户信息出错,结果非预期");
}
} else {
return \Yz::echoError1("体检号不能为空");
}
}
public function GetH5Order()
{
$appointment_number = request('appointment_number');//思信预约完成后的id
if (!isset($appointment_number) || empty($appointment_number)) return \Yz::echoError1('预约id 不能为空');
$order_info = DB::table('orders')->where(['appointment_number' => $appointment_number, 'status' => 2, 'check_status' => 1])->first();
if (!!$order_info) {
$order_info->buy_info = json_decode($order_info->buy_info, true);
$order_info->erxian_appointment_info = json_decode($order_info->erxian_appointment_info, true);
} else {
return \Yz::echoError1('未找到有效订单');
$info = $peis::Post('分诊查询体检号', $orderInfo->hospital_id,$data);
DB::table('orders')->where('id',$orderInfo->id)->update([
'status'=>4,
'tj_number'=>$info['data'][0]['体检号'],
'check_status'=>2,
'check_time'=>date('Y-m-d H:i:s')
]);
}
return \Yz::Return(true, '获取成功', [
'info' => $order_info
]);
return \Yz::Return(true,"",['id'=>$orderInfo->id]);
}
}

@ -1,65 +0,0 @@
<?php
namespace App\Http\Controllers\API\Internal;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class PlanController extends Controller
{
//给自助机用接口
//获取可用号源列表,
public function PlanList()
{
$hospital_id =request('hospital');
$date=request('date');
$is_vip=request('is_vip');
$checkup_type_id=(string)request('checkup_type_id');//体检类型表对应id
if(!isset($checkup_type_id)) return \Yz::echoError1("体检类型不能为空");
$currentDateTime = now();
$list=DB::table('plans')
->where('date',$date)->whereIn('status',[1])
->whereRaw('CONCAT(date, " ", time) >?', [$currentDateTime])
->where(function($query) use ($checkup_type_id) {
$query->whereRaw('JSON_CONTAINS(checkup_type_id, ?, "$")', [$checkup_type_id])
->orWhereRaw('JSON_CONTAINS(checkup_type_id, ?, "$")', ["8"]);
})
->where(['hospital_id'=>$hospital_id,'type'=>1,'is_del'=>0])
->where('is_vip','=',$is_vip);
$list=$list->get();
return \Yz::Return(true,"查询完成",['list'=>$list]);
}
//给自助机用接口
//占用号源
public function UsePlan(){
$id =request('id');
$plan=DB::table('plans')->where('id',$id)->first();
if(!$plan) return \Yz::echoError1("该号源不存在");
if($plan->status<>1) return \Yz::echoError1("该号源已被占用,请重新选择");
$u=DB::table('plans')->where(['id'=>$id,'status'=>1,'is_del'=>0])->update(['status'=>2]);
if($u){
return \Yz::Return(true,'占用成功',['id'=>$id]);
}else{
return \Yz::echoError1("操作失败");
}
}
public function CancelUsePlan()
{
$id =request('id');
$plan=DB::table('plans')->where('id',$id)->first();
if(!$plan) return \Yz::echoError1("该号源不存在");
if($plan->status<>2) return \Yz::echoError1("该号源未被占用,无需撤销");
$u=DB::table('plans')->where(['id'=>$id])->update(['status'=>1]);
if($u){
return \Yz::Return(true,'撤销占用成功',['id'=>$id]);
}else{
return \Yz::echoError1("操作失败");
}
}
}

@ -3,7 +3,6 @@
namespace App\Http\Controllers\API\Internal;
use App\Http\Controllers\Controller;
use App\Services\ComboItemGroupService;
use App\Services\ReportService;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Http\Request;
@ -31,14 +30,11 @@ class SiXinPushController extends Controller
//如果推送的是报告
if ($code == 'report') {
$report = new ReportService();
$report_save= $report->Save($content);
return \Yz::Return($report_save['status'],$report_save['msg'],$report_save['data']);
return $report->Save($content);
}
//如果推送的是套餐、项目、分组
if ($code == 'updateInfo') {
$ComboItemGroup=new ComboItemGroupService();
return $ComboItemGroup->Save($content);
}
return \Yz::Return(true, "接收完成", $code);
} else {
@ -69,7 +65,7 @@ class SiXinPushController extends Controller
$table->string('mark', 50)->index();
$table->longText('post_data');
$table->text('response_data')->nullable();
$table->string('request_url', 2000);
$table->string('request_url', 300);
$table->timestamps();
});
}

@ -1,66 +0,0 @@
<?php
namespace App\Http\Controllers\API\Internal;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class TransferCodeController extends Controller
{
//查询转赠码
public function GetTransferCode(Request $request)
{
$code_num = request('code_num');
$user_name = request('user_name');
$user_id_number = request('user_id_number');
$code=DB::table('transfer_code')->where(['code'=>$code_num,'status'=>1,'is_del'=>0])->first();
if(!$code) return \Yz::echoError1("此转赠码不可用");
$u=DB::table('transfer_code')->where(['code'=>$code_num])->update([
'user_name'=>$user_name,
'user_id_number'=>$user_id_number,
]);
$data=[
'code_num'=>$code->code,
'status'=>$code->status,
'price'=>$code->price,
'combo_id'=>$code->combo_id,
'user_name'=>$code->user_name,
'user_id_number'=>$code->user_id_number
];
return \Yz::Return(true,"查询成功",$data);
}
//操作转赠码
public function HandleTransferCode(Request $request)
{
$validatedData = $request->validate([
'type' => 'required',
'code_num' => 'required'
]);
$type = $validatedData['type']; //1使用2撤销使用
$code_num = $validatedData['code_num'];
$tj_num = request('tj_num');
$data=[];
$u=false;
if($type==1){
$data=[
'status'=>2,
'tj_num'=>isset($tj_num)?$tj_num:null,
];
$u=DB::table('transfer_code')->where(['code'=>$code_num,'status'=>1,'is_del'=>0])->update($data);
}
if($type==2){
$data=[
'status'=>1,
'tj_num'=>null,
];
$u=DB::table('transfer_code')->where(['code'=>$code_num,'status'=>2,'is_del'=>0])->update($data);
}
$cha=DB::table('transfer_code')->where(['code'=>$code_num])->first();
if($u){
return \Yz::Return(true,"操作成功",['code_num'=>$code_num,'status'=>$cha->status]);
}else{
return \Yz::echoError1("操作失败");
}
}
}

@ -6,8 +6,6 @@ use App\Http\Controllers\Controller;
use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
@ -17,59 +15,22 @@ class PEISApiController extends Controller
public static function Api($url_code, $code)
{
//正式
$env=config('app.globals.Env');
if($env=='pro') { //如果是正式环境
//思信测试环境H5正式环境
$url = 'http://220.174.210.111:8888';
$api['套餐详情查询'] = "{$url}/PEISCommon/QueryComboDetail?key=YmMxOGI2MDUxZmFh";
$api['自选项目查询'] = "{$url}/PEISCommon/QueryGroups?key=YmMxOGI2MDUxZmFh";
$api['套餐查询'] = "{$url}/PEISCommon/QueryCombos?key=YmMxOGI2MDUxZmFh";
$api['套餐项目检查'] = "{$url}/PEISCommon/CheckComboAndGroup?key=YmMxOGI2MDUxZmFh";
$api['个检预约'] = "{$url}/PEISCommon/PersonAppointment?key=YmMxOGI2MDUxZmFh";
$api['个检预约查询'] = "{$url}/PEISCommon/QueryPersonAppointment?key=YmMxOGI2MDUxZmFh";
$api['个检预约取消'] = "{$url}/PEISCommon/CancelPersonAppointment?key=YmMxOGI2MDUxZmFh";
$api['团检登记查询'] = "{$url}/PEISCommon/QueryUnitAppointmentReg?key=YmMxOGI2MDUxZmFh";
$api['团检预约'] = "{$url}/PEISCommon/UnitAppointment?key=YmMxOGI2MDUxZmFh";
$api['团检预约查询'] = "{$url}/PEISCommon/QueryUnitAppointment?key=YmMxOGI2MDUxZmFh";
$api['团检预约取消'] = "{$url}/PEISCommon/CancelUnitAppointment?key=YmMxOGI2MDUxZmFh";
$api['体检报告查询'] = "{$url}/PEISCommon/QueryExamReport?key=YmMxOGI2MDUxZmFh";
$api['预约时段修改'] = "{$url}/PEISCommon/ModifyAppointmentDTRange?key=YmMxOGI2MDUxZmFh";
$api['修改用户预约时间'] = "{$url}/ExtAPI/SetAppointmentMoment?key=YmMxOGI2MDUxZmFh&{$code}";
$api['分诊查询体检号'] = "{$url}/PEISCommon/QueryEventNo?key=YmMxOGI2MDUxZmFh";
$api['单位分组批次查询'] = "{$url}/PEISCommon/QueryBatchAndGroup?key=YmMxOGI2MDUxZmFh";
$api['报告时间计算'] = "{$url}/Home/CalcReportDays?eventNos={$code}";
$api['弃检接口'] = "{$url}/Home/AbandonCheck";
$api['检后签到'] = "{$url}/Home/PostExamSignIn?eventNo={$code}";
}
if($env=='dev') { //如果是测试环境
$url = 'https://dqgatjzx-wx.sixinyun.com';
$api['套餐详情查询'] = "{$url}/PEISCommon/QueryComboDetail/{$code}";
$api['自选项目查询'] = "{$url}/PEISCommon/QueryGroups/{$code}";
$api['套餐查询'] = "{$url}/PEISCommon/QueryCombos/{$code}";
$api['套餐项目检查'] = "{$url}/PEISCommon/CheckComboAndGroup/{$code}";
$api['个检预约'] = "{$url}/PEISCommon/PersonAppointment/{$code}";
$api['个检预约查询'] = "{$url}/PEISCommon/QueryPersonAppointment/{$code}";
$api['个检预约取消'] = "{$url}/PEISCommon/CancelPersonAppointment/{$code}";
$api['团检登记查询'] = "{$url}/PEISCommon/QueryUnitAppointmentReg/{$code}";
$api['团检预约'] = "{$url}/PEISCommon/UnitAppointment/{$code}";
$api['团检预约查询'] = "{$url}/PEISCommon/QueryUnitAppointment/{$code}";
$api['团检预约取消'] = "{$url}/PEISCommon/CancelUnitAppointment/{$code}";
$api['体检报告查询'] = "{$url}/PEISCommon/QueryExamReport/{$code}";
$api['预约时段修改'] = "{$url}/PEISCommon/ModifyAppointmentDTRange/{$code}";
$api['修改用户预约时间'] = "http://220.174.210.111:8888/ExtAPI/SetAppointmentMoment?key=YmMxOGI2MDUxZmFh&{$code}";
$api['分诊查询体检号'] = "{$url}/PEISCommon/QueryEventNo/{$code}";
$api['单位分组批次查询'] = "{$url}/PEISCommon/QueryBatchAndGroup/{$code}";
$api['报告时间计算'] = "{$url}/Home/CalcReportDays?eventNos={$code}";
$api['弃检接口'] = "{$url}/Home/AbandonCheck/{$code}";
$api['检后签到'] = "{$url}/Home/PostExamSignIn?eventNo={$code}";
}
$url = 'https://dqgatjzx-wx.sixinyun.com';
$api['套餐详情查询'] = "{$url}/PEISCommon/QueryComboDetail/{$code}";
$api['自选项目查询'] = "{$url}/PEISCommon/QueryGroups/{$code}";
$api['套餐查询'] = "{$url}/PEISCommon/QueryCombos/{$code}";
$api['套餐项目检查'] = "{$url}/PEISCommon/CheckComboAndGroup/{$code}";
$api['个检预约'] = "{$url}/PEISCommon/PersonAppointment/{$code}";
$api['个检预约查询'] = "{$url}/PEISCommon/QueryPersonAppointment/{$code}";
$api['个检预约取消'] = "{$url}/PEISCommon/CancelPersonAppointment/{$code}";
$api['团检登记查询'] = "{$url}/PEISCommon/QueryUnitAppointmentReg/{$code}";
$api['团检预约'] = "{$url}/PEISCommon/UnitAppointment/{$code}";
$api['团检预约查询'] = "{$url}/PEISCommon/QueryUnitAppointment/{$code}";
$api['团检预约取消'] = "{$url}/PEISCommon/CancelUnitAppointment/{$code}";
$api['体检报告查询'] = "{$url}/PEISCommon/QueryExamReport/{$code}";
$api['预约时段修改'] = "{$url}/PEISCommon/ModifyAppointmentDTRange/{$code}";
$api['修改用户预约时间'] = "http://10.0.20.227:8888/ExtAPI/SetAppointmentMoment?key=YmMxOGI2MDUxZmFh&{$code}";
$api['分诊查询体检号'] = "{$url}/PEISCommon/QueryEventNo/{$code}";
return $api["{$url_code}"] ?? $url_code;
}
@ -103,7 +64,11 @@ class PEISApiController extends Controller
if (!json_decode($res_string, true)) {
throw new HttpResponseException( \Yz::echoError1("体检系统提示:".$res_string));
return \Yz::Return(false, '获取失败', [
'url' => $url,
'data' => $data,
'res' => $res_string
]);
}
$res = json_decode($res_string, true);
if ($res['ResultCode'] != 0){
@ -142,30 +107,25 @@ class PEISApiController extends Controller
self::$request->response_data = $save_res;
self::$request->save();
return $res_string;
}
public static function Get($url,$code,$mark)
{
self::RequestLog($url, [], $code,$mark);
$response = Http::get($url);
if ($response->successful()) {
$res = $response->json();
self::$request->response_data = json_encode($res, JSON_UNESCAPED_UNICODE);
self::$request->save();
return $res;
} else {
$status = $response->status();
// 获取响应体作为字符串
$body = $response->body();
self::$request->response_data = $body;
self::$request->save();
throw new HttpResponseException(\Yz::echoError1("调用".$mark."接口失败:" . $status . "body:" . $body));
if (!json_decode($res_string, true)) {
return \Yz::Return(false, '获取失败', [
'url' => $url,
'data' => $data,
'res' => $res_string
]);
}
$res = json_decode($res_string, true);
if ($res['ResultCode'] != 0){
throw new HttpResponseException( \Yz::echoError1("体检系统提示:". $res['ResultContent']));
}
return [
'code' => $res['ResultCode'],
'message' => $res['ResultContent'],
'data' => $res['Records']
];
}
public static function RequestLog($url, $post_data, $code, $mark)
@ -197,7 +157,7 @@ class PEISApiController extends Controller
$table->string('mark', 50)->index();
$table->text('post_data');
$table->text('response_data')->nullable();
$table->string('request_url', 2000);
$table->string('request_url', 300);
$table->timestamps();
});
}

@ -1,54 +0,0 @@
<?php
namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class SendMsgCodeController extends Controller
{
//创建验证码
public function SendMsgCode(Request $request)
{
$mobile = request('mobile');
//查找相同手机号1分钟内是否发送过
$code = DB::table('send_code')->where('mobile', $mobile)->where('created_at', '>=', date('Y-m-d H:i:s', time() - 60))->first();
if ($code) {
return \Yz::echoError1("操作太频繁,请稍后再试");
}
$code = rand(100000, 999999);
//获取当前时间5分钟后的日期时间
$end_time = date('Y-m-d H:i:s', time() + 300);
$i=DB::table('send_code')->insert([
'mobile' => $mobile,
'code' => $code,
'created_at' => date('Y-m-d H:i:s'),
'end_time' => $end_time
]);
if ($i) {
$aspnet=new AspNetZhuanController();
$aspnet::SendYanZhengMaCode(1,$mobile,$code);
return \Yz::Return(true,"发送成功",[]);
} else {
return \Yz::echoError1("发送失败");
}
}
//验证验证码
public function CheckMsgCode(){
$mobile = request('mobile');
$code = request('code');
$u = DB::table('send_code')
->where('mobile', $mobile)
->where('code', $code)
->where('end_time', '>=', date('Y-m-d H:i:s'))
->where(['status' => 1])
->update(['status' => 2]);
if($u){
return \Yz::Return(true,"验证成功",['data'=>$code]);
}else{
return \Yz::echoError1("验证码无效");
}
}
}

@ -25,15 +25,6 @@ class OrderController extends Controller
$doctor = request('doctor');//预约的医生名字
$appdoctor = request('appdoctor');//协助预约的医生名字
$person= request('person'); //sex,birthday,married,name,id_number,phone
$married_array=["未婚","已婚","丧偶","离婚","其他"];
if(isset($person['married'])){
$key= array_search($person['married'], $married_array);
if ($key !== false) {
$person['married']=$key;
} else {
$person['married']=4;
}
}
if (!isset($hospital_id)) return \Yz::echoError1('医院id不能为空');
if (!isset($type)) return \Yz::echoError1('type体检类型不能为空');
@ -142,7 +133,7 @@ class OrderController extends Controller
//如果有影像科则存储在nmr_list字段
$all_items = DB::table('items')->where(['status' => 1,'keshi_name'=>'影像科'])->get();
foreach ($group_info['items'] as $item) {
foreach ($group_info[0]['items'] as $item) {
foreach ($all_items as $it) {
if ($it->item_id == $item['id']) {
$buy_info['nmr_list'][]=[
@ -248,230 +239,6 @@ class OrderController extends Controller
return \Yz::echoError1('操作失败');
}
}
//客服预约,只占用号源
public function CreateYuYueOrder()
{
$hospital_id = request('hospital');
$person_id = request('person_id');
$combo_id = request('combo_id');
$type = request('type');//1个检2团检
$group_id = request('group_id');//团检id
$item_ids = request('item_ids');//自选item的ids
$plan_id = request('plan_id');//号源id
$doctor = request('doctor');//预约的医生名字
$appdoctor = request('appdoctor');//协助预约的医生名字
$person= request('person'); //sex,birthday,married,name,id_number,phone
$married_array=["未婚","已婚","丧偶","离婚","其他"];
if(isset($person['married'])){
$key= array_search($person['married'], $married_array);
if ($key !== false) {
$person['married']=$key;
} else {
$person['married']=4;
}
}
if (!isset($hospital_id)) return \Yz::echoError1('医院id不能为空');
if (!isset($type)) return \Yz::echoError1('type体检类型不能为空');
if ($type != 1 && $type != 2) {
return \Yz::echoError1('type参数体检类型错误');
}
if (!isset($plan_id)) return \Yz::echoError1('号源id不能为空');
if ($type == 2 and !isset($group_id)) return \Yz::echoError1('团检group_id不能为空');
if ($type == 1 and isset($group_id)) return \Yz::echoError1('体检类型:个检 与group_id冲突');
$title = "自选项目";
$price = 0;
$true_price = 0;//订单真实支付金额
$buy_info = [
'combo' => [
'id' => 0,
'name' => $title,
'price' => 0,
],
'items' => [],
'group' => [
'id' => '',
],
'nmr_list'=>[]
];
//如果是套餐
$TJ_Leixing_id=1;//存储用体检类型
$checkup_type_id = false; //体检类型id
if (isset($combo_id) and $combo_id <> 0) {
$combo_info = DB::table('combos')->where(['combo_id' => $combo_id, 'status' => 1])->first();
if (!$combo_info) return \Yz::echoError1("套餐不存在");
if (!isset($combo_info->checkup_type_id)) return \Yz::echoError1("套餐未关联体检类型");
$checkup_type_id = $combo_info->checkup_type_id;
$TJ_Leixing_id=$checkup_type_id;
$price += $combo_info->price;
$title = $combo_info->name;
$buy_info['combo'] = [
'id' => $combo_info->combo_id,
'name' => $combo_info->name,
'price' => $combo_info->price,
];
//如果有影像科则存储在nmr_list字段
$comboItem=DB::table('combo_items')->where(['combo_id' => $combo_id, 'status' => 1,'keshi_name'=>'影像科'])->get();
if(count($comboItem)>0){
foreach ($comboItem as $item){
$buy_info['nmr_list'][]=[
'item_id' => $item->item_id,
'name' => $item->name,
];
}
}
}
//如果有自选项目
$items_list = [];
if (count($item_ids) != 0) {
$items_list = DB::table('items')->whereIn('item_id', $item_ids)->where(['status' => 1])->get();
$existingIds = [];
foreach ($items_list as $item) {
$price += $item->price;
$existingIds[] = $item->item_id;
$buy_info['items'][] = [
'id' => $item->item_id,
'name' => $item->name,
'price' => $item->price
];
//如果有影像科则存储在nmr_list字段
if($item->keshi_name=='影像科'){
$buy_info['nmr_list'][]=[
'item_id' => $item->item_id,
'name' => $item->name,
];
}
}
$missingIds = array_diff($item_ids, $existingIds);
if (count($missingIds) > 0) return \Yz::echoError1("部分自选项目不可用Id:" . implode(', ', $missingIds));
}
$true_price = $price;
//如果是团检
$group_info = false;
if ($type == 2) {
$P = new PersonController();
$data = [
'电话号码' => null,
'证件号码' => null,
'预约Id' => $group_id
];
$group_info = $P->group_info($hospital_id, $data);
$group_info = $group_info[0];
$buy_info['group'] = [
'id' => $group_id,
'combo_name' => $group_info['combo_name'],
'combo_id' => $group_info['combo_id'],
'group_name' => $group_info['group_name'],
'items' => $group_info['items'],
'group_id' => $group_info['group_id'],
];
$TJ_Leixing_id=$group_info['checkup_type_id'];
$title = "单位团检" . $group_info['combo_name'];
$price = $price + $group_info['sixi_zong_ji_jin_e'];
$need_pay = ($price - $group_info['tongshou_xiane']) > 0 ? $price - $group_info['tongshou_xiane'] : 0;
//团检订单金额为减去统收后的金的
$price = $need_pay;
$true_price = $need_pay;
//如果有影像科则存储在nmr_list字段
$all_items = DB::table('items')->where(['status' => 1,'keshi_name'=>'影像科'])->get();
foreach ($group_info['items'] as $item) {
foreach ($all_items as $it) {
if ($it->item_id == $item['id']) {
$buy_info['nmr_list'][]=[
'item_id' => $item->item_id,
'name' => $item->name,
];
}
}
}
}
//调用思信接口判断各个项目是否可用
$check_items = [];
foreach ($item_ids as $item_id) {
$check_items[] = ['Id' => $item_id];
}
if ((isset($combo_id) and $combo_id <> 0) || count($check_items) != 0) {
$item_check = self::item_check($hospital_id, [
'人员信息列表' => [[
"序号" => 0,
"性别" => $person['sex'] == 1 ? '男' : '女',
"年龄" => floor((time() - strtotime($person['birthday'])) / 86400 / 360),
"婚姻状态" => $person['married']== 1 ? '已婚' : '未婚',
]],
'套餐Id' => $combo_id == 0 ? null : $combo_id,
'可选项目信息' => $check_items,
]);
if (count($item_check['data']) != 1) {
return \Yz::echoError1("体检系统提示:" . $item_check['message']);
}
}
//检查号源是否可用
$plan = new PlanController();
$plan_check = $plan->CheckPlan($plan_id, $hospital_id, $type, $person['sex'], $price, $checkup_type_id);
if ($plan_check['status'] === false) return \Yz::echoError1($plan_check['msg']);
$plan = $plan_check['plan'];
//如果是团检 判断号源在 团检登记人的有效时间范围内
$plan_datetime = $plan->date . ' ' . $plan->time;
if (!!$group_info) {
if (!($plan_datetime > $group_info['start_time'] . ' 00:00:00' and $plan_datetime < $group_info['end_time'] . ' 23:59:59')) {
return \Yz::echoError1("预约日期不在单位有效时间范围内,请重新选择");
}
}
//构建订单号
$order_num = $this->generateOrderNumber();
$data = [
'title' => $title,
'type' => $type,
'source' => 'web',
'web_user_id' =>0,
'checkup_type_id'=>$TJ_Leixing_id,
'person_id' => 0,
'name' => $person['name'],
'id_number' => $person['id_number'],
'buy_info' => json_encode($buy_info, JSON_UNESCAPED_UNICODE),
'price' => $price,
'true_price' => $true_price,
'order_number' => $order_num,
'status' => 1,
'appointment_date' => $plan->date,
'appointment_time' => $plan->time,
'plan_id' => $plan->id,
'plan_number' => $plan->plan_number,
'combo_id' => $combo_id,
'hospital_id' => $hospital_id,
'doctor' => $doctor,
'appdoctor'=>$appdoctor,
'phone' => $person['phone'],
'sex' => $person['sex'],
'birthday' => $person['birthday'],
'married' => $person['married'],
];
DB::beginTransaction();
$insert = DB::table('orders_yuyue')->insertGetId($data);
$up_plan = DB::table('plans')->where(['id' => $plan->id, 'status' => 1])->update([
'status' => 2
]);
if ($insert and $up_plan) {
DB::commit();
return \Yz::return(true, "操作成功", ['orderid'=>$insert]);
} else {
DB::rollBack();
return \Yz::echoError1('操作失败');
}
}
public function item_check($hospital, $data)
{
$peis = new PEISApiController();

@ -14,11 +14,9 @@ use Illuminate\Support\Facades\Storage;
class XCXApiController extends Controller
{
public static $request;
// public static $appid = "13a159e438a742dd932c9bddbfaa41e5";//appid测试
public static $appid = "bce44f3abdd24f169193ab6f70326457";//appid 正式
public static $appid = "13a159e438a742dd932c9bddbfaa41e5";//appid
public static $signType = "OPENAPI-SHA256-RSA2048";//签名认证类型
// public static $baseUrl = "https://xdfe-api.hnxdfe.com/hisminitest";
public static $baseUrl = "https://xdfe-api.hnxdfe.com/hisminipro";
public static $baseUrl = "https://xdfe-api.hnxdfe.com/hisminitest";
public static function Api($url_code)
@ -99,7 +97,7 @@ class XCXApiController extends Controller
$table->string('mark', 50)->index();
$table->text('post_data');
$table->text('response_data')->nullable();
$table->string('request_url', 2000);
$table->string('request_url', 300);
$table->timestamps();
});
}

@ -1,579 +0,0 @@
<?php
namespace App\Http\Controllers\H5;
use App\Http\Controllers\API\PEISApiController;
use App\Http\Controllers\Controller;
use DateInterval;
use DatePeriod;
use DateTime;
use GuzzleHttp\Client;
use GuzzleHttp\Promise;
use Illuminate\Http\Request;
use App\Http\Controllers\API\H5\FenzhenController as fzc;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;
class FenzhenController extends Controller
{
public function check_in_action(Request $request)
{
$id_number = $request->post('id_number');
$id = $request->post('id');
if (!$id_number) return \Yz::echoError('请输入身份证');
$queue = [];
$fzc = new fzc();
$res = $fzc->fz('change', [
'id_number' => $id_number,
'id' => $id,
]);
if ($res['code'] == 200) {
$queue_info = $res['data']['queue'];
if (!!$queue_info) {
$queue = [[
'id' => $queue_info['id'],
'name' => $queue_info['name'],
'clinic' => $queue_info['clinic_name'],
'item' => $queue_info['item_name'],
]];
}
}
return \Yz::Return(true, '操作完成', [
'queue' => $queue
]);
}
public function check_in(Request $request)
{
$id_number = $request->get('id_number');
if (!$id_number) {
$id_number = '';
}
$queue = [];
if (!!$id_number) {
$fzc = new fzc();
$res = $fzc->fz('search', [
'id_number' => $id_number
]);
if ($res['code'] == 200) {
$queue_info = $res['data']['queue'];
if (!!$queue_info) {
$queue = [[
'id' => $queue_info['id'],
'name' => $queue_info['name'],
'clinic' => $queue_info['clinic_name'],
'item' => $queue_info['item_name'],
]];
}
}
}
return view('fenzhen', [
'id_number' => $id_number,
'queue' => $queue
]);
}
public function export(){
$fzc = new fzc();
$date=request('date');
$res = $fzc->fz('export', [
'date' => $date
]);
$table_list=$res['data']['table1'];
$clinic_list=$res['data']['table2'];
$table_list3=$res['data']['table3'];
// dd(json_encode($res['data'],JSON_UNESCAPED_UNICODE));
$template_path = Storage::path('public/excel/check_time.xlsx');
$spreadsheet = IOFactory::load($template_path);
$worksheet = $spreadsheet->getActiveSheet();
$styleArray = [
'borders' => [
'allBorders' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => 'FF000000'],
],
],
];
$row = 3;
$col = [
'A' => 'date',
'B' => 'name',
'C' => 'number',
'D' => 'phone',
'E' => 'group_name',
'F' => 'clinic',
'G' => 'doctor',
'H' => 'queue',
'I' => 'calling',
'J' => 'done',
'K' => 'clinic_check_time',
'L' => 'true_check_time',
'M' => 'timeout_check_time',
'N' => 'clinic_wait_time',
'O' => 'true_wait_time',
'P' => 'timeout_wait_time',
'Q' => 'clinic_all_time',
'R' => 'true_all_time',
'S' => 'timeout_all_time',
];
foreach ($table_list as $table_item) {
foreach ($col as $index => $key) {
$worksheet->setCellValueExplicit($index . $row, $table_item[$key], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
}
$row++;
}
$worksheet->getStyle('A3:S' . ($row - 1))->applyFromArray($styleArray);
$row = 3;
$col = [
'U' => 'group_name',
'V' => 'clinic',
'W' => 'doctor',
'X' => 'check',
'Y' => 'check_out',
'Z' => 'wait',
'AA' => 'wait_out',
];
foreach ($clinic_list as $clinic_item) {
foreach ($col as $index => $key) {
$worksheet->setCellValueExplicit($index . $row, $clinic_item[$key], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
}
$row++;
}
$worksheet->getStyle('U3:AA' . ($row - 1))->applyFromArray($styleArray);
$row = 3;
$col = [
'AC' => 'date',
'AD' => 'name',
'AE' => 'number',
'AF' => 'phone',
'AG' => 'combo',
'AH' => 'clinic_time',
'AI' => 'used_time',
'AJ' => 'timeout',
];
//汇总信息
$usercount=count($table_list3);
$biaozhun_timecount=0;
$shiji_timecount=0;
$chaoshi_timecount=0;
$weichaoshi_count=0;
$tj_numbers=[];
foreach ($table_list3 as $table_list3_i) {
$tj_numbers[]=$table_list3_i['uuid'];
$biaozhun_timecount+=$table_list3_i['clinic_time'];
$shiji_timecount+=$table_list3_i['used_time'];
$chaoshi_timecount+=$table_list3_i['timeout'];
if($table_list3_i['timeout']<=0){
$weichaoshi_count++;
}
$peis = new PEISApiController();
$data = [
'电话号码' => "",
'证件号码' => "",
'体检号' => $table_list3_i['uuid'],
'包含内部信息' => true
];
$reports = $peis::Post('体检报告查询', 1, $data);
if(isset($reports['data'][0]['套餐名称'])){
$table_list3_i['combo']=$reports['data'][0]['套餐名称'];
}else{
$table_list3_i['combo']='';
}
foreach ($col as $index => $key) {
$worksheet->setCellValueExplicit($index . $row, $table_list3_i[$key], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
}
$row++;
}
$zhushilv=0;
if($usercount>0){
$zhushilv=$weichaoshi_count/$usercount;
}
$worksheet->setCellValueExplicit('AC' . $row, '汇总', \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AD' . $row, '客户总数', \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AE' . $row, $usercount, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AG' . $row, '总用时:', \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AH' . $row, $biaozhun_timecount, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AI' . $row, $shiji_timecount, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AJ' . $row, $chaoshi_timecount, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AD' . ($row+1), '未超时总数', \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AE' . ($row+1), $weichaoshi_count, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AD' . ($row+2), "体检准时率", \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AE' . ($row+2),$zhushilv , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->getStyle('AC3:AJ' . ($row +2))->applyFromArray($styleArray);
//准时到检率
$tj_numbers=implode(",", $tj_numbers);
$peis = new PEISApiController();
$wait=$peis::Get($peis::Api('报告时间计算',$tj_numbers),'460107000001',"报告时间计算");
$jianhou_sign_count=0;
$zhunshi_count=0;
//dd($wait);
if(isset($wait['Data'])){
$jianhou_sign_count=count($wait['Data']);
}
foreach ($table_list3 as $key=> $fz_value) {
foreach ($wait['Data'] as $index => $sx_value) {
if($fz_value['uuid']==$sx_value['体检号']){
if($date.' '.$fz_value['end_time']>$sx_value['检后签到时间']){
$zhunshi_count++;
}
}
}
}
$daojianlv=0;
if($jianhou_sign_count>0){
$daojianlv=$zhunshi_count/$jianhou_sign_count;
}
$worksheet->setCellValueExplicit('AL' . 3,$date , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AM' . 3,$zhunshi_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AN' . 3,$jianhou_sign_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AO' . 3,round($daojianlv, 2) , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->getStyle('AL3:AO' . 3)->applyFromArray($styleArray);
//预约率
$yyl_yuyue_count=0;//预约人数
$yyl_tj_count=0;//体检总人数
$yuyuelv=0;
$yuyueList=DB::table('orders')->where(['appointment_date'=>$date])->whereIn('status',[2,4])->whereNotNull(['appointment_number'])->get();
$yyl_yuyue_count=count($yuyueList);
$yyl_tj_count=$usercount;
if($yyl_tj_count>0){
$yuyuelv=$yyl_yuyue_count/$yyl_tj_count;
}
$worksheet->setCellValueExplicit('AL' . 7,$date , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AM' . 7,$yyl_yuyue_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AN' . 7,$yyl_tj_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AO' . 7,round($yuyuelv, 2) , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->getStyle('AL7:AO' . 7)->applyFromArray($styleArray);
//预约准时率
$yyzsl_ren_count=0;//预约准时到达人数
$yyzsl_zong_count=0;//预约总人数
$yyzsl_zong_count=$yyl_yuyue_count;
foreach ($yuyueList as $key=> $yy_value) {
if($yy_value->appointment_date.' '.$yy_value->appointment_time > $yy_value->check_time){
$yyzsl_ren_count++;
}
}
$zhunshilv=0;
if($yyzsl_zong_count>0){
$zhunshilv=$yyzsl_ren_count/$yyzsl_zong_count;
}
$worksheet->setCellValueExplicit('AL' . 11,$date , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AM' . 11,$yyzsl_ren_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AN' . 11,$yyzsl_zong_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AO' . 11,round($zhunshilv, 2) , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->getStyle('AL11:AO' . 11)->applyFromArray($styleArray);
//新建Sheet2
// $worksheet2 = new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet($spreadsheet, 'Sheet2');
// $spreadsheet->addSheet($worksheet2);
// $worksheet2->setCellValue('A1', 'Foo');
// $worksheet2->setCellValue('B1', 'Bar');
$file_name = Str::orderedUuid();
$dir_path = "public/excel/" . date('Ym') . '/' . $file_name;
Storage::makeDirectory($dir_path);
$name_date = date('n.j', strtotime($date . ' 00:00:00'));
$excel_path = $dir_path . "/体检报表-时间监控$name_date.xlsx";
$writer = new Xlsx($spreadsheet);
$writer->save(Storage::path($excel_path));
$url = Storage::url($excel_path);
return \Yz::Return(true,"获取成功",['url' => env('APP_URL').$url]);
}
function generateDateArray($startDate, $endDate) {
if ($startDate === $endDate) {
return [$startDate];
}
$dates = [];
$start = new DateTime($startDate);
$end = new DateTime($endDate);
// 设置结束日期为最后一日的末尾时间23:59:59
$end->setTime(23, 59, 59);
// 创建一个 DatePeriod 对象
$interval = new DateInterval('P1D'); // 每日间隔
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $date) {
$dates[] = $date->format("Y-m-d");
}
return $dates;
}
public function export2(){
ini_set('memory_limit', '256M');
$dates=request('dates');
if(!$dates){
return \Yz::echoError1('请选择日期');
}
$dates=$this->generateDateArray($dates[0],$dates[1]);
if(count($dates)>30){
return \Yz::echoError1('最多只能选择30天');
}
$table_list=[];
$clinic_list=[];
$table_list3=[];
$client = new Client();
$url = env('FENZHEN_URL');
$header=[
'Authorization' => 'Bearer BD30333C-CBD4-4BA3-A27C-76727FF4D8B1',
'Content-Type' => 'application/json; charset=utf-8',
];
$promises=[];
foreach ($dates as $date) {
$promises[]=$client->postAsync($url.'/api/Open/TiJian/export',['headers' => $header, 'json' => ['date'=>$date]]);
}
// 等待所有请求完成
$results = Promise\Utils::settle($promises)->wait();
foreach ($results as $key => $result) {
if ($result['state'] === 'fulfilled') {
$response = $result['value'];
$res=json_decode($response->getBody(),true);
// echo "Response from $key: " . $response->getBody() . "\n";
$table_list = array_merge($table_list, $res['data']['table1'] ?? []);
$clinic_list = array_merge($clinic_list, $res['data']['table2'] ?? []);
$table_list3 = array_merge($table_list3, $res['data']['table3'] ?? []);
}
}
// foreach ($dates as $date) {
// $res = $fzc->fz('export', [
// 'date' => $date
// ]);
//
// // 使用 array_merge 逐个追加每日期的数据到总列表中
// $table_list = array_merge($table_list, $res['data']['table1'] ?? []);
// $clinic_list = array_merge($clinic_list, $res['data']['table2'] ?? []);
// $table_list3 = array_merge($table_list3, $res['data']['table3'] ?? []);
// }
$template_path = Storage::path('public/excel/check_time.xlsx');
$spreadsheet = IOFactory::load($template_path);
$worksheet = $spreadsheet->getActiveSheet();
$styleArray = [
'borders' => [
'allBorders' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => 'FF000000'],
],
],
];
$row = 3;
$col = [
'A' => 'date',
'B' => 'name',
'C' => 'number',
'D' => 'phone',
'E' => 'group_name',
'F' => 'clinic',
'G' => 'doctor',
'H' => 'queue',
'I' => 'calling',
'J' => 'done',
'K' => 'clinic_check_time',
'L' => 'true_check_time',
'M' => 'timeout_check_time',
'N' => 'clinic_wait_time',
'O' => 'true_wait_time',
'P' => 'timeout_wait_time',
'Q' => 'clinic_all_time',
'R' => 'true_all_time',
'S' => 'timeout_all_time',
];
foreach ($table_list as $table_item) {
foreach ($col as $index => $key) {
$worksheet->setCellValueExplicit($index . $row, $table_item[$key], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
}
$row++;
}
$worksheet->getStyle('A3:S' . ($row - 1))->applyFromArray($styleArray);
$row = 3;
$col = [
'U' => 'group_name',
'V' => 'clinic',
'W' => 'doctor',
'X' => 'check',
'Y' => 'check_out',
'Z' => 'wait',
'AA' => 'wait_out',
];
foreach ($clinic_list as $clinic_item) {
foreach ($col as $index => $key) {
$worksheet->setCellValueExplicit($index . $row, $clinic_item[$key], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
}
$row++;
}
$worksheet->getStyle('U3:AA' . ($row - 1))->applyFromArray($styleArray);
$row = 3;
$col = [
'AC' => 'date',
'AD' => 'name',
'AE' => 'number',
'AF' => 'phone',
'AG' => 'combo',
'AH' => 'clinic_time',
'AI' => 'used_time',
'AJ' => 'timeout',
];
//汇总信息
$usercount=count($table_list3);
$biaozhun_timecount=0;
$shiji_timecount=0;
$chaoshi_timecount=0;
$weichaoshi_count=0;
$tj_numbers=[];
$peis = new PEISApiController();
foreach ($table_list3 as $table_list3_i) {
$tj_numbers[]=$table_list3_i['uuid'];
$biaozhun_timecount+=$table_list3_i['clinic_time'];
$shiji_timecount+=$table_list3_i['used_time'];
$chaoshi_timecount+=$table_list3_i['timeout'];
if($table_list3_i['timeout']<=0){
$weichaoshi_count++;
}
$data = [
'电话号码' => "",
'证件号码' => "",
'体检号' => $table_list3_i['uuid'],
'包含内部信息' => true
];
$reports = $peis::Post('体检报告查询', 1, $data);
if(isset($reports['data'][0]['套餐名称'])){
$table_list3_i['combo']=$reports['data'][0]['套餐名称'];
}else{
$table_list3_i['combo']='';
}
foreach ($col as $index => $key) {
$worksheet->setCellValueExplicit($index . $row, $table_list3_i[$key], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
}
$row++;
}
$zhushilv=0;
if($usercount>0){
$zhushilv=$weichaoshi_count/$usercount;
}
$worksheet->setCellValueExplicit('AC' . $row, '汇总', \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AD' . $row, '客户总数', \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AE' . $row, $usercount, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AG' . $row, '总用时:', \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AH' . $row, $biaozhun_timecount, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AI' . $row, $shiji_timecount, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AJ' . $row, $chaoshi_timecount, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AD' . ($row+1), '未超时总数', \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AE' . ($row+1), $weichaoshi_count, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AD' . ($row+2), "体检准时率", \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AE' . ($row+2),$zhushilv , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->getStyle('AC3:AJ' . ($row +2))->applyFromArray($styleArray);
//准时到检率
$jianhou_sign_count=0;
$zhunshi_count=0;
$tj_numbers_group= array_chunk($tj_numbers, 100);
$waitGroup=[];
foreach ($tj_numbers_group as $index => $tj_number) {
$tj_number=implode(",", $tj_number);
$wait=$peis::Get($peis::Api('报告时间计算',$tj_number),'460107000001',"报告时间计算");
if(isset($wait['Data'])){
$jianhou_sign_count=$jianhou_sign_count+count($wait['Data']);
$waitGroup=array_merge($waitGroup,$wait['Data']);
}
}
//dd($wait);
foreach ($table_list3 as $key=> $fz_value) {
foreach ($waitGroup as $index => $sx_value) {
if($fz_value['uuid']==$sx_value['体检号']){
if($fz_value['date'].' '.$fz_value['end_time']>$sx_value['检后签到时间']){
$zhunshi_count++;
}
}
}
}
$daojianlv=0;
if($jianhou_sign_count>0){
$daojianlv=$zhunshi_count/$jianhou_sign_count;
}
$datesRange=$dates[0].'~'.$dates[count($dates) - 1];
$worksheet->setCellValueExplicit('AL' . 3,$datesRange, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AM' . 3,$zhunshi_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AN' . 3,$jianhou_sign_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AO' . 3,round($daojianlv, 2) , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->getStyle('AL3:AO' . 3)->applyFromArray($styleArray);
//预约率
$yyl_yuyue_count=0;//预约人数
$yyl_tj_count=0;//体检总人数
$yuyuelv=0;
$yuyueList=DB::table('orders')->whereIn('appointment_date',$dates)->whereIn('status',[2,4])->whereNotNull(['appointment_number'])->get();
$yyl_yuyue_count=count($yuyueList);
$yyl_tj_count=$usercount;
if($yyl_tj_count>0){
$yuyuelv=$yyl_yuyue_count/$yyl_tj_count;
}
$worksheet->setCellValueExplicit('AL' . 7,$datesRange , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AM' . 7,$yyl_yuyue_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AN' . 7,$yyl_tj_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AO' . 7,round($yuyuelv, 2) , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->getStyle('AL7:AO' . 7)->applyFromArray($styleArray);
//预约准时率
$yyzsl_ren_count=0;//预约准时到达人数
$yyzsl_zong_count=0;//预约总人数
$yyzsl_zong_count=$yyl_yuyue_count;
foreach ($yuyueList as $key=> $yy_value) {
if($yy_value->appointment_date.' '.$yy_value->appointment_time > $yy_value->check_time){
$yyzsl_ren_count++;
}
}
$zhunshilv=0;
if($yyzsl_zong_count>0){
$zhunshilv=$yyzsl_ren_count/$yyzsl_zong_count;
}
$worksheet->setCellValueExplicit('AL' . 11,$datesRange , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AM' . 11,$yyzsl_ren_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AN' . 11,$yyzsl_zong_count , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->setCellValueExplicit('AO' . 11,round($zhunshilv, 2) , \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
$worksheet->getStyle('AL11:AO' . 11)->applyFromArray($styleArray);
//新建Sheet2
// $worksheet2 = new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet($spreadsheet, 'Sheet2');
// $spreadsheet->addSheet($worksheet2);
// $worksheet2->setCellValue('A1', 'Foo');
// $worksheet2->setCellValue('B1', 'Bar');
$file_name = Str::orderedUuid();
$dir_path = "public/excel/" . date('Ym') . '/' . $file_name;
Storage::makeDirectory($dir_path);
$name_date = date('n.j', strtotime($date . ' 00:00:00'));
$excel_path = $dir_path . "/体检报表-时间监控$name_date.xlsx";
$writer = new Xlsx($spreadsheet);
$writer->save(Storage::path($excel_path));
$url = Storage::url($excel_path);
return \Yz::Return(true,"获取成功",['url' => env('APP_URL').$url]);
}
}

@ -2,118 +2,13 @@
namespace App\Http\Controllers;
use App\Http\Controllers\API\AspNetZhuanController;
use App\Http\Controllers\API\H5\OrderController;
use App\Http\Controllers\API\PEISApiController;
use App\Http\Controllers\API\XCXApiController;
use App\Services\ComboItemGroupService;
use App\Services\OrderService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Http;
class TestController extends Controller
{
public function DBtest(){
//微信推送
// $data = [
// "ghzid" => "b3346cd4d63b49a58dbd9a41d69efde2",
// "yyid" => "6",
// "type" => "7",
// "msg1" => "张言",
// "msg2" => "2024-08-01 15:30",
// "msg3" => "影像科",
// "msg4" => "张医生",
// "msg5" => "请提前10分钟",
// "msg6" => "",
// "url" => ""
// ];
// $dnet = new AspNetZhuanController();
// $res = $dnet->WeiXinSend($data);
// dd($res);
// echo DB::table('users')->count();
// $dnet = new AspNetZhuanController();
// $res = $dnet->GetDoctorDateList([
// "yyid" => 6,
// "data" => ["2024-12-07","2024-12-08","2024-12-09","2024-12-10","2024-12-11","2024-12-12","2024-12-13","2024-12-14","2024-12-15","2024-12-16","2024-12-17","2024-12-18","2024-12-19","2024-12-20","2024-12-21","2024-12-22","2024-12-23","2024-12-24","2024-12-25","2024-12-26","2024-12-27","2024-12-28","2024-12-29","2024-12-30","2024-12-31","2025-01-01","2025-01-02","2025-01-03","2025-01-04","2025-01-05","2025-01-06"],
// "action" => "1"
// ]);
// return \Yz::Return(true,"",['data'=>$res]);
//退款------------------
// $data = [
// 'orderid' => '20241223082331336avdQwL',
// 'refund_order_id' => 'T' . '20241223082331336avdQwL',
// 'refund_amount' => 156190,
// 'refund_reason' => "体检H5订单退款",
// ];
// $XCX = new XCXApiController();
// $res = $XCX::Post('订单退款', $data);
// dd($res);
// if ($res['data']['refund_state'] != 'SUCCESS') {
// return \Yz::echoError1("退款失败" . $res['data']['refund_state']);
// }
//--------------
$aspnet=new AspNetZhuanController();
// $res=$aspnet::SendYanZhengMaCode(1,"19933509886");
// dd($res);
//优惠券-----------------
// $data=[
// 'action'=>4,
// 'ghzid'=>'3da338777513487fa65f918dad7719d8',
// 'dzjid'=>'995315997321979250097',
// 'hxbz'=>"H5撤销核销",
// 'yyid'=>6
// ];
// $aspnet::YouHuiQuan($data);
// $temp_list=[];
// $nmr=$aspnet::GetNmrList(['yyid'=>6,'data'=>['2024-10-25']],uniqid());
//
// //获取每日数量
// foreach($nmr as $k=>$v){
// $temp_list[]=[
// 'date'=>$k,
// 'count'=>count($v)
// ];
// }
//弃检
// $service = new ComboItemGroupService();
// dd($service->QiJian("2411090001","张三",['1812']));
// $peis = new PEISApiController();
// $data = [
// '电话号码' => "",
// '证件号码' => "",
// "预约Id"=>"3bcfa68d-8edd-40e6-a0ce-bca050be7961"
// ];
// $reports = $peis::Post('团检预约查询', 1, $data);
// dd($reports);
// //到检
// $aa=Http::post('https://tj-h5.hnxdfe.com/TJCheck',[
// 'password'=>'YRtA1rx1iWgbpYKX',
// 'exam_id'=>'2411280001',
// 'serve_id'=>''
// ]);
// dd($aa->json());
// $data=[
// 'action'=>4,
// 'ghzid'=>'5a798c097bc64bd79c22050175e6236a',
// 'dzjid'=>'994924890348203254993',
// 'hxbz'=>"H5撤销核销",
// 'yyid'=>6
// ];
// $aspnet::YouHuiQuan($data);
echo DB::table('users')->count();
}
public function ApiTest(){

@ -2,10 +2,6 @@
namespace App\Lib;
use DateTime;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
class Tools
{
//查询某天是星期几
@ -40,33 +36,4 @@ class Tools
}
return $weekname;
}
public static function SendMsg($r_yyid,$tel,$name,$time){
if($r_yyid==1){
$yyid=6;
}
if($r_yyid==4){
$yyid=2;
}
$content="时间:".$time.";科室:健康管理中心1区。温馨提醒:您的预约已成功,请在预约时间前 30 分钟达到科室凭身份证原件开单。建议您体检前3天清淡饮食、禁烟酒";
$url="http://220.174.210.111:82/tuisong.aspx?yyid=".$yyid."&type=8&mobile=".$tel."&msg1=".urlencode($name)."&msg2=".urlencode($content);
$response = Http::get($url);
if ($response->successful()) {
}else{
Log::info("短信发送失败");
}
}
//根据生日 获取年龄
public static function GetAge($birthday) {
$dob = new DateTime($birthday);
$now = new DateTime();
// 计算两个日期之间的差值
$interval = $now->diff($dob);
// 返回年龄
return $interval->y;
}
}

@ -1,11 +0,0 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class QuestionList extends Model
{
use HasFactory;
}

@ -1,11 +0,0 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class QuestionnairesLogs extends Model
{
use HasFactory;
}

@ -1,187 +0,0 @@
<?php
namespace App\Services;
use App\Http\Controllers\API\PEISApiController;
use Illuminate\Support\Facades\DB;
class ComboItemGroupService
{
public function Save($res){
if(isset($res['变更套餐'])){
$combos=$res['变更套餐'];
$successCount = 0;//成功的数量
foreach ($combos as $combo){
if($combo['变更类别']=='改价'){
DB::table('combos')->where(['combo_id' => $combo['Id']])->update([
'original_price'=> $combo['原价'],
'price'=> $combo['价格'],
]);
foreach ($combo['包含项目'] as $key => $v) {
DB::table('combo_items')->where(['combo_id' => $combo['Id'],'item_id'=>$v['Id']])->update([
'price'=> $v['价格']
]);
}
}
if($combo['变更类别']=='删除'){
DB::table('combos')->where(['combo_id' => $combo['Id']])->delete();
DB::table('combo_items')->where(['combo_id' => $combo['Id']])->delete();
}
$sixin_combo_item_ids=[];//思信套餐内项目ids
if($combo['变更类别']=='修改' || $combo['变更类别']=='新增'){
if($combo['可选']===false){//如果可选为false,则删除
DB::table('combos')->where(['combo_id' => $combo['Id']])->delete();
DB::table('combo_items')->where(['combo_id' => $combo['Id']])->delete();
return \Yz::echoError1('删除成功');
}
$item = [];
foreach ($combo['包含项目'] as $key => $v) {
$sixin_combo_item_ids[]=$v['Id'];
//在独立表中缓存一份套餐对应的项目信息
$item_sex = null;
if (isset($v['性别限制'])) {
$item_sex_array = ['全部' => 0, '男' => 1, '女' => 2];
$item_sex = $item_sex_array[$combo['性别限制']] >= 0 ? $item_sex_array[$combo['性别限制']] : null;
}
$item_date = [
'combo_id'=>$combo['Id'],
'item_id'=>$v['Id'],
'name'=>$v['名称'],
'desc' => $v['简介'],
'keshi_id' => $v['科室Id'],
'keshi_name' => $v['科室名称'],
'price'=> $v['价格'],
'sex'=>$item_sex,
'can_qian_hou'=>$v['餐前餐后'],
'status'=>1
];
$db_combo_item = DB::table('combo_items')->where(['item_id' => $v['Id'], 'combo_id' => $combo['Id']])->first();
if (!!$db_combo_item) {
//如果存在项目
$u = DB::table('combo_items')->where(['id' => $db_combo_item->id])->update($item_date);
} else {
//如果不在项目
$u = DB::table('combo_items')->insert($item_date);
}
$item[] = [
'id' => $v['Id'],
'name' => $v['名称'],
'desc' => $v['备注'],
'keshi_name' => $v['科室名称'],
];
}
//查询当前套餐缓存的套餐项目ids
$db_combo_item_ids=DB::table('combo_items')
->where(['combo_id' => $combo['Id']])->pluck('item_id')->toArray();
// 查询在库里缓存但思信已经没有的项目ids,标注为弃用0
$k_ids = array_diff($db_combo_item_ids, $sixin_combo_item_ids);
if(count($k_ids)>0){
DB::table('combo_items')->where(['combo_id'=>$combo['Id']])->whereIn('item_id',$k_ids)->delete();
}
$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(['combo_id' => $combo['Id']])->first();
$comboData = [
'combo_id' => $combo['Id'],
'sex' => $sex,
'name' => $combo['名称'],
'pinyin' => $combo['拼音'],
'original_price' => $combo['原价'],
'price' => $combo['价格'],
'items' => $item,
'item_count' => $combo['项目数量'],
'duo_xuan_yi'=>json_encode($combo['包含多选一组'], JSON_UNESCAPED_UNICODE),
'keyue_start_time' => $combo['可约开始时间'],
'keyue_end_time' => $combo['可约截止时间'],
'status' => 1,
'updated_at' => date('Y-m-d H:i:s'),
];
if (!!$db_combo) {
//如果存在套餐
$u = DB::table('combos')->where([ 'combo_id' => $combo['Id']])->update($comboData);
} else {
//如果不存在套餐
$comboData['tags'] = json_encode([]);
$comboData['tags2'] = json_encode([]);
$u = DB::table('combos')->insert($comboData);
}
if ($u) {
$successCount++;
} else {
return \Yz::echoError1('更新失败');
}
}
}
}
if(isset($res['变更收费项目'])){
$items=$res['变更收费项目'];
foreach ($items as $item){
if($item['变更类别']=='改价'){
DB::table('items')->where(['item_id'=>$item['Id']])->update(['price'=>$item['价格']]);
}
if($item['变更类别']=='删除'){
DB::table('items')->where(['item_id'=>$item['Id']])->delete();
}
if($item['变更类别']=='修改' || $item['变更类别']=='新增'){
$item_sex=null;
if (isset($item['性别限制'])) {
$item_sex_array = ['全部' => 0, '男' => 1, '女' => 2];
$item_sex = $item_sex_array[$item['性别限制']] >= 0 ? $item_sex_array[$item['性别限制']] : null;
}
$ItemData=[
'item_id'=>$item['Id'],
'sex'=>$item_sex,
'can_qian_hou'=>$item['餐前餐后'],
'name'=>$item['名称'],
'pinyin'=>$item['拼音'],
'price'=>$item['价格'],
'is_choose'=>$item['可选']===false ? "0" : "1",
'keshi_id'=>$item['科室Id'],
'keshi_name'=>$item['科室名称'],
'beizhu'=>$item['备注'],
'jianjie'=>$item['简介'],
'tishi'=>$item['提示信息'],
'status'=>1,
'updated_at'=>date('Y-m-d H:i:s'),
];
$cha= DB::table('items')->where(['item_id'=>$item['Id']])->get();
if(count($cha)>0){
DB::table('items')->where(['item_id'=>$item['Id']])->update($ItemData);
}else{
DB::table('items')->insert($ItemData);
}
}
}
}
return \Yz::Return(true, '操作完成', []);
}
//弃检
public function QiJian($tj_num,$username,$ids)
{
$peis = new PEISApiController();
$data=[
'体检号'=>$tj_num,
"操作医生姓名"=>$username,
"取消弃检"=>false,
"收费项目Id列表"=>$ids
];
$url=$peis::Api("弃检接口","460107000001");
$res_str=$peis::Post2("弃检接口",$url,1,$data);
$res = json_decode($res_str, true);
if($res['Success']===true){
return ['status'=>true,'msg'=>$res['Message']];
}else{
return ['status'=>false,'msg'=>$res['Message']];
}
}
}

@ -99,7 +99,7 @@ class LogService
$table->text('get_data');
$table->text('header_data');
$table->text('response_data')->nullable();
$table->string('request_url', 2000);
$table->string('request_url', 300);
$table->string('create_time', 30);
$table->string('update_time', 30);
$table->timestamps();

@ -1,32 +0,0 @@
<?php
namespace App\Services;
use App\Http\Controllers\API\AspNetZhuanController;
use DateTime;
class NmrService
{
public function CheckEnableNmrTime($date,$time){
// 根据时间查询二线可用号源区分上下午二线需预约体检时间1小时后
$AspNet = new AspNetZhuanController();
$nmrPlans=$AspNet::ErXian(['yyid'=>6,'data'=>[$date],'action'=>"1"],uniqid());
if($time<="12:00") $end_time="12:00";
if($time>"12:00") $end_time="23:59";
if(!isset($nmrPlans[$date]) or empty($nmrPlans[$date])) return ['status'=>false,'datetime'=>''];
$planTime = new DateTime($time);
$planTime->modify('+1 hour');
$plan_time=$planTime->format('H:i');
$enable_datetime='';
foreach ($nmrPlans[$date] as $nmp_p){
if($nmp_p['Time']>=$plan_time and $nmp_p['Time']<=$end_time and $nmp_p['keyong']==="0"){
$enable_datetime=$date." ".$nmp_p['Time'];
break;
}
}
if($enable_datetime<>''){
return ['status'=>true,'datetime'=>$enable_datetime];
}else{
return ['status'=>false,'datetime'=>$enable_datetime];
}
}
}

@ -1,300 +0,0 @@
<?php
namespace App\Services;
use App\Http\Controllers\API\AspNetZhuanController;
use App\Http\Controllers\API\H5\OrderController;
use App\Http\Controllers\API\PEISApiController;
use App\Http\Controllers\API\XCXApiController;
use Illuminate\Support\Facades\DB;
class OrderService
{
//订单项目按科室分类
public function DepartmentItemCount($id)
{
$order=DB::table('orders')->where('id',$id)->first();
if(!$order) return ['status'=>false,'msg'=>'订单不存在'];
$hospital=DB::table('hospitals')->where('id',$order->hospital_id)->first();
if(!$hospital) return ['status'=>false,'msg'=>'医院不存在'];
$wait_day=false;
$is_checked_sign_in=false;
if(isset($order->tj_number) and !empty($order->tj_number)){
$peis = new PEISApiController();
$wait=$peis::Get($peis::Api('报告时间计算',$order->tj_number),$hospital->code,"报告时间计算");
if(isset($wait['Data'][0]['预计所需天数'])){
$wait_day=$wait['Data'][0]['预计所需天数'];
} else {
$wait_day=-1;
//查询体检报告
$data = [
'电话号码' => "",
'证件号码' => "",
'体检号' => $order->tj_number,
'包含内部信息' => true
];
$res = $peis::Post('体检报告查询', $order->hospital_id, $data);
if(count($res['data']) > 0) {
$res = $res['data'][0];
if (isset($res['收费项目列表'])) {
foreach ($res['收费项目列表'] as $it) {
if($it['项目状态']=='未完成'){
$is_checked_sign_in=false;
break;
}else{
$is_checked_sign_in=true;
}
}
}
}
}
}
$buy_info=json_decode($order->buy_info,true);
$list=[];
$drop_ids = ['519', '603'];
if($buy_info['combo']['id']<>0){
$combo_items=DB::table('combo_items')->where(['combo_id'=>$buy_info['combo']['id'],'status'=>1])->get();
foreach($combo_items as $item){
if(!in_array((string)$item->keshi_id,$drop_ids)){
$list[]=[
'item_id'=>$item->item_id,
'keshi_name'=>$item->keshi_name,
'keshi_id'=>$item->keshi_id,
];
}
}
}
if(count($buy_info['items'])>0){
$item_ids=[];
foreach($buy_info['items'] as $item){
$item_ids[]=$item['id'];
}
$itemsInfo=DB::table('items')->whereIn('item_id',$item_ids)->get();
foreach($itemsInfo as $item){
$list[]=[
'item_id'=>$item->item_id,
'keshi_name'=>$item->keshi_name,
'keshi_id'=>$item->keshi_id,
];
}
}
if($buy_info['group']['id']<>''){
$item_ids=[];
foreach($buy_info['group']['items'] as $item){
$item_ids[]=$item['id'];
}
$itemsInfo=DB::table('items')->whereIn('item_id',$item_ids)->get();
foreach($itemsInfo as $item){
$list[]=[
'item_id'=>$item->item_id,
'keshi_name'=>$item->keshi_name,
'keshi_id'=>$item->keshi_id,
];
}
}
$groupedData = [];
foreach ($list as $key => $item) {
$keshiName = $item['keshi_name'];
if (!isset($groupedData[$keshiName])) {
$groupedData[$keshiName] = [];
}
$groupedData[$keshiName][] = $item;
}
$de_list=[];
foreach ($groupedData as $key => $item) {
$de_list[]=[
'name'=>$key,
'keshi_id'=>$item[0]['keshi_id'],
'count'=>count($item),
];
}
return ['department_list'=>$de_list,'wait_day'=>$wait_day,'is_checked_sign_in'=>$is_checked_sign_in];
}
public function Cancel($orderInfo)
{
$person=DB::table('web_user_person')->where(['id' => $orderInfo->person_id])->first();
$now_datetime=date('Y-m-d H:i:s');
//调用接口恢复积分和预存款
$env=config('app.globals.Env');
$AspNet=new AspNetZhuanController();
$jifen_huifu_status=true;
$yucunkuan_huifu_status=true;
$r_yyid=$orderInfo->hospital_id;
if($r_yyid==1){
$yyid=6;
}
if($r_yyid==4){
$yyid=2;
}
if($env=='pro') { //如果是正式环境
//如果有二线取消二线
$AspNet=new AspNetZhuanController();
$erxian_info=json_decode($orderInfo->erxian_appointment_info, true);
if (isset($erxian_info) and !empty($erxian_info)) {
foreach ($erxian_info as $key => $plan_nmr) {
if(isset($plan_nmr['gid'])){
//调用接口校验号源是否可用
$erxian_status = $AspNet::ErXian(['id' =>$plan_nmr['gid'], 'yyid' => $yyid, 'action' => 3], uniqid());
$erxian_info[$key]['gid']='';
$ex_u= DB::table('orders')->where(['id' => $orderInfo->id])->update([
'erxian_appointment_info'=>json_encode($erxian_info, JSON_UNESCAPED_UNICODE),
]);
}
}
}
if($orderInfo->jifen>0 and $orderInfo->is_refund_jifen==0) {
$jifen_huifu_status=false;
$jifen_huifu_status= $AspNet::UseJiFen($person->ghzid,$orderInfo->jifen,$yyid,$orderInfo->id,'tj_h5','抵扣体检H5订单',$now_datetime);
if( $jifen_huifu_status===true){
DB::table('orders')->where('id',$orderInfo->id)->update(['is_refund_jifen'=>1]);
}
}
if($orderInfo->yucunkuan>0 and $orderInfo->is_refund_yucunkuan==0) {
$yucunkuan_huifu_status=false;
$yucunkuan_huifu_status= $AspNet::UseYuCunKuan($person->ghzid,$orderInfo->yucunkuan,$yyid,0,$orderInfo->id,'tj_h5','抵扣体检H5订单',$now_datetime);
if($yucunkuan_huifu_status===true){
DB::table('orders')->where('id',$orderInfo->id)->update(['is_refund_yucunkuan'=>1]);
}
}
if(!empty($orderInfo->youhuiquan)){
$youhuiquan=json_decode( $orderInfo->youhuiquan,true);
$data=[
'action'=>4,
'ghzid'=>$person->ghzid,
'dzjid'=>$youhuiquan['id'],
'hxbz'=>"H5撤销核销",
'yyid'=>$yyid
];
$AspNet::YouHuiQuan($data);
}
}
DB::table('orders')->where(['id' => $orderInfo->id,'status'=>1])->update([
'status' => 3
]);
//恢复号源
$up_plan = DB::table('plans')->where(['id' => $orderInfo->plan_id, 'status' => 2])->update([
'status' => 1
]);
return true;
}
public function Refund($id)
{
$orderInfo = DB::table('orders')->where(['id' => $id])->first();
if (!$orderInfo) return ['status'=>false,'msg'=>"未找到有效订单"];
if ($orderInfo->status !== 2) return ['status'=>false,'msg'=>"订单状态异常。当前状态:" . $orderInfo->status];
if ($orderInfo->check_status == 2) return ['status'=>false,'msg'=>"已登记体检,禁止退款"];
$person=DB::table('web_user_person')->where(['id' => $orderInfo->person_id])->first();
if(!$person) return ['status'=>false,'msg'=>"用户不存在"];
//调用思信取消,恢复号源
if($orderInfo->appointment_number<>null and $orderInfo->appointment_number<>''){
$ap = new OrderController();
$cancel = $ap->cancel_appointment($orderInfo->hospital_id, [
'type' => $orderInfo->type,
'预约Id' => $orderInfo->appointment_number
]);
if ($cancel['code'] != 0) return ['status'=>false,'msg'=>"取消预约失败," . $cancel['message']];
}
//如果有二线取消二线
$yyid=6;
if($orderInfo->hospital_id == 1){
$yyid=6;
}
if($orderInfo->hospital_id == 4){
$yyid=2;
}
$AspNet=new AspNetZhuanController();
$erxian_info=json_decode($orderInfo->erxian_appointment_info, true);
if (isset($erxian_info) and !empty($erxian_info)) {
foreach ($erxian_info as $key => $plan_nmr) {
if(isset($plan_nmr['gid'])){
//调用接口取消二线
$erxian_status = $AspNet::ErXian(['id' =>$plan_nmr['gid'], 'yyid' => $yyid, 'action' => 3], uniqid());
$erxian_info[$key]['gid']='';
$ex_u= DB::table('orders')->where(['id' => $orderInfo->id])->update([
'erxian_appointment_info'=>json_encode($erxian_info, JSON_UNESCAPED_UNICODE),
]);
}
}
}
//如果真实支付大于0 则调用小程序退款
if ($orderInfo->true_price > 0) {
$data = [
'orderid' => $orderInfo->order_number,
'refund_order_id' => 'T' . $orderInfo->order_number,
'refund_amount' => (int)($orderInfo->true_price * 100),
'refund_reason' => "体检H5订单退款",
];
$XCX = new XCXApiController();
$res = $XCX::Post('订单退款', $data);
if ($res['data']['refund_state'] != 'SUCCESS') {
return ['status'=>false,'msg'=>"退款失败" . $res['data']['refund_state']];
}
}
$now_datetime=date('Y-m-d H:i:s');
//调用接口恢复积分和预存款
$env=config('app.globals.Env');
$AspNet=new AspNetZhuanController();
$jifen_huifu_status=true;
$yucunkuan_huifu_status=true;
$r_yyid=$orderInfo->hospital_id;
if($r_yyid==1){
$yyid=6;
}
if($r_yyid==4){
$yyid=2;
}
if($env=='pro') { //如果是正式环境
if($orderInfo->jifen>0 and $orderInfo->is_refund_jifen==0) {
$jifen_huifu_status=false;
$jifen_huifu_status= $AspNet::UseJiFen($person->ghzid,$orderInfo->jifen,$yyid,$orderInfo->id,'tj_h5','抵扣体检H5订单',$now_datetime);
if( $jifen_huifu_status===true){
DB::table('orders')->where('id',$orderInfo->id)->update(['is_refund_jifen'=>1]);
}
}
if($orderInfo->yucunkuan>0 and $orderInfo->is_refund_yucunkuan==0) {
$yucunkuan_huifu_status=false;
$yucunkuan_huifu_status= $AspNet::UseYuCunKuan($person->ghzid,$orderInfo->yucunkuan,$yyid,0,$orderInfo->id,'tj_h5','抵扣体检H5订单',$now_datetime);
if($yucunkuan_huifu_status===true){
DB::table('orders')->where('id',$orderInfo->id)->update(['is_refund_yucunkuan'=>1]);
}
}
if(!empty($orderInfo->youhuiquan)){
$youhuiquan=json_decode( $orderInfo->youhuiquan,true);
$data=[
'action'=>4,
'ghzid'=>$person->ghzid,
'dzjid'=>$youhuiquan['id'],
'hxbz'=>"H5撤销核销",
'yyid'=>$yyid
];
$AspNet::YouHuiQuan($data);
}
}
DB::table('orders')->where(['id' => $id])->update([
'status' => 5,
'refund_time'=>$now_datetime
]);
//恢复号源
$up_plan = DB::table('plans')->where(['id' => $orderInfo->plan_id, 'status' => 2])->update([
'status' => 1
]);
return ['status'=>true,'msg'=>"退款成功"];
}
}

@ -7,8 +7,7 @@ class ReportService
{
public function Save($res)
{
//if(!isset($res['体检号'])) return \Yz::echoError1("数据非预期,缺失'体检号'");
if(!isset($res['体检号'])) return ['status'=>false,'msg'=>"数据非预期,缺失'体检号'",'data'=>'report'];
if(!isset($res['体检号'])) return \Yz::echoError1("数据非预期,缺失'体检号'");
//根据体检号查询获取id万一不小心有多个相同的体检号 所以返回数组正常就1个
$report_l1_records_ids = DB::table('report_l1_records')->where(['体检号' => $res['体检号']])->pluck('id')->toArray();
//查找对应的收费项目列表 获取id数组
@ -94,7 +93,6 @@ class ReportService
}
//return \Yz::Return(true,"接收完成",'report');
return ['status'=>true,'msg'=>'接收完成','data'=>'report'];
return \Yz::Return(true,"接收完成",'report');
}
}

@ -14,9 +14,7 @@
"laravel/framework": "^8.75",
"laravel/sanctum": "^2.11",
"laravel/tinker": "^2.5",
"phpoffice/phpspreadsheet": "^1.29",
"wechatpay/wechatpay": "^1.4",
"zoujingli/ip2region": "^2.0"
"wechatpay/wechatpay": "^1.4"
},
"require-dev": {
"facade/ignition": "^2.5",

8616
Laravel/composer.lock generated

File diff suppressed because it is too large Load Diff

@ -5,14 +5,9 @@ return [
'WxAppid' => 'wx526430047d34c85c', //岚科公众号
'WxAppSecret' => '975b8a8b627b1bde71bbe49149134549', //岚科公众号
'WaitingPaymentTime'=>20, //等待支付时间,单位分钟
'WaitingHunJianPeiOuTime'=>15, //等待婚检配偶下单时间,单位分钟
'HunJianXingQi'=>[2,5,6], //婚检哪天坐诊
'PayNotifyUrl' =>"http://124.225.137.54:39080/h5/#/pages/main/order/CheckPay",//支付完成后小程序跳转H5路径
// 'Env'=>'pro',
'Env'=>'dev',
'Wj_ZheKou'=>1,//问卷带出项目,折扣率
'erxian_kuadu'=>3,//二线时间跨度,单位天
'KeShiPaiXu'=>["预检咨询","体格检查","人体成分","呼气试验","采血室(化验)","内科","妇科","妇科(化验)","妇科(病理)","婚前医学检查","外科","眼科","耳鼻喉科","肺功能室","口腔科","骨密度室","CT室","影像科","住院体检","胃肠镜室"]
],
/*

@ -1,41 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateQuestionnairesLogsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('questionnaires_logs', function (Blueprint $table) {
$table->id();
$table->bigInteger('question_id')->comment('问卷ID');
$table->string('type', 20)->comment('问卷类型 检前评估 问卷调查');
$table->string('weight', 20)->comment('体重');
$table->bigInteger('order_id')->comment('订单ID');
$table->bigInteger('person_id')->comment('体检人ID');
$table->longText('person_info')->comment('体检人信息');
$table->longText('content')->comment('问卷回答内容');
$table->longText('items')->comment('基础项目');
$table->longText('check_items')->comment('检测项目');
$table->longText('check_items_array')->comment('实际检测项目');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('questionnaires_logs');
}
}

@ -1,36 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateQuestionListsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('question_lists', function (Blueprint $table) {
$table->id();
$table->string('name', 50);
$table->string('desc', 200);
$table->string('icon', 200);
$table->bigInteger('order');
$table->bigInteger('question');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('question_lists');
}
}

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,131 +0,0 @@
:root {
--el-color-white: #ffffff;
--el-color-black: #000000;
--el-color-primary-rgb: 64, 158, 255;
--el-color-success-rgb: 103, 194, 58;
--el-color-warning-rgb: 230, 162, 60;
--el-color-danger-rgb: 245, 108, 108;
--el-color-error-rgb: 245, 108, 108;
--el-color-info-rgb: 144, 147, 153;
--el-font-size-extra-large: 20px;
--el-font-size-large: 18px;
--el-font-size-medium: 16px;
--el-font-size-base: 14px;
--el-font-size-small: 13px;
--el-font-size-extra-small: 12px;
--el-font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;
--el-font-weight-primary: 500;
--el-font-line-height-primary: 24px;
--el-index-normal: 1;
--el-index-top: 1000;
--el-index-popper: 2000;
--el-border-radius-base: 0;
--el-border-radius-small: 0;
--el-border-radius-round: 0;
--el-border-radius-circle: 100%;
--el-transition-duration: 0.3s;
--el-transition-duration-fast: 0.2s;
--el-transition-function-ease-in-out-bezier: cubic-bezier(0.645, 0.045, 0.355, 1);
--el-transition-function-fast-bezier: cubic-bezier(0.23, 1, 0.32, 1);
--el-transition-all: all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);
--el-transition-fade: opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);
--el-transition-md-fade: transform var(--el-transition-duration) var(--el-transition-function-fast-bezier), opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);
--el-transition-fade-linear: opacity var(--el-transition-duration-fast) linear;
--el-transition-border: border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);
--el-transition-box-shadow: box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);
--el-transition-color: color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);
--el-component-size-large: 40px;
--el-component-size: 32px;
--el-component-size-small: 24px;
color-scheme: light;
--el-color-primary: #409eff;
--el-color-primary-light-3: #79bbff;
--el-color-primary-light-5: #a0cfff;
--el-color-primary-light-7: #c6e2ff;
--el-color-primary-light-8: #d9ecff;
--el-color-primary-light-9: #ecf5ff;
--el-color-primary-dark-2: #337ecc;
--el-color-success: #67c23a;
--el-color-success-light-3: #95d475;
--el-color-success-light-5: #b3e19d;
--el-color-success-light-7: #d1edc4;
--el-color-success-light-8: #e1f3d8;
--el-color-success-light-9: #f0f9eb;
--el-color-success-dark-2: #529b2e;
--el-color-warning: #e6a23c;
--el-color-warning-light-3: #eebe77;
--el-color-warning-light-5: #f3d19e;
--el-color-warning-light-7: #f8e3c5;
--el-color-warning-light-8: #faecd8;
--el-color-warning-light-9: #fdf6ec;
--el-color-warning-dark-2: #b88230;
--el-color-danger: #f56c6c;
--el-color-danger-light-3: #f89898;
--el-color-danger-light-5: #fab6b6;
--el-color-danger-light-7: #fcd3d3;
--el-color-danger-light-8: #fde2e2;
--el-color-danger-light-9: #fef0f0;
--el-color-danger-dark-2: #c45656;
--el-color-error: #f56c6c;
--el-color-error-light-3: #f89898;
--el-color-error-light-5: #fab6b6;
--el-color-error-light-7: #fcd3d3;
--el-color-error-light-8: #fde2e2;
--el-color-error-light-9: #fef0f0;
--el-color-error-dark-2: #c45656;
--el-color-info: #909399;
--el-color-info-light-3: #b1b3b8;
--el-color-info-light-5: #c8c9cc;
--el-color-info-light-7: #dedfe0;
--el-color-info-light-8: #e9e9eb;
--el-color-info-light-9: #f4f4f5;
--el-color-info-dark-2: #73767a;
--el-bg-color: #ffffff;
--el-bg-color-page: #f2f3f5;
--el-bg-color-overlay: #ffffff;
--el-text-color-primary: #303133;
--el-text-color-regular: #606266;
--el-text-color-secondary: #909399;
--el-text-color-placeholder: #a8abb2;
--el-text-color-disabled: #c0c4cc;
--el-border-color: #dcdfe6;
--el-border-color-light: #e4e7ed;
--el-border-color-lighter: #ebeef5;
--el-border-color-extra-light: #f2f6fc;
--el-border-color-dark: #d4d7de;
--el-border-color-darker: #cdd0d6;
--el-fill-color: #f0f2f5;
--el-fill-color-light: #f5f7fa;
--el-fill-color-lighter: #fafafa;
--el-fill-color-extra-light: #fafcff;
--el-fill-color-dark: #ebedf0;
--el-fill-color-darker: #e6e8eb;
--el-fill-color-blank: #ffffff;
--el-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, 0.04), 0px 8px 20px rgba(0, 0, 0, 0.08);
--el-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, 0.12);
--el-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, 0.12);
--el-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, 0.08), 0px 12px 32px rgba(0, 0, 0, 0.12), 0px 8px 16px -8px rgba(0, 0, 0, 0.16);
--el-disabled-bg-color: var(--el-fill-color-light);
--el-disabled-text-color: var(--el-text-color-placeholder);
--el-disabled-border-color: var(--el-border-color-light);
--el-overlay-color: rgba(0, 0, 0, 0.8);
--el-overlay-color-light: rgba(0, 0, 0, 0.7);
--el-overlay-color-lighter: rgba(0, 0, 0, 0.5);
--el-mask-color: rgba(255, 255, 255, 0.9);
--el-mask-color-extra-light: rgba(255, 255, 255, 0.3);
--el-border-width: 1px;
--el-border-style: solid;
--el-border-color-hover: var(--el-text-color-disabled);
--el-border: var(--el-border-width) var(--el-border-style) var(--el-border-color);
--el-svg-monochrome-grey: var(--el-border-color);
}
.el-popper,
.el-notification,
.el-message-box,
.el-color-picker__trigger,
.el-color-predefine__color-selector > div,
.el-card {
border-radius: 0 !important;
}

@ -1,6 +0,0 @@
草莓图标库PRO 支持个人私用和商用,禁止分发和分享到其他平台,感谢支持,祝使用愉快!
图标库官网http://chuangzaoshi.com/icon/
使用方法参考https://github.com/xiangsudian/caomei
草莓图标Pro商业版权像素君/创造狮
草莓图标开源部分的协议http://scripts.sil.org/OFL

@ -1,431 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="StrawberryIcon-pro" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe900;" glyph-name="about" d="M512 896c-249.6 0-448-198.4-448-448s198.4-448 448-448 448 198.4 448 448c0 249.6-198.4 448-448 448zM544 192h-64v64h64v-64zM544 320h-64v384h64v-384z" />
<glyph unicode="&#xe901;" glyph-name="about-l" d="M512 896c-249.6 0-448-198.4-448-448s198.4-448 448-448c249.6 0 448 198.4 448 448s-198.4 448-448 448zM512 64c-211.2 0-384 172.8-384 384s172.8 384 384 384 384-172.8 384-384-172.8-384-384-384zM480 704h64v-384h-64v384zM480 256h64v-64h-64v64z" />
<glyph unicode="&#xe902;" glyph-name="add" d="M832 512h-256v256h-128v-256h-256v-128h256v-256h128v256h256z" />
<glyph unicode="&#xe903;" glyph-name="airplane" d="M864 576h-275.2l-204.8 256h-64l51.2-256h-179.2l-128 128v-448l128 128h192l-64-256h64l256 256h224c51.2 0 96 44.8 96 96s-44.8 96-96 96z" />
<glyph unicode="&#xe904;" glyph-name="airplane-l" d="M864 576h-275.2l-204.8 256h-64l51.2-256h-179.2l-128 128v-448l128 128h192l-64-256h64l256 256h224c51.2 0 96 44.8 96 96s-44.8 96-96 96zM864 448h-249.6l-198.4-198.4 32 121.6 19.2 76.8h-300.8l-38.4-38.4v140.8l38.4-38.4h281.6l-12.8 76.8-19.2 102.4 128-160 12.8-19.2h307.2c19.2 0 32-12.8 32-32s-12.8-32-32-32z" />
<glyph unicode="&#xe905;" glyph-name="alipay" d="M1024 256v505.6c0 108.8-89.6 198.4-198.4 198.4h-627.2c-108.8 0-198.4-89.6-198.4-198.4v-627.2c0-108.8 89.6-198.4 198.4-198.4h627.2c96 0 179.2 70.4 192 160-51.2 25.6-281.6 121.6-396.8 179.2-89.6-108.8-185.6-172.8-326.4-172.8s-236.8 89.6-224 192c12.8 70.4 57.6 185.6 268.8 166.4 108.8-12.8 160-32 249.6-64 25.6 44.8 44.8 89.6 57.6 140.8h-396.8v38.4h198.4v70.4h-243.2v44.8h243.2v102.4c0 0 0 19.2 19.2 19.2h96v-115.2h256v-44.8h-256v-76.8h211.2c-19.2-76.8-51.2-147.2-83.2-211.2 57.6-19.2 332.8-108.8 332.8-108.8zM281.6 166.4c-147.2 0-172.8 96-166.4 134.4 12.8 38.4 51.2 89.6 134.4 89.6 96 0 179.2-25.6 281.6-76.8-64-89.6-153.6-147.2-249.6-147.2z" />
<glyph unicode="&#xe906;" glyph-name="analysis" d="M515.013 448.447l440.194 65.316c3.157-21.464 4.793-43.422 4.793-65.763 0-85.665-24.044-165.714-65.751-233.767l-379.41 231.722 380.527-232.44-20.304-28.034c-83.725-115.604-217.577-185.48-363.062-185.48-247.424 0-448 200.576-448 448s200.576 448 448 448h34.316l-31.303-447.553zM941.893 574.464l-61.406-18.037c-5.562 18.936-12.578 37.375-20.975 55.177l57.884 27.303c9.805-20.788 17.999-42.324 24.496-64.442zM881.275 701.722l-52.719-36.287c-11.182 16.245-23.601 31.616-37.137 45.969l46.561 43.91c15.778-16.731 30.257-34.65 43.295-53.592zM787.596 801.224l-39.402-50.433c-15.544 12.144-31.997 23.078-49.212 32.696l31.213 55.873c20.085-11.22 39.275-23.974 57.401-38.135zM662.874 869.951l-21.55-60.263c-18.511 6.62-37.545 11.809-56.967 15.511l11.981 62.868c22.682-4.323 44.914-10.385 66.536-18.117zM128 448c0-212.077 171.923-384 384-384 112.873 0 217.501 49.013 289.593 131.8l-353.312 215.816 29.296 418.862c-195.95-17.408-349.577-182.002-349.577-382.478z" />
<glyph unicode="&#xe907;" glyph-name="android" d="M217.6 614.4h563.2v-409.6c0-38.4-32-70.4-64-70.4h-44.8v-134.4c0-32-25.6-64-64-64-32 0-64 25.6-64 64v140.8h-89.6v-140.8c0-32-25.6-64-64-64-32 0-64 25.6-64 64v140.8h-44.8c-38.4 0-70.4 32-70.4 70.4l6.4 403.2zM128 627.2c-32 0-64-25.6-64-64v-262.4c0-32 25.6-64 64-64s64 25.6 64 64v262.4c0 38.4-32 64-64 64zM780.8 640h-569.6c0 96 57.6 185.6 147.2 224l-44.8 83.2c0 6.4 0 12.8 0 12.8 6.4 0 12.8 0 12.8-6.4l44.8-83.2c38.4 19.2 76.8 25.6 121.6 25.6s83.2-6.4 121.6-25.6l44.8 83.2c6.4 6.4 12.8 6.4 19.2 6.4s6.4-6.4 0-12.8l-38.4-83.2c83.2-44.8 140.8-128 140.8-224zM390.4 768c0 12.8-12.8 25.6-25.6 25.6-12.8-6.4-19.2-12.8-19.2-25.6s12.8-25.6 25.6-25.6c12.8 0 19.2 12.8 19.2 25.6zM652.8 768c0 12.8-12.8 25.6-25.6 25.6-12.8-6.4-25.6-12.8-25.6-25.6s12.8-25.6 25.6-25.6c12.8 0 25.6 12.8 25.6 25.6zM870.4 627.2c-32 0-64-25.6-64-64v-262.4c0-32 25.6-64 64-64 32 0 64 25.6 64 64v262.4c-6.4 38.4-32 64-64 64z" />
<glyph unicode="&#xe908;" glyph-name="angle-down-l" d="M512 211.2l-473.6 467.2 51.2 51.2 422.4-428.8 422.4 428.8 51.2-51.2z" />
<glyph unicode="&#xe909;" glyph-name="angle-left-l" d="M742.4-25.6l-467.2 473.6 467.2 473.6 51.2-51.2-428.8-422.4 428.8-422.4z" />
<glyph unicode="&#xe90a;" glyph-name="angle-right-l" d="M281.6-25.6l-51.2 51.2 428.8 422.4-428.8 422.4 51.2 51.2 467.2-473.6z" />
<glyph unicode="&#xe90b;" glyph-name="angle-up-l" d="M934.4 166.4l-422.4 428.8-422.4-428.8-51.2 51.2 473.6 467.2 473.6-467.2z" />
<glyph unicode="&#xe90c;" glyph-name="apple" d="M844.8 288c-25.6 38.4-44.8 89.6-44.8 134.4s12.8 89.6 38.4 128c12.8 19.2 38.4 44.8 70.4 70.4-19.2 25.6-44.8 44.8-64 64-38.4 25.6-83.2 38.4-128 38.4-32 0-64-6.4-108.8-19.2-38.4-12.8-64-19.2-83.2-19.2-12.8 0-44.8 6.4-83.2 19.2-44.8 12.8-83.2 19.2-108.8 19.2-70.4 0-128-32-172.8-89.6-51.2-57.6-76.8-134.4-76.8-230.4 0-102.4 32-204.8 89.6-307.2 64-108.8 121.6-160 185.6-160 19.2 0 44.8 6.4 83.2 19.2 32 12.8 64 19.2 89.6 19.2s57.6-6.4 96-19.2c38.4-12.8 64-19.2 83.2-19.2 51.2 0 102.4 38.4 160 121.6 38.4 51.2 57.6 102.4 76.8 153.6-38.4 12.8-70.4 38.4-102.4 76.8zM633.6 768c25.6 25.6 44.8 51.2 57.6 83.2s19.2 57.6 19.2 83.2c0 6.4 0 6.4 0 12.8s0 6.4 0 12.8c-76.8-19.2-128-44.8-153.6-89.6-32-44.8-51.2-96-51.2-160 32 0 51.2 6.4 64 12.8 19.2 6.4 44.8 19.2 64 44.8z" />
<glyph unicode="&#xe90d;" glyph-name="arrow-down-l" d="M934.4 537.6l-390.4-396.8v755.2h-64v-755.2l-390.4 396.8-51.2-51.2 473.6-467.2 473.6 467.2z" />
<glyph unicode="&#xe90e;" glyph-name="arrow-up-l" d="M985.6 409.6l-473.6 467.2-473.6-467.2 51.2-51.2 390.4 396.8v-755.2h64v755.2l390.4-396.8z" />
<glyph unicode="&#xe90f;" glyph-name="baiduwangpan" d="M748.8 576c0-6.4 0-19.2 0-25.6s0-6.4 6.4-6.4c51.2 6.4 96-6.4 134.4-25.6 76.8-38.4 115.2-102.4 128-185.6 0-19.2-6.4-38.4-19.2-51.2s-32-12.8-44.8 0c-12.8 6.4-19.2 19.2-25.6 38.4-6.4 64-44.8 102.4-102.4 121.6-51.2 19.2-102.4 6.4-140.8-32-89.6-89.6-179.2-179.2-275.2-268.8-38.4-44.8-89.6-70.4-153.6-76.8-121.6-6.4-224 76.8-249.6 185.6-32 140.8 64 275.2 211.2 294.4 12.8 0 32 0 44.8 0 6.4 0 12.8 0 12.8 12.8-6.4 38.4 0 83.2 19.2 121.6 38.4 83.2 102.4 128 185.6 140.8 96 12.8 192-38.4 236.8-121.6 25.6-44.8 32-76.8 32-121.6zM659.2 576c0 76.8-57.6 147.2-147.2 147.2-83.2 0-147.2-64-147.2-147.2 0-76.8 57.6-147.2 147.2-147.2 83.2 0 147.2 70.4 147.2 147.2zM236.8 448c-83.2 0-147.2-70.4-147.2-147.2s64-147.2 147.2-147.2c89.6 0 147.2 70.4 147.2 147.2 0 83.2-64 147.2-147.2 147.2zM1024 108.8c0-25.6-19.2-44.8-44.8-44.8s-44.8 19.2-44.8 44.8c0 25.6 19.2 44.8 44.8 44.8s44.8-19.2 44.8-44.8z" />
<glyph unicode="&#xe910;" glyph-name="bar-chart" d="M128 640h192v-384h-192v384zM640 512h192v-256h-192v256zM384 832h192v-576h-192v576zM64 192h832v-64h-832v64z" />
<glyph unicode="&#xe911;" glyph-name="bar-chart-l" d="M320 640h-192v-384h192v384zM256 320h-64v256h64v-256zM832 512h-192v-256h192v256zM768 320h-64v128h64v-128zM576 832h-192v-576h192v576zM512 320h-64v448h64v-448zM64 192h832v-64h-832v64z" />
<glyph unicode="&#xe912;" glyph-name="battery" d="M192 576h576v-256h-576v256zM896 512v192h-832v-512h832v192h64v128h-64zM832 256h-704v384h704v-384z" />
<glyph unicode="&#xe913;" glyph-name="battery-l" d="M896 512v192h-832v-512h832v192h64v128h-64zM832 256h-704v384h704v-384z" />
<glyph unicode="&#xe914;" glyph-name="bell" d="M768 192v320c0 121.6-83.2 217.6-192 249.6 0 0 0 6.4 0 6.4 0 38.4-25.6 64-64 64s-64-25.6-64-64c0 0 0-6.4 0-6.4-108.8-32-192-128-192-249.6v-320h-64v-64h192c0-70.4 57.6-128 128-128s128 57.6 128 128h192v64h-64zM512 64c-38.4 0-64 25.6-64 64h128c0-38.4-25.6-64-64-64z" />
<glyph unicode="&#xe915;" glyph-name="bell-l" d="M768 192v320c0 121.6-83.2 217.6-192 249.6 0 0 0 6.4 0 6.4 0 38.4-25.6 64-64 64s-64-25.6-64-64c0 0 0-6.4 0-6.4-108.8-32-192-128-192-249.6v-320h-64v-64h192c0-70.4 57.6-128 128-128s128 57.6 128 128h192v64h-64zM512 64c-38.4 0-64 25.6-64 64h128c0-38.4-25.6-64-64-64zM640 192h-320v320c0 108.8 83.2 192 192 192s192-83.2 192-192v-320h-64z" />
<glyph unicode="&#xe916;" glyph-name="bevel" d="M640 896v-64h211.2l-723.2-723.2v211.2h-64v-320h320v64h-211.2l723.2 723.2v-211.2h64v320z" />
<glyph unicode="&#xe917;" glyph-name="bilibili" d="M800 736h-51.2l44.8 44.8c19.2 19.2 19.2 57.6 0 76.8s-57.6 19.2-76.8 0l-128-121.6h-153.6l-128 121.6c-19.2 19.2-57.6 19.2-76.8 0s-19.2-57.6 0-76.8l44.8-44.8h-51.2c-89.6 0-160-70.4-160-160v-345.6c0-96 70.4-166.4 160-166.4h569.6c89.6 0 160 70.4 160 160v352c6.4 89.6-64 160-153.6 160zM844.8 230.4c0-32-25.6-57.6-57.6-57.6h-556.8c-32 0-57.6 25.6-57.6 57.6v339.2c0 32 25.6 57.6 57.6 57.6h556.8c32 0 57.6-25.6 57.6-57.6v-339.2zM345.6 512c-32 0-57.6-25.6-57.6-57.6v-57.6c0-32 25.6-57.6 57.6-57.6s57.6 25.6 57.6 57.6v57.6c0 32-25.6 57.6-57.6 57.6zM678.4 512c-32 0-57.6-25.6-57.6-57.6v-57.6c0-32 25.6-57.6 57.6-57.6s57.6 25.6 57.6 57.6v57.6c0 32-25.6 57.6-57.6 57.6z" />
<glyph unicode="&#xe918;" glyph-name="bitcoin" d="M627.2 550.4c0 70.4-102.4 57.6-134.4 57.6v-115.2c32 0 134.4-6.4 134.4 57.6zM492.8 435.2v-128c38.4 0 160-6.4 160 64s-121.6 64-160 64zM512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM768 358.4c-6.4-89.6-76.8-115.2-172.8-121.6v-96h-57.6v96c-12.8 0-32 0-44.8 0v-96h-57.6v96c-12.8 0-25.6 0-38.4 0h-76.8l12.8 70.4c0 0 44.8 0 44.8 0 19.2 0 19.2 12.8 19.2 19.2v262.4c0 12.8-12.8 25.6-32 25.6 0 0-44.8 0-44.8 0v64h76.8c12.8 0 25.6 0 38.4 0v96h57.6v-96c12.8 0 32 0 44.8 0v89.6h57.6v-96c70.4-6.4 134.4-32 140.8-96 6.4-51.2-19.2-83.2-51.2-96 57.6-19.2 89.6-51.2 83.2-121.6z" />
<glyph unicode="&#xe919;" glyph-name="blackboard" d="M960 192v640h-896v-640h-64v-64h281.6l-57.6-115.2 57.6-25.6 76.8 140.8h313.6l70.4-140.8 57.6 25.6-57.6 115.2h281.6v64h-64zM710.4 192h-582.4v576h768v-576h-185.6zM192 256h640v448h-640v-448zM512 556.8l64-64 83.2 83.2h-83.2v64h192v-192h-64v83.2l-128-128-64 64-166.4-166.4-51.2 44.8 217.6 211.2z" />
<glyph unicode="&#xe91a;" glyph-name="blackboard-l" d="M960 192v640h-896v-640h-64v-64h281.6l-57.6-115.2 57.6-25.6 76.8 140.8h313.6l70.4-140.8 57.6 25.6-57.6 115.2h281.6v64h-64zM128 192v576h768v-576h-768zM512 576h83.2l-83.2-83.2-64 64-217.6-211.2 51.2-51.2 166.4 172.8 64-64 128 128v-83.2h64v192h-192z" />
<glyph unicode="&#xe91b;" glyph-name="block" d="M864 448h-96v256h-256v96c0 51.2-44.8 96-96 96s-96-44.8-96-96v-96h-256v-256h96c51.2 0 96-44.8 96-96s-44.8-96-96-96h-96v-256h256v96c0 51.2 44.8 96 96 96s96-44.8 96-96v-96h256v256h96c51.2 0 96 44.8 96 96s-44.8 96-96 96z" />
<glyph unicode="&#xe91c;" glyph-name="block-l" d="M864 448h-96v256h-256v96c0 51.2-44.8 96-96 96s-96-44.8-96-96v-96h-256v-256h96c51.2 0 96-44.8 96-96s-44.8-96-96-96h-96v-256h256v96c0 51.2 44.8 96 96 96s96-44.8 96-96v-96h256v256h96c51.2 0 96 44.8 96 96s-44.8 96-96 96zM864 320h-160v-256h-128v32c0 89.6-70.4 160-160 160s-160-70.4-160-160v-32h-128v128h32c89.6 0 160 70.4 160 160s-70.4 160-160 160h-32v128h256v160c0 19.2 12.8 32 32 32s32-12.8 32-32v-160h256v-256h160c19.2 0 32-12.8 32-32s-12.8-32-32-32z" />
<glyph unicode="&#xe91d;" glyph-name="bluetooth" d="M512 672v-147.2l83.2 83.2zM512 224l83.2 64-83.2 83.2zM832 454.4c0 102.4-12.8 441.6-332.8 441.6s-332.8-332.8-332.8-441.6v0c0 0 0-6.4 0-6.4s0-6.4 0-6.4v0c0-108.8 12.8-441.6 332.8-441.6 313.6 0 332.8 339.2 332.8 441.6v0c0 0 0 6.4 0 6.4s0 6.4 0 6.4v0zM684.8 288l-236.8-192v275.2l-102.4-102.4-44.8 44.8 134.4 134.4-140.8 134.4 44.8 44.8 108.8-102.4v275.2l236.8-192-160-160 160-160z" />
<glyph unicode="&#xe91e;" glyph-name="bluetooth-l" d="M684.8 608l-236.8 192v-275.2l-102.4 108.8-51.2-51.2 140.8-134.4-134.4-134.4 44.8-44.8 102.4 102.4v-275.2l236.8 192-160 160 160 160zM512 672l83.2-64-83.2-83.2v147.2zM595.2 288l-83.2-64v147.2l83.2-83.2z" />
<glyph unicode="&#xe91f;" glyph-name="board" d="M960 192v640h-896v-640h-64v-64h281.6l-57.6-115.2 57.6-25.6 76.8 140.8h313.6l70.4-140.8 57.6 25.6-57.6 115.2h281.6v64h-64zM710.4 192h-582.4v576h768v-576h-185.6zM192 256h640v448h-640v-448z" />
<glyph unicode="&#xe920;" glyph-name="board-l" d="M960 192v640h-896v-640h-64v-64h281.6l-57.6-115.2 57.6-25.6 76.8 140.8h313.6l70.4-140.8 57.6 25.6-57.6 115.2h281.6v64h-64zM128 192v576h768v-576h-768z" />
<glyph unicode="&#xe921;" glyph-name="book" d="M320 768h576v-64h-576v64zM288 896c-89.6 0-160-70.4-160-160v-640c0-89.6 70.4-160 160-160h608v704h-608c-51.2 0-96 44.8-96 96s44.8 96 96 96h608v64h-608zM448 576h320v-345.6l-160 153.6-160-153.6v345.6z" />
<glyph unicode="&#xe922;" glyph-name="book-l" d="M320 768h576v-64h-576v64zM288 896c-76.8 0-140.8-57.6-153.6-128h-6.4v-672c0-89.6 70.4-160 160-160h608v704h-608c-51.2 0-96 44.8-96 96s44.8 96 96 96h608v64h-608zM704 576v-198.4l-96 96-96-96v198.4h192zM288 576h160v-345.6l160 153.6 160-153.6v345.6h64v-576h-544c-51.2 0-96 44.8-96 96v512c25.6-19.2 57.6-32 96-32z" />
<glyph unicode="&#xe923;" glyph-name="bookmark" d="M192 896v-896l320 256 320-256v896z" />
<glyph unicode="&#xe924;" glyph-name="bookmark-l" d="M192 896v-896l320 256 320-256v896h-640zM768 134.4l-217.6 172.8-38.4 32-38.4-32-217.6-172.8v697.6h512v-697.6z" />
<glyph unicode="&#xe925;" glyph-name="books" d="M128 896v-896h192v896h-192zM256 768h-64v64h64v-64zM384 896v-896h192v896h-192zM512 768h-64v64h64v-64zM761.6 793.6l-185.6-51.2 198.4-742.4 185.6 51.2-198.4 742.4zM716.8 710.4l19.2-64-64-19.2-19.2 64 64 19.2z" />
<glyph unicode="&#xe926;" glyph-name="books-l" d="M128 0h192v896h-192v-896zM192 832h64v-768h-64v768zM384 896v-896h192v896h-192zM512 64h-64v768h64v-768zM761.6 780.8l-185.6-51.2 198.4-742.4 185.6 51.2-198.4 742.4zM652.8 684.8l64 19.2 166.4-620.8-64-19.2-166.4 620.8z" />
<glyph unicode="&#xe927;" glyph-name="bot" d="M256 64h512c0 140.8-115.2 256-256 256s-256-115.2-256-256zM947.2 601.6c-25.6 0-44.8-12.8-51.2-32-12.8 108.8-108.8 198.4-224 198.4h-320c-121.6 0-224-102.4-224-224s102.4-224 224-224h320c115.2 0 211.2 89.6 224 204.8 6.4-19.2 25.6-32 51.2-32 32 0 51.2 25.6 51.2 51.2 0 32-25.6 57.6-51.2 57.6zM352 492.8c-25.6 0-51.2 19.2-51.2 51.2 0 25.6 19.2 51.2 51.2 51.2s51.2-19.2 51.2-51.2c0-25.6-25.6-51.2-51.2-51.2zM691.2 492.8c-25.6 0-51.2 19.2-51.2 51.2 0 25.6 19.2 51.2 51.2 51.2s51.2-19.2 51.2-51.2c-6.4-25.6-25.6-51.2-51.2-51.2zM76.8 601.6c-32 0-57.6-25.6-57.6-57.6s25.6-51.2 57.6-51.2c25.6 0 51.2 19.2 51.2 51.2s-25.6 57.6-51.2 57.6z" />
<glyph unicode="&#xe928;" glyph-name="bot-l" d="M403.2 544c0-28.277-22.923-51.2-51.2-51.2s-51.2 22.923-51.2 51.2c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2zM742.4 544c0-28.277-22.923-51.2-51.2-51.2s-51.2 22.923-51.2 51.2c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2zM947.2 601.6c-25.6 0-44.8-12.8-51.2-32-12.8 108.8-108.8 198.4-224 198.4h-320c-121.6 0-224-102.4-224-224s102.4-224 224-224h320c115.2 0 211.2 89.6 224 204.8 6.4-19.2 25.6-32 51.2-32 32 0 51.2 25.6 51.2 51.2 0 32-25.6 57.6-51.2 57.6zM672 409.6h-320c-76.8 0-134.4 57.6-134.4 134.4s57.6 134.4 134.4 134.4h320c76.8 0 134.4-57.6 134.4-134.4s-57.6-134.4-134.4-134.4zM76.8 601.6c-32 0-57.6-25.6-57.6-57.6s25.6-51.2 57.6-51.2c25.6 0 51.2 19.2 51.2 51.2s-25.6 57.6-51.2 57.6zM256 64h89.6c0 89.6 76.8 166.4 166.4 166.4s166.4-76.8 166.4-166.4h89.6c0 140.8-115.2 256-256 256s-256-115.2-256-256z" />
<glyph unicode="&#xe929;" glyph-name="box" d="M64 832h896v-256h-896v256zM128 64h768v448h-768v-448zM320 448h384v-64h-384v64z" />
<glyph unicode="&#xe92a;" glyph-name="box-l" d="M64 832v-256h64v-512h768v512h64v256h-896zM832 128h-640v448h640v-448zM896 640h-768v128h768v-128zM320 448h384v-64h-384v64z" />
<glyph unicode="&#xe92b;" glyph-name="briefcase" d="M684.8 704v64c0 38.4-25.6 64-64 64h-217.6c-38.4 0-64-25.6-64-64v-64h-275.2v-704h896v704h-275.2zM704 448h64v-64h-64v64zM403.2 768h217.6v-64h-217.6v64zM256 448h64v-64h-64v64zM896 64h-768v313.6c32-32 76.8-51.2 128-57.6v-64h64v64h384v-64h64v64c51.2 6.4 96 25.6 128 57.6v-313.6z" />
<glyph unicode="&#xe92c;" glyph-name="briefcase-l" d="M684.8 704v64c0 38.4-25.6 64-64 64h-217.6c-38.4 0-64-25.6-64-64v-64h-275.2v-704h896v704h-275.2zM403.2 768h217.6v-64h-217.6v64zM128 640h768v-115.2c0-76.8-57.6-134.4-128-140.8v64h-64v-64h-384v64h-64v-64c-70.4 6.4-128 70.4-128 140.8v115.2zM128 64v313.6c32-32 76.8-51.2 128-57.6v-64h64v64h384v-64h64v64c51.2 6.4 96 25.6 128 57.6v-313.6h-768z" />
<glyph unicode="&#xe92d;" glyph-name="brush" d="M787.2 595.2c-64 0-128 25.6-172.8 70.4v0 32c6.4 19.2 12.8 38.4 19.2 57.6 12.8 64-6.4 134.4-57.6 172.8-12.8 19.2-38.4 32-64 32s-51.2-12.8-70.4-25.6c-51.2-38.4-64-108.8-57.6-172.8 6.4-19.2 6.4-44.8 19.2-57.6v0-38.4c-44.8-44.8-102.4-70.4-166.4-70.4h-44.8v-595.2h640v595.2h-44.8zM512 832c19.2 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32c0 19.2 12.8 32 32 32zM768 64h-64v128h-64v-128h-64v192h-64v-192h-128v64h-64v-64h-64v313.6h512v-313.6zM768 448h-512v64h512v-64z" />
<glyph unicode="&#xe92e;" glyph-name="brush-l" d="M787.2 595.2c-64 0-128 25.6-172.8 70.4v0 32c6.4 19.2 12.8 38.4 19.2 57.6 12.8 64-6.4 134.4-57.6 172.8-12.8 19.2-38.4 32-64 32s-51.2-12.8-70.4-25.6c-51.2-38.4-64-108.8-57.6-172.8 6.4-19.2 6.4-44.8 19.2-57.6v0-38.4c-44.8-44.8-102.4-70.4-166.4-70.4h-44.8v-595.2h640v595.2h-44.8zM768 64h-64v128h-64v-128h-64v192h-64v-192h-128v64h-64v-64h-64v313.6h512v-313.6zM256 531.2c70.4 6.4 140.8 38.4 192 89.6l19.2 19.2v76.8l-6.4 12.8c0 6.4-6.4 19.2-12.8 44.8-6.4 32 0 83.2 38.4 108.8 6.4 6.4 19.2 12.8 25.6 12.8s19.2-6.4 25.6-12.8c38.4-25.6 44.8-76.8 38.4-108.8-6.4-25.6-12.8-38.4-12.8-44.8l-6.4-12.8v-76.8l19.2-19.2c51.2-51.2 121.6-83.2 192-89.6v-83.2h-512v83.2zM544 800c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32z" />
<glyph unicode="&#xe92f;" glyph-name="bug" d="M576 960h-128l-192-256h512zM896 768v-128h-768v128h-64v-192h89.6l57.6-128h-147.2v-128h64v64h115.2l32-70.4-147.2-121.6v-128h64v96l108.8 89.6 32-70.4c25.6-51.2 64-89.6 115.2-102.4v435.2h128v-435.2c51.2 19.2 96 57.6 115.2 102.4l32 70.4 108.8-89.6v-96h64v128l-147.2 121.6 32 70.4h115.2v-64h64v128h-147.2l57.6 128h89.6v192h-64z" />
<glyph unicode="&#xe930;" glyph-name="bug-l" d="M576 960h-128l-192-256h512l-192 256zM480 896h64l96-128h-256l96 128zM896 768v-128h-768v128h-64v-192h89.6l172.8-396.8c38.4-70.4 108.8-115.2 185.6-115.2s147.2 44.8 179.2 115.2l179.2 396.8h89.6v192h-64zM633.6 204.8c-19.2-38.4-51.2-64-89.6-76.8v320h-64v-313.6c-38.4 12.8-70.4 38.4-89.6 76.8l-166.4 364.8h576l-166.4-371.2zM128 192v-128h64v96l108.8 89.6-25.6 64zM128 384h115.2l-32 64h-147.2v-128h64zM812.8 448l-32-64h115.2v-64h64v128h-64zM723.2 249.6l108.8-89.6v-96h64v128l-147.2 121.6z" />
<glyph unicode="&#xe931;" glyph-name="building" d="M448 192h128v-256h-128v256zM128 960v-1024h256v320h256v-320h256v1024h-768zM320 576v-64h-64v64h64zM256 640v64h64v-64h-64zM320 448v-64h-64v64h64zM320 320v-64h-64v64h64zM320 192v-64h-64v64h64zM320 768h-64v64h64v-64zM640 704v-64h-64v64h64zM576 768v64h64v-64h-64zM640 576v-64h-64v64h64zM640 448v-64h-64v64h64zM768 704v-64h-64v64h64zM704 768v64h64v-64h-64zM768 576v-64h-64v64h64zM768 448v-64h-64v64h64zM768 320v-64h-64v64h64zM768 192v-64h-64v64h64zM448 704v-64h-64v64h64zM384 768v64h64v-64h-64zM448 576v-64h-64v64h64zM448 448v-64h-64v64h64z" />
<glyph unicode="&#xe932;" glyph-name="building-l" d="M896 960h-768v-1024h768v1024zM192 0v896h640v-896h-192v256h-256v-256h-192zM448 0v192h128v-192h-128zM320 832h-64v-64h64v64zM320 704h-64v-64h64v64zM320 576h-64v-64h64v64zM320 448h-64v-64h64v64zM320 320h-64v-64h64v64zM320 192h-64v-64h64v64zM768 832h-64v-64h64v64zM768 704h-64v-64h64v64zM768 576h-64v-64h64v64zM768 448h-64v-64h64v64zM768 320h-64v-64h64v64zM768 192h-64v-64h64v64zM640 832h-64v-64h64v64zM640 704h-64v-64h64v64zM640 576h-64v-64h64v64zM640 448h-64v-64h64v64zM448 832h-64v-64h64v64zM448 704h-64v-64h64v64zM448 576h-64v-64h64v64zM448 448h-64v-64h64v64z" />
<glyph unicode="&#xe933;" glyph-name="buy" d="M896 704h-192v64c0 108.8-83.2 192-192 192s-192-83.2-192-192v-64h-192l-64-704h896l-64 704zM384 556.8v-44.8h-64v64h64v-19.2zM384 768c0 70.4 57.6 128 128 128s128-57.6 128-128v-64h-256v64zM704 556.8v-44.8h-64v64h64v-19.2z" />
<glyph unicode="&#xe934;" glyph-name="buy-l" d="M134.4 396.8v0zM672 672v0zM160 672h192v96c0 89.6 70.4 160 160 160s160-70.4 160-160c0 89.6-70.4 160-160 160s-160-70.4-160-160v-96h-192zM512 960c-108.8 0-192-83.2-192-192v-64h-192l-64-704h896l-64 704h-192v64c0 108.8-83.2 192-192 192v0zM384 704v64c0 70.4 57.6 128 128 128s128-57.6 128-128v-64h-256zM134.4 64l51.2 576h652.8l51.2-576h-755.2zM640 556.8v-44.8h64v64h-64zM704 576h-64v-64h64v64zM320 556.8v-44.8h64v64h-64zM384 576h-64v-64h64v64z" />
<glyph unicode="&#xe935;" glyph-name="calculator" d="M384 704h320v-128h-320v128zM192 896v-896h704v896h-704zM384 128h-64v64h64v-64zM384 256h-64v64h64v-64zM384 384h-64v64h64v-64zM512 128h-64v64h64v-64zM512 256h-64v64h64v-64zM512 384h-64v64h64v-64zM640 128h-64v64h64v-64zM640 256h-64v64h64v-64zM640 384h-64v64h64v-64zM768 192v-64h-64v192h64v-128zM768 384h-64v64h64v-64zM768 512h-448v256h448v-256z" />
<glyph unicode="&#xe936;" glyph-name="calculator-l" d="M896 896h-704v-896h704v896zM256 64v768h576v-768h-576zM768 768h-448v-256h448v256zM384 576v128h320v-128h-320zM384 448h-64v-64h64v64zM512 448h-64v-64h64v64zM640 448h-64v-64h64v64zM768 448h-64v-64h64v64zM384 320h-64v-64h64v64zM512 320h-64v-64h64v64zM640 320h-64v-64h64v64zM768 320h-64v-192h64v192zM384 192h-64v-64h64v64zM512 192h-64v-64h64v64zM640 192h-64v-64h64v64z" />
<glyph unicode="&#xe937;" glyph-name="calendar" d="M256 896h64v-64h-64v64zM640 896h64v-64h-64v64zM832 832h-128v-64h-64v64h-320v-64h-64v64h-192v-768h832v768h-64zM832 128h-704v448h704v-448zM448 512h64v-64h-64v64zM320 512h64v-64h-64v64zM576 512h64v-64h-64v64zM704 512h64v-64h-64v64zM256 384h64v-64h-64v64zM384 384h64v-64h-64v64zM512 384h64v-64h-64v64zM640 384h64v-64h-64v64zM192 256h64v-64h-64v64zM320 256h64v-64h-64v64zM448 256h64v-64h-64v64zM576 256h64v-64h-64v64z" />
<glyph unicode="&#xe938;" glyph-name="calendar-l" d="M512 512h-64v-64h64v64zM384 512h-64v-64h64v64zM640 512h-64v-64h64v64zM768 512h-64v-64h64v64zM320 384h-64v-64h64v64zM448 384h-64v-64h64v64zM576 384h-64v-64h64v64zM704 384h-64v-64h64v64zM256 256h-64v-64h64v64zM384 256h-64v-64h64v64zM512 256h-64v-64h64v64zM640 256h-64v-64h64v64zM704 896h-64v-64h-320v64h-64v-64h-192v-768h832v768h-192v64zM640 704h64v64h128v-128h-704v128h128v-64h64v64h320v-64zM128 128v448h704v-448h-704z" />
<glyph unicode="&#xe939;" glyph-name="camber" d="M512 627.2c115.2 0 224-32 320-96l-320-320-320 320c96 64 204.8 96 320 96zM512 755.2c-185.6 0-371.2-70.4-512-211.2v0l512-512 512 512c-140.8 140.8-326.4 211.2-512 211.2v0z" />
<glyph unicode="&#xe93a;" glyph-name="camber-l" d="M512 755.2c-185.6 0-371.2-70.4-512-211.2l512-512 512 512c-140.8 140.8-326.4 211.2-512 211.2zM89.6 544c121.6 96 268.8 147.2 422.4 147.2s300.8-51.2 422.4-147.2l-422.4-422.4-422.4 422.4z" />
<glyph unicode="&#xe93b;" glyph-name="camber-o" d="M512 755.2c-185.6 0-371.2-70.4-512-211.2l512-512 512 512c-140.8 140.8-326.4 211.2-512 211.2z" />
<glyph unicode="&#xe93c;" glyph-name="camera" d="M384 768v64h-256v-64h-64v-704h896v704h-576zM416 192c-121.6 0-224 102.4-224 224s102.4 224 224 224 224-102.4 224-224-102.4-224-224-224zM832 576h-192v64h192v-64zM416 576c-89.6 0-160-70.4-160-160s70.4-160 160-160 160 70.4 160 160c0 89.6-70.4 160-160 160zM416 320c-51.2 0-96 44.8-96 96s44.8 96 96 96c51.2 0 96-44.8 96-96s-44.8-96-96-96z" />
<glyph unicode="&#xe93d;" glyph-name="camera-l" d="M128 128h768v576h-768v-576zM64 768h64.141v64h256.036v-64h575.822v-704h-896v704zM416 192c-123.712 0-224 100.288-224 224s100.288 224 224 224c123.712 0 224-100.288 224-224s-100.288-224-224-224zM416 256c88.366 0 160 71.634 160 160s-71.634 160-160 160c-88.366 0-160-71.634-160-160s71.634-160 160-160zM640 640h192v-64h-192v64zM320 416c0 53.019 42.611 96 96 96 53.019 0 96-42.611 96-96 0-53.019-42.611-96-96-96-53.019 0-96 42.611-96 96z" />
<glyph unicode="&#xe93e;" glyph-name="car" d="M985.6 550.4l-44.8 44.8-70.4-70.4-102.4 243.2h-512l-96-243.2-70.4 76.8-51.2-51.2 89.6-89.6v-396.8h128v128h512v-128h128v384l-6.4 12.8 96 89.6zM300.8 704h422.4l76.8-192h-576l76.8 192zM320 320h-128v64h128v-64zM832 320h-128v64h128v-64z" />
<glyph unicode="&#xe93f;" glyph-name="car-l" d="M985.6 550.4l-44.8 44.8-70.4-70.4-102.4 243.2h-512l-96-243.2-70.4 76.8-51.2-51.2 89.6-83.2v-403.2h64v128h640v-128h64v403.2l89.6 83.2zM300.8 704h422.4l76.8-192h-576l76.8 192zM192 256v192h640v-192h-640zM256 384h128v-64h-128v64zM640 384h128v-64h-128v64z" />
<glyph unicode="&#xe940;" glyph-name="category-l" d="M256 768h-64v-64h64v64zM896 768h-576v-64h576v64zM256 512h-64v-64h64v64zM896 512h-576v-64h576v64zM256 256h-64v-64h64v64zM896 256h-576v-64h576v64z" />
<glyph unicode="&#xe941;" glyph-name="certificate" d="M256 704h512v-64h-512v64zM576-25.6l64 32 64-32v153.6h-128zM768 320c0-70.692-57.308-128-128-128s-128 57.308-128 128c0 70.692 57.308 128 128 128s128-57.308 128-128zM960 896h-896v-832h448v115.2c-38.4 32-64 83.2-64 140.8 0 108.8 83.2 192 192 192s192-83.2 192-192c0-57.6-25.6-108.8-64-140.8v-115.2h192v832zM384 192h-192v64h192v-64zM384 320h-192v64h192v-64zM384 448h-192v64h192v-64zM832 576h-640v192h640v-192z" />
<glyph unicode="&#xe942;" glyph-name="certificate-l" d="M832 768h-640v-192h640v192zM768 640h-512v64h512v-64zM192 384h192v-64h-192v64zM192 512h192v-64h-192v64zM192 256h192v-64h-192v64zM64 896v-832h448v-128l128 64 128-64v128h192v832h-896zM704 38.4l-64 32-64-32v89.6h128v-89.6zM640 192c-70.4 0-128 57.6-128 128s57.6 128 128 128 128-57.6 128-128c0-70.4-57.6-128-128-128zM896 128h-128v51.2c38.4 32 64 83.2 64 140.8 0 108.8-83.2 192-192 192s-192-83.2-192-192c0-57.6 25.6-108.8 64-140.8v-51.2h-384v704h768v-704z" />
<glyph unicode="&#xe943;" glyph-name="chemistry" d="M947.2 83.2l-307.2 512v300.8h64v64h-384v-64h64v-300.8l-89.6-147.2-217.6-371.2c-38.4-64 6.4-140.8 83.2-140.8h704c76.8 0 121.6 83.2 83.2 147.2zM416 256c-19.2 0-32 12.8-32 32s12.8 32 32 32c19.2 0 32-12.8 32-32s-12.8-32-32-32zM576 128c-38.4 0-64 25.6-64 64s25.6 64 64 64c38.4 0 64-25.6 64-64s-25.6-64-64-64zM371.2 448l70.4 115.2 6.4 12.8v320h128v-320l6.4-12.8 70.4-115.2h-281.6z" />
<glyph unicode="&#xe944;" glyph-name="chemistry-l" d="M576 288c-51.2 0-96-44.8-96-96s44.8-96 96-96 96 44.8 96 96-44.8 96-96 96zM576 160c-19.2 0-32 12.8-32 32s12.8 32 32 32c19.2 0 32-12.8 32-32s-12.8-32-32-32zM448 288c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM947.2 83.2l-307.2 512v300.8h64v64h-384v-64h64v-300.8l-89.6-147.2-217.6-371.2c-38.4-64 6.4-140.8 83.2-140.8h704c76.8 0 121.6 83.2 83.2 147.2zM441.6 563.2l6.4 12.8v320h128v-320l6.4-12.8 70.4-115.2h-281.6l70.4 115.2zM896 19.2c0 0-6.4 0 0 0-6.4-6.4-6.4-12.8-12.8-12.8-6.4-6.4-12.8-6.4-19.2-6.4h-704c-19.2 0-25.6 12.8-25.6 12.8s0 0 0 6.4c0 0 0 6.4 0 6.4 0 6.4 0 12.8 6.4 19.2l192 339.2h358.4l198.4-339.2c6.4-6.4 6.4-19.2 6.4-25.6z" />
<glyph unicode="&#xe945;" glyph-name="choose-list-l" d="M128 576h192v192h-192v-192zM192 704h64v-64h-64v64zM384 704h512v-64h-512v64zM128 320h192v192h-192v-192zM192 448h64v-64h-64v64zM384 448h512v-64h-512v64zM128 64h192v192h-192v-192zM192 192h64v-64h-64v64zM384 192h512v-64h-512v64z" />
<glyph unicode="&#xe946;" glyph-name="chrome" d="M256 512l-147.2 256c96 115.2 243.2 192 403.2 192 185.6 0 352-102.4 441.6-249.6h-416c-6.4 0-12.8 0-25.6 0-121.6 0-224-83.2-256-198.4v0zM697.6 633.6h294.4c19.2-57.6 32-121.6 32-185.6 0-281.6-224-512-505.6-512l211.2 364.8c32 44.8 44.8 96 44.8 147.2 0 70.4-32 140.8-76.8 185.6v0zM326.4 448c0 102.4 83.2 185.6 185.6 185.6s185.6-83.2 185.6-185.6-83.2-185.6-185.6-185.6-185.6 83.2-185.6 185.6zM582.4 198.4l-147.2-256c-243.2 38.4-435.2 249.6-435.2 505.6 0 89.6 25.6 179.2 64 249.6l211.2-364.8c44.8-89.6 134.4-153.6 236.8-153.6 25.6 6.4 44.8 12.8 70.4 19.2z" />
<glyph unicode="&#xe947;" glyph-name="circle" d="M512 736c160 0 288-128 288-288s-128-288-288-288-288 128-288 288 128 288 288 288zM512 864c-230.4 0-416-185.6-416-416s185.6-416 416-416 416 185.6 416 416-185.6 416-416 416v0z" />
<glyph unicode="&#xe948;" glyph-name="circle-l" d="M544 864c-230.4 0-416-185.6-416-416s185.6-416 416-416 416 185.6 416 416-185.6 416-416 416zM544 96c-192 0-352 160-352 352s160 352 352 352 352-160 352-352-160-352-352-352z" />
<glyph unicode="&#xe949;" glyph-name="circle-o" d="M928 448c0-229.75-186.25-416-416-416s-416 186.25-416 416c0 229.75 186.25 416 416 416s416-186.25 416-416z" />
<glyph unicode="&#xe94a;" glyph-name="clip-l" d="M448-6.4c-89.6 0-160 70.4-160 160v512c0 121.6 102.4 224 224 224s224-102.4 224-224v-512h-64v512c0 89.6-70.4 160-160 160s-160-70.4-160-160v-512c0-51.2 44.8-96 96-96s96 44.8 96 96v448c0 19.2-12.8 32-32 32s-32-12.8-32-32v-320h-64v320c0 51.2 44.8 96 96 96s96-44.8 96-96v-448c0-89.6-70.4-160-160-160z" />
<glyph unicode="&#xe94b;" glyph-name="clock" d="M320 819.2c-19.2 6.4-38.4 12.8-64 12.8-108.8 0-192-83.2-192-192 0-32 6.4-57.6 19.2-89.6 38.4 121.6 128 217.6 236.8 268.8zM768 832c-25.6 0-44.8-6.4-64-12.8 108.8-51.2 198.4-147.2 236.8-268.8 12.8 32 19.2 57.6 19.2 89.6 0 108.8-83.2 192-192 192zM896 416c0 211.2-172.8 384-384 384s-384-172.8-384-384c0-121.6 57.6-230.4 147.2-300.8l-51.2-96 57.6-25.6 44.8 89.6c57.6-32 121.6-51.2 185.6-51.2s128 19.2 179.2 44.8l44.8-89.6 57.6 25.6-51.2 96c96 76.8 153.6 185.6 153.6 307.2zM448 384v256h64v-192h192v-64h-256z" />
<glyph unicode="&#xe94c;" glyph-name="clock-l" d="M230.4 768c25.6 19.2 57.6 38.4 89.6 51.2-19.2 6.4-38.4 12.8-64 12.8-108.8 0-192-83.2-192-192 0-32 6.4-57.6 19.2-89.6 12.8 32 25.6 64 44.8 96 25.6 44.8 64 83.2 102.4 121.6zM768 832c-25.6 0-44.8-6.4-64-12.8 32-12.8 64-32 89.6-57.6 38.4-32 76.8-70.4 102.4-115.2 19.2-32 32-57.6 44.8-96 12.8 32 19.2 57.6 19.2 89.6 0 108.8-83.2 192-192 192zM896 416c0 211.2-172.8 384-384 384s-384-172.8-384-384c0-121.6 57.6-230.4 147.2-300.8l-51.2-96 57.6-25.6 44.8 89.6c57.6-32 121.6-51.2 185.6-51.2s128 19.2 179.2 44.8l44.8-89.6 57.6 25.6-51.2 96c96 76.8 153.6 185.6 153.6 307.2zM192 416c0 179.2 140.8 320 320 320s320-140.8 320-320-140.8-320-320-320-320 140.8-320 320zM512 640h-64v-256h256v64h-192z" />
<glyph unicode="&#xe94d;" glyph-name="close-l" d="M921.6 806.4l-51.2 51.2-358.4-364.8-358.4 364.8-51.2-51.2 364.8-358.4-364.8-358.4 51.2-51.2 358.4 364.8 358.4-364.8 51.2 51.2-364.8 358.4z" />
<glyph unicode="&#xe94e;" glyph-name="clothes" d="M512 640c38.4 0 64 25.6 64 64v64h-128v-64c0-38.4 25.6-64 64-64zM640 768v-64c0-70.4-57.6-128-128-128s-128 57.6-128 128v64h-320v-320h192v-384h512v384h192v320h-320z" />
<glyph unicode="&#xe94f;" glyph-name="clothes-l" d="M640 768h-576v-320h192v-384h512v384h192v320h-320zM576 704c0-38.4-25.6-64-64-64s-64 25.6-64 64h128zM896 512h-192v-384h-384v384h-192v192h256c0-70.4 57.6-128 128-128s128 57.6 128 128h256v-192z" />
<glyph unicode="&#xe950;" glyph-name="cloud" d="M800 582.4c6.4 166.4-128 294.4-288 294.4s-294.4-128-294.4-294.4c-121.6 0-217.6-96-217.6-217.6s96-217.6 217.6-217.6h582.4c121.6 0 217.6 96 217.6 217.6s-96 217.6-217.6 217.6z" />
<glyph unicode="&#xe951;" glyph-name="cloud-download-l" d="M800 608c-12.8 147.2-140.8 256-288 256s-268.8-115.2-288-256c-108.8-12.8-192-108.8-192-224 0-121.6 102.4-224 224-224h512c121.6 0 224 102.4 224 224 0 115.2-83.2 204.8-192 224zM768 224h-512c-89.6 0-160 70.4-160 160s70.4 160 160 160h32v32c0 121.6 102.4 224 224 224s224-102.4 224-224v-32h32c89.6 0 160-70.4 160-160s-70.4-160-160-160zM544 396.8v243.2h-64v-243.2l-134.4 140.8-51.2-51.2 217.6-211.2 217.6 211.2-51.2 51.2z" />
<glyph unicode="&#xe952;" glyph-name="cloud-l" d="M806.4 582.4c0 160-128 294.4-294.4 294.4s-294.4-128-294.4-294.4c-121.6 0-217.6-96-217.6-217.6s96-217.6 217.6-217.6h582.4c121.6 0 217.6 96 217.6 217.6s-89.6 217.6-211.2 217.6zM806.4 211.2h-588.8c-83.2 0-153.6 70.4-153.6 153.6s70.4 153.6 153.6 153.6h64v64c0 128 102.4 230.4 230.4 230.4s230.4-102.4 230.4-230.4v-64h64c83.2 0 153.6-70.4 153.6-153.6s-70.4-153.6-153.6-153.6z" />
<glyph unicode="&#xe953;" glyph-name="cloud-upload-l" d="M800 608c-12.8 147.2-140.8 256-288 256s-268.8-115.2-288-256c-108.8-12.8-192-108.8-192-224 0-121.6 102.4-224 224-224h512c121.6 0 224 102.4 224 224 0 115.2-83.2 204.8-192 224zM768 224h-224v275.2l134.4-134.4 44.8 44.8-211.2 211.2-217.6-211.2 44.8-44.8 134.4 134.4v-275.2h-217.6c-89.6 0-160 70.4-160 160s70.4 160 160 160h32v32c0 121.6 102.4 224 224 224s224-102.4 224-224v-32h32c89.6 0 160-70.4 160-160s-70.4-160-160-160z" />
<glyph unicode="&#xe954;" glyph-name="code-branch" d="M832 640c0 70.4-57.6 128-128 128s-128-57.6-128-128c0-44.8 25.6-83.2 57.6-108.8-19.2-57.6-64-108.8-134.4-121.6-44.8 0-83.2-19.2-115.2-38.4v288c38.4 19.2 64 64 64 108.8 0 70.4-57.6 128-128 128s-128-57.6-128-128c0-44.8 25.6-89.6 64-108.8v-422.4c-38.4-19.2-64-64-64-108.8 0-70.4 57.6-128 128-128s128 57.6 128 128c0 32-12.8 64-38.4 89.6 25.6 38.4 64 64 115.2 70.4 121.6 19.2 217.6 115.2 236.8 236.8 44.8 25.6 70.4 64 70.4 115.2zM320 832c38.4 0 64-25.6 64-64s-25.6-64-64-64-64 25.6-64 64 25.6 64 64 64zM320 64c-38.4 0-64 25.6-64 64s25.6 64 64 64 64-25.6 64-64-25.6-64-64-64zM704 576c-38.4 0-64 25.6-64 64s25.6 64 64 64 64-25.6 64-64-25.6-64-64-64z" />
<glyph unicode="&#xe955;" glyph-name="code-file" d="M448 896l-256-256h256zM512 896v-320h-320v-576h704v896h-384zM614.4 486.4l44.8 44.8 128-128-121.6-128-51.2 44.8 89.6 83.2-89.6 83.2zM467.2 486.4l-83.2-83.2 89.6-83.2-51.2-44.8-128 128 128 128 44.8-44.8z" />
<glyph unicode="&#xe956;" glyph-name="code-file-l" d="M422.4 537.6l-128-134.4 128-128 51.2 44.8-89.6 83.2 89.6 83.2-51.2 51.2zM665.6 537.6l-51.2-51.2 89.6-83.2-89.6-83.2 51.2-44.8 128 128-128 134.4zM896 896h-448l-256-256v-640h704v896zM256 64v512h256v256h320v-768h-576zM281.6 640l166.4 166.4v-166.4h-166.4z" />
<glyph unicode="&#xe957;" glyph-name="code-fork" d="M832 768c0 70.4-57.6 128-128 128s-128-57.6-128-128c0-44.8 25.6-89.6 64-108.8v-57.6l-128-128-128 128v57.6c38.4 19.2 64 64 64 108.8 0 70.4-57.6 128-128 128s-128-57.6-128-128c0-44.8 25.6-89.6 64-108.8v-108.8l192-192v-115.2c-38.4-19.2-70.4-64-70.4-115.2 0-70.4 57.6-128 128-128s128 57.6 128 128c0 44.8-25.6 83.2-57.6 108.8v121.6l192 192v108.8c38.4 19.2 64 64 64 108.8zM320 832c38.4 0 64-25.6 64-64s-25.6-64-64-64-64 25.6-64 64 25.6 64 64 64zM505.6 64c-38.4 0-64 25.6-64 64s25.6 64 64 64 64-25.6 64-64-25.6-64-64-64zM704 704c-38.4 0-64 25.6-64 64s25.6 64 64 64 64-25.6 64-64-25.6-64-64-64z" />
<glyph unicode="&#xe958;" glyph-name="code-l" d="M256 672l-243.2-243.2 204.8-211.2 44.8 44.8-160 166.4 198.4 198.4zM768 672l-44.8-44.8 198.4-198.4-160-166.4 44.8-44.8 211.2 211.2zM333.875 338.312l294.154 294.154 45.254-45.254-294.154-294.154-45.254 45.254z" />
<glyph unicode="&#xe959;" glyph-name="coin" d="M512 896c-249.6 0-448-198.4-448-448s198.4-448 448-448 448 198.4 448 448c0 249.6-198.4 448-448 448zM672 454.4h-128v-64h128v-64h-128v-128h-64v128h-128v64h128v64h-128v64h115.2l-108.8 108.8 44.8 44.8 108.8-108.8 102.4 102.4 44.8-44.8-102.4-102.4h115.2v-64z" />
<glyph unicode="&#xe95a;" glyph-name="coin-l" d="M512 896c-249.6 0-448-198.4-448-448s198.4-448 448-448 448 198.4 448 448c0 249.6-198.4 448-448 448zM512 64c-211.2 0-384 172.8-384 384s172.8 384 384 384 384-172.8 384-384-172.8-384-384-384zM665.6 627.2l-51.2 44.8-102.4-108.8-102.4 108.8-51.2-44.8 108.8-108.8h-115.2v-64h128v-64h-128v-64h128v-128h64v128h128v64h-128v64h128v64h-115.2z" />
<glyph unicode="&#xe95b;" glyph-name="collection" d="M64 832h896v-512h-896v512zM128 384h768v384h-768v-384zM192 128h640v-64h-640v64zM128 256h768v-64h-768v64zM192 576h128v-192h-128v192zM448 704h128v-320h-128v320zM704 512h128v-128h-128v128z" />
<glyph unicode="&#xe95c;" glyph-name="come-l" d="M448 832v-64h320v-640h-320v-64h384v768zM473.6 230.4l211.2 217.6-211.2 217.6-51.2-51.2 140.8-134.4h-435.2v-64h435.2l-140.8-134.4z" />
<glyph unicode="&#xe95d;" glyph-name="command" d="M64 832v-704h896v704h-896zM512 448h-64v-64h-64v-64h-64v64h64v64h64v64h-64v64h-64v64h64v-64h64v-64h64v-64zM768 320h-192v64h192v-64z" />
<glyph unicode="&#xe95e;" glyph-name="command-l" d="M64 832v-704h896v704h-896zM896 192h-768v576h768v-576zM320 640h64v-64h-64v64zM320 384h64v-64h-64v64zM384 576h64v-64h-64v64zM384 448h64v-64h-64v64zM448 512h64v-64h-64v64zM576 384h192v-64h-192v64z" />
<glyph unicode="&#xe95f;" glyph-name="commed2" d="M64 896v-192h960v192h-960zM704 768h-64v64h64v-64zM832 768h-64v64h64v-64zM960 768h-64v64h64v-64zM64 0h960v640h-960v-640zM614.4 224l160 275.2 57.6-32-160-275.2-57.6 32zM544 275.2c19.2 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 12.8 32 32 32zM544 339.2c-19.2 0-32 19.2-32 32s12.8 32 32 32 32-12.8 32-32-12.8-32-32-32zM422.4 384c-6.4 12.8-6.4 19.2-12.8 25.6-6.4 12.8-25.6 12.8-38.4 12.8-19.2 0-32-6.4-44.8-25.6-12.8-12.8-19.2-38.4-19.2-64s6.4-44.8 19.2-64c12.8-6.4 25.6-12.8 44.8-12.8s32 6.4 38.4 19.2c6.4 6.4 6.4 12.8 12.8 25.6h51.2c-6.4-25.6-12.8-51.2-32-64s-44.8-25.6-70.4-25.6c-32 0-64 12.8-83.2 32-19.2 25.6-32 57.6-32 96 0 44.8 12.8 76.8 32 102.4 19.2 19.2 44.8 32 76.8 32 38.4 0 70.4-12.8 89.6-38.4 12.8-19.2 19.2-38.4 19.2-51.2h-51.2z" />
<glyph unicode="&#xe960;" glyph-name="commed2-l" d="M64 896v-896h960v896h-960zM960 64h-832v576h832v-576zM960 704h-64v64h-64v-64h-64v64h-64v-64h-64v64h-64v-64h-448v128h832v-128zM371.2 211.2c25.6 0 51.2 6.4 70.4 25.6s32 38.4 32 64h-51.2c-6.4-12.8-6.4-19.2-12.8-25.6-6.4-12.8-25.6-19.2-38.4-19.2-19.2 0-32 6.4-44.8 19.2s-19.2 32-19.2 64 6.4 51.2 19.2 64c12.8 12.8 25.6 25.6 44.8 25.6s32-6.4 38.4-12.8c6.4-12.8 6.4-19.2 12.8-32h51.2c0 12.8-6.4 32-19.2 44.8-19.2 25.6-44.8 38.4-89.6 38.4-32 0-57.6-12.8-76.8-32s-32-51.2-32-96c0-38.4 12.8-70.4 32-96 19.2-19.2 44.8-32 83.2-32zM576 371.2c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM576 243.2c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM621.536 225.53l160 277.12 55.424-32-160-277.12-55.424 32z" />
<glyph unicode="&#xe961;" glyph-name="comment" d="M697.6 883.2h-352c-172.8 0-326.4-128-339.2-294.4-19.2-198.4 134.4-358.4 326.4-358.4h179.2v-217.6l313.6 211.2c102.4 64 172.8 166.4 192 288 6.4 6.4 6.4 25.6 6.4 38.4 0 185.6-147.2 332.8-326.4 332.8z" />
<glyph unicode="&#xe962;" glyph-name="comment-l" d="M697.6 883.2h-352c-172.8 0-326.4-128-339.2-294.4-19.2-198.4 134.4-358.4 326.4-358.4h179.2v-217.6l313.6 211.2c102.4 64 172.8 166.4 192 288 6.4 6.4 6.4 25.6 6.4 38.4 0 185.6-147.2 332.8-326.4 332.8zM953.6 512c-19.2-96-76.8-185.6-166.4-243.2l-211.2-140.8v160h-249.6c-70.4 0-140.8 32-192 89.6-51.2 51.2-76.8 128-70.4 204.8 12.8 134.4 134.4 236.8 275.2 236.8h352c147.2 0 262.4-121.6 262.4-262.4 6.4-12.8 6.4-25.6 0-44.8z" />
<glyph unicode="&#xe963;" glyph-name="computer" d="M1024 128v704h-960v-704h448v-64h-192v-64h448v64h-192v64h448zM128 192v64h832v-64h-832z" />
<glyph unicode="&#xe964;" glyph-name="computer-l" d="M1024 128v704h-960v-704h448v-64h-192v-64h448v64h-192v64h448zM128 768h832v-448h-832v448zM128 192v64h832v-64h-832z" />
<glyph unicode="&#xe965;" glyph-name="configuration" d="M384 896l-256-256h256zM576 390.4v57.6h-51.2l-19.2 19.2-25.6 19.2-38.4-38.4h-57.6v-57.6l-38.4-38.4 38.4-38.4v-57.6h57.6l38.4-38.4 19.2 19.2 25.6 19.2h51.2v57.6l38.4 38.4-38.4 38.4zM480 320c-12.8 0-32 12.8-32 32s19.2 32 32 32 32-12.8 32-32c0-19.2-12.8-32-32-32zM448 896v-320h-320v-576h704v896h-384zM640 288v-96h-89.6l-64-64-64 64h-102.4v96l-64 64 64 64v96h96l64 64 64-64h96v-96l64-64-64-64z" />
<glyph unicode="&#xe966;" glyph-name="configuration-l" d="M448 896l-256-256v-640h704v896h-448zM448 806.4v-166.4h-166.4l166.4 166.4zM832 64h-576v512h256v256h320v-768zM384 512v-96l-64-64 64-64v-96h96l64-64 64 64h96v96l64 64-64 64v96h-96l-64 64-64-64h-96zM524.8 467.2l19.2 19.2 38.4-38.4h57.6v-57.6l38.4-38.4-38.4-38.4v-57.6h-57.6l-38.4-38.4-38.4 38.4h-57.6v57.6l-38.4 38.4 38.4 38.4v57.6h57.6l19.2 19.2zM576 352c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32z" />
<glyph unicode="&#xe967;" glyph-name="container" d="M512 960l-448-256v-512l448-256 448 256v512l-448 256zM256 563.2l224-134.4v-256l-224 128v262.4zM294.4 614.4l217.6 128 217.6-121.6-217.6-134.4-217.6 128zM768 563.2v-262.4l-224-128v256l224 134.4z" />
<glyph unicode="&#xe968;" glyph-name="container-l" d="M512 960l-441.6-256v-512l441.6-256 441.6 256v512l-441.6 256zM896 230.4l-384-224-377.6 217.6v441.6l377.6 224 384-224v-435.2zM236.8 652.8l-38.4-19.2v-364.8l313.6-185.6 313.6 185.6v364.8l-38.4 19.2-275.2 160-275.2-160zM480 172.8l-217.6 128v262.4l217.6-134.4v-256zM768 300.8l-224-128v256l224 134.4v-262.4zM512 486.4l-217.6 128 217.6 128 217.6-121.6-217.6-134.4z" />
<glyph unicode="&#xe969;" glyph-name="control" d="M960 576v192h-384v-64h-256v64h-192v-192h192v64h64v-512h192v-64h384v192h-384v-64h-128v192h128v-64h384v192h-384v-64h-128v192h128v-64h384zM640 704h256v-64h-256v64zM640 192h256v-64h-256v64zM640 448h256v-64h-256v64z" />
<glyph unicode="&#xe96a;" glyph-name="control-rank" d="M896 384v192h-320v64h64v192h-192v-192h64v-64h-320v-192h-64v-320h192v320h-64v128h256v-128h-64v-320h192v320h-64v128h256v-128h-64v-320h192v320h-64zM256 128h-64v192h64v-192zM576 128h-64v192h64v-192zM896 128h-64v192h64v-192z" />
<glyph unicode="&#xe96b;" glyph-name="credit-card" d="M64 832v-704h896v704h-896zM896 512h-768v128h768v-128z" />
<glyph unicode="&#xe96c;" glyph-name="credit-card-l" d="M64 832v-704h896v704h-896zM896 192h-768v320h768v-320zM896 640h-768v128h768v-128z" />
<glyph unicode="&#xe96d;" glyph-name="crown" d="M128 192h768v-128h-768v128zM512 768l-192-256-192 128v-384h768v384l-192-128zM128 768h64v-64h-64v64zM832 768h64v-64h-64v64zM480 896h64v-64h-64v64z" />
<glyph unicode="&#xe96e;" glyph-name="crown-l" d="M512 768l-192-256-192 128v-576h768v576l-192-128-192 256zM832 128h-640v64h640v-64zM832 518.4v-262.4h-640v262.4l89.6-64 51.2-32 38.4 51.2 140.8 185.6 140.8-185.6 38.4-51.2 51.2 32 89.6 64zM128 768h64v-64h-64v64zM832 768h64v-64h-64v64zM480 896h64v-64h-64v64z" />
<glyph unicode="&#xe96f;" glyph-name="css3" d="M1024 902.4l-153.6-774.4-467.2-153.6-403.2 153.6 38.4 204.8h172.8l-19.2-83.2 243.2-96 281.6 96 44.8 198.4h-697.6l32 172.8h697.6l19.2 108.8h-697.6l32 172.8h876.8z" />
<glyph unicode="&#xe970;" glyph-name="cube" d="M480 896l-384-224 384-224 384 224-384 224zM512 512h-64v64h64v-64zM512 640h-64v64h64v-64zM448 768v64h64v-64h-64zM64 172.8l384-224v448l-384 224v-448zM384 396.8l32-57.6-57.6-32-32 57.6 57.6 32zM268.8 332.8l32-57.6-57.6-32-32 57.6 57.6 32zM160 268.8l32-57.6-57.6-32-32 57.6 57.6 32zM512 396.8v-441.6l384 224v441.6l-384-224zM601.6 307.2l-51.2 32 32 57.6 57.6-32-38.4-57.6zM716.8 243.2l-57.6 32 32 57.6 57.6-32-32-57.6zM825.6 179.2l-57.6 32 32 57.6 57.6-32-32-57.6zM480 819.2l352-198.4v-403.2l-352-204.8-352 198.4v409.6l352 198.4zM480 896l-416-243.2v-480l416-236.8 416 236.8v480l-416 243.2z" />
<glyph unicode="&#xe971;" glyph-name="cube-l" d="M480 896l-416-236.8v-480l416-243.2 416 236.8v486.4l-416 236.8zM800 268.8l-32-57.6 32-19.2-288-160v358.4l320 185.6v-326.4l-32 19.2zM512 768v38.4l294.4-172.8-326.4-185.6-326.4 185.6 294.4 172.8v-38.4h64zM448 390.4v-364.8l-288 166.4 32 19.2-32 57.6-32-19.2v326.4l320-185.6zM448 704h64v-64h-64v64zM448 576h64v-64h-64v64zM212.192 298.157l55.424 32 32-55.424-55.424-32-32 55.424zM326.81 364.326l55.424 32 32-55.424-55.424-32-32 55.424zM658.573 277.306l32 55.424 55.424-32-32-55.424-55.424 32zM545.549 337.542l32 55.424 55.424-32-32-55.424-55.424 32z" />
<glyph unicode="&#xe972;" glyph-name="cup" d="M0 128h832v-64h-832v64zM864 704h-96v64h-704v-512c0-38.4 25.6-64 64-64h576c38.4 0 64 25.6 64 64v128h96c89.6 0 160 70.4 160 160s-70.4 160-160 160zM192 384h-64v320h64v-320zM864 448h-96v192h96c51.2 0 96-44.8 96-96s-44.8-96-96-96z" />
<glyph unicode="&#xe973;" glyph-name="cup-l" d="M864 704h-96v64h-704v-512c0-38.4 25.6-64 64-64h576c38.4 0 64 25.6 64 64v128h96c89.6 0 160 70.4 160 160s-70.4 160-160 160zM704 256h-576v448h576v-448zM864 448h-96v192h96c51.2 0 96-44.8 96-96s-44.8-96-96-96zM0 128h832v-64h-832v64z" />
<glyph unicode="&#xe974;" glyph-name="dashboard" d="M512 832c-249.6 0-448-198.4-448-448 0-70.4 12.8-134.4 44.8-192h806.4c25.6 57.6 44.8 121.6 44.8 192 0 249.6-198.4 448-448 448zM768 352v64h64v-64h-64zM716.8 544l-44.8 44.8 44.8 44.8 44.8-44.8-44.8-44.8zM256 416v-64h-64v64h64zM307.2 544l-44.8 44.8 44.8 44.8 44.8-44.8-44.8-44.8zM480 640v64h64v-64h-64zM448 256l64 320 64-320h-128z" />
<glyph unicode="&#xe975;" glyph-name="dashboard-l" d="M480 704h64v-64h-64v64zM768 416h64v-64h-64v64zM192 416h64v-64h-64v64zM260.964 588.8l45.254 45.254 45.254-45.254-45.254-45.254-45.254 45.254zM671.533 589.775l45.254 45.254 45.254-45.254-45.254-45.254-45.254 45.254zM512 832c-249.6 0-448-198.4-448-448 0-70.4 12.8-134.4 44.8-192h806.4c25.6 57.6 44.8 121.6 44.8 192 0 249.6-198.4 448-448 448zM876.8 256h-300.8l-64 320-64-320h-300.8c-12.8 38.4-19.2 83.2-19.2 128 0 211.2 172.8 384 384 384s384-172.8 384-384c0-44.8-6.4-89.6-19.2-128z" />
<glyph unicode="&#xe976;" glyph-name="database" d="M832 576v256h-704v-256h64v-64h-64v-192h64v-64h-64v-256h704v256h-64v64h64v192h-64v64h64zM320 256h-64v64h64v-64zM320 512h-64v64h64v-64zM448 256h-64v64h64v-64zM448 512h-64v64h64v-64zM576 256h-64v64h64v-64zM576 512h-64v64h64v-64zM704 128h-64v64h64v-64zM704 256h-64v64h64v-64zM704 384h-64v64h64v-64zM704 512h-64v64h64v-64zM704 640h-64v64h64v-64z" />
<glyph unicode="&#xe977;" glyph-name="database-l" d="M640 704h64v-64h-64v64zM640 448h64v-64h-64v64zM640 192h64v-64h-64v64zM192 576h64v-64h-64v64zM192 320h64v-64h-64v64zM704 320h64v-64h-64v64zM768 768v-192h64v256h-704v-256h64v192zM768 512h64v-192h-64v192zM128 512h64v-192h-64v192zM448 576h64v-64h-64v64zM192 64v192h-64v-256h704v256h-64v-192zM576 576h64v-64h-64v64zM320 576h64v-64h-64v64zM576 320h64v-64h-64v64zM704 576h64v-64h-64v64zM448 320h64v-64h-64v64zM320 320h64v-64h-64v64z" />
<glyph unicode="&#xe978;" glyph-name="dev-board" d="M832 320h192v-128h-192v128zM896 640h128v-64h-128v64zM256 512h64v-64h-64v64zM448 192h64v-192h-64v192zM256 192h128v-192h-128v192zM768 384h192v128h-128v192h128v64h-960v-704h192v192h384v-192h384v64h-192v256zM128 192h-64v64h64v-64zM128 640h-64v64h64v-64zM192 704h64v-64h-64v64zM384 384h-192v192h192v-192zM384 640h-64v64h64v-64zM448 704h64v-64h-64v64zM576 512h-128v64h128v-64zM704 192h-64v64h64v-64zM704 640h-64v64h64v-64z" />
<glyph unicode="&#xe979;" glyph-name="dev-board-l" d="M1024 512v64h-64v192h-960v-704h256v-64h192v64h64v-64h64v64h384v128h64v192h-64v128h64zM320 64v128h64v-128h-64zM960 256h-128v64h128v-64zM896 384h-128v-192h128v-64h-320v128h-64v-128h-64v128h-192v-128h-192v576h832v-128h-64v-64h64v-128zM256 320h192v192h-192v-192zM320 448h64v-64h-64v64zM512 512h128v-64h-128v64zM128 640h64v-64h-64v64zM256 640h64v-64h-64v64zM384 640h64v-64h-64v64zM512 640h64v-64h-64v64zM128 256h64v-64h-64v64zM640 640h64v-64h-64v64zM640 256h64v-64h-64v64z" />
<glyph unicode="&#xe97a;" glyph-name="d-glasses" d="M192 256h192l64 128h-256zM640 256h192v128h-256zM704 832v-256h64v70.4l108.8-134.4h-729.6l108.8 134.4v-70.4h64v256l-256-320v-384h320l128 128 128-128h320v384l-256 320zM896 192h-230.4l-153.6 153.6-153.6-153.6h-230.4v256h768v-256z" />
<glyph unicode="&#xe97b;" glyph-name="diamond" d="M352 576h320l-160 211.2zM512 179.2l172.8 332.8h-345.6zM51.2 512l416-416 6.4 12.8-204.8 403.2zM275.2 576l166.4 224h-166.4l-224-224zM748.8 576h224l-224 224h-166.4zM755.2 512l-204.8-403.2 6.4-12.8 416 416z" />
<glyph unicode="&#xe97c;" glyph-name="diamond-l" d="M748.8 800h-473.6l-256-256 492.8-492.8 492.8 492.8-256 256zM268.8 512l128-256-256 256h128zM512 512h172.8l-172.8-345.6-172.8 345.6h172.8zM352 576l121.6 160h76.8l121.6-160h-320zM755.2 512h128l-256-256 128 256zM883.2 576h-128l-121.6 160h89.6l160-160zM300.8 736h89.6l-115.2-160h-128l153.6 160z" />
<glyph unicode="&#xe97d;" glyph-name="doc-edit" d="M384 896l-256-256h256zM448 896v-320h-320v-576h704v896h-384zM416 128h-160v160l294.4 288 153.6-153.6-288-294.4zM313.6 262.4v-76.8h76.8l198.4 192-83.2 76.8z" />
<glyph unicode="&#xe97e;" glyph-name="doc-edit-l" d="M384 896l-256-256v-640h704v896h-448zM384 806.4v-166.4h-166.4l166.4 166.4zM768 64h-576v512h256v256h320v-768zM256 128h160l288 294.4-153.6 153.6-294.4-288v-160zM313.6 262.4l198.4 192 76.8-76.8-198.4-198.4h-76.8v83.2z" />
<glyph unicode="&#xe97f;" glyph-name="doc-file" d="M448 896l-256-256h256zM512 896v-320h-320v-576h704v896h-384zM320 448v64h448v-64h-448zM768 384v-64h-448v64h448zM320 256h448v-64h-448v64z" />
<glyph unicode="&#xe980;" glyph-name="doc-file-l" d="M448 896l-256-256v-640h704v896h-448zM448 806.4v-166.4h-166.4l166.4 166.4zM832 64h-576v512h256v256h320v-768zM320 512h448v-64h-448v64zM320 384h448v-64h-448v64zM320 256h448v-64h-448v64z" />
<glyph unicode="&#xe981;" glyph-name="download-l" d="M832 512v-320h-640v320h-64v-384h768v384zM729.6 486.4l-51.2 51.2-134.4-140.8v435.2h-64v-435.2l-134.4 140.8-51.2-51.2 217.6-211.2z" />
<glyph unicode="&#xe982;" glyph-name="dribbble" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM966.4 441.6c-128 25.6-236.8 25.6-326.4 6.4-19.2 38.4-38.4 76.8-57.6 115.2 102.4 38.4 198.4 96 275.2 179.2 64-76.8 108.8-179.2 108.8-294.4 0 0 0-6.4 0-6.4zM812.8 780.8c-70.4-76.8-160-128-256-166.4-44.8 89.6-102.4 179.2-172.8 268.8 44.8 12.8 83.2 19.2 128 19.2 115.2 0 224-44.8 300.8-121.6zM326.4 857.6c70.4-83.2 121.6-172.8 172.8-262.4-179.2-57.6-358.4-64-428.8-64 25.6 147.2 128 268.8 256 326.4zM57.6 448c0 6.4 0 19.2 0 25.6 6.4 0 6.4 0 12.8 0 76.8 0 262.4 6.4 448 64 25.6-32 38.4-70.4 57.6-108.8-217.6-64-345.6-224-390.4-288-76.8 83.2-128 185.6-128 307.2zM224 96c38.4 51.2 153.6 211.2 371.2 275.2 57.6-153.6 83.2-288 96-339.2-57.6-25.6-115.2-38.4-179.2-38.4-108.8 0-204.8 38.4-288 102.4zM748.8 64c-12.8 64-38.4 185.6-89.6 326.4 89.6 19.2 185.6 19.2 300.8-6.4-25.6-140.8-102.4-256-211.2-320z" />
<glyph unicode="&#xe983;" glyph-name="dropbox" d="M0 384l300.8-198.4 211.2 179.2-300.8 185.6-211.2-166.4zM300.8 915.2l-300.8-198.4 211.2-166.4 300.8 185.6-211.2 179.2zM1024 716.8l-300.8 198.4-211.2-179.2 300.8-185.6 211.2 166.4zM512 364.8l211.2-172.8 300.8 192-211.2 166.4-300.8-185.6zM512 326.4l-211.2-172.8-89.6 57.6v-64l300.8-185.6 300.8 179.2v64l-89.6-57.6-211.2 179.2z" />
<glyph unicode="&#xe984;" glyph-name="earth" d="M646.4 19.2c0 0 0 0 0 0 19.2 6.4 38.4 12.8 57.6 25.6 0 0 6.4 0 6.4 0 147.2 76.8 249.6 230.4 249.6 403.2 0 102.4-32 198.4-96 275.2 0 0 0 0 0 0-25.6 32-51.2 57.6-76.8 76.8 0 0 0 0-6.4 0-12.8 12.8-25.6 25.6-38.4 32 0 0-6.4 0-6.4 6.4-32 19.2-64 32-96 44.8-6.4 0-6.4 0-12.8 6.4-19.2-6.4-32 0-44.8 0-6.4 0-12.8 0-12.8 0-19.2 6.4-38.4 6.4-57.6 6.4-44.8 0-89.6-6.4-134.4-19.2v0 0c-19.2-6.4-44.8-19.2-64-25.6 0 0-6.4 0-6.4-6.4-19.2-6.4-38.4-19.2-51.2-32 0 0-6.4-6.4-6.4-6.4-19.2-12.8-32-25.6-51.2-38.4 0 0 0 0 0 0-12.8-12.8-32-32-44.8-51.2 0 0-6.4-6.4-6.4-12.8-12.8-12.8-19.2-25.6-32-44.8 0 0 0-6.4 0-6.4-12.8-19.2-19.2-38.4-25.6-57.6 0-6.4 0-6.4-6.4-12.8 0-12.8-6.4-32-12.8-57.6 0-6.4 0-6.4 0-12.8-6.4-19.2-6.4-38.4-6.4-64 0-243.2 192-441.6 435.2-448v0c6.4 0 6.4 0 12.8 0 19.2 0 44.8 0 64 6.4 6.4 0 6.4 0 12.8 0 19.2 6.4 38.4 6.4 57.6 12.8zM512 64c-192 0-345.6 140.8-377.6 320h57.6l64 128h64l128 256-32 51.2c32 6.4 64 12.8 96 12.8v-96l-64-140.8 64-147.2h128v76.8l204.8 115.2c32-57.6 51.2-121.6 51.2-192 0-64-12.8-121.6-44.8-179.2l-147.2 51.2-64 64h-128l64-192-51.2-128c-6.4 0-6.4 0-12.8 0z" />
<glyph unicode="&#xe985;" glyph-name="earth-l" d="M646.4 19.2c0 0 0 0 0 0 19.2 6.4 38.4 12.8 57.6 25.6 0 0 6.4 0 6.4 0 147.2 76.8 249.6 230.4 249.6 403.2 0 102.4-32 198.4-96 275.2 0 0 0 0 0 0-25.6 32-51.2 57.6-76.8 76.8 0 0 0 0-6.4 0-12.8 12.8-25.6 25.6-38.4 32 0 0-6.4 0-6.4 6.4-32 19.2-64 32-96 44.8-6.4 0-6.4 0-12.8 6.4-19.2-6.4-32 0-44.8 0-6.4 0-12.8 0-12.8 0-19.2 6.4-38.4 6.4-57.6 6.4-44.8 0-89.6-6.4-134.4-19.2v0 0c-19.2-6.4-44.8-19.2-64-25.6 0 0-6.4 0-6.4-6.4-19.2-6.4-38.4-19.2-51.2-32 0 0-6.4-6.4-6.4-6.4-19.2-12.8-32-25.6-51.2-38.4 0 0 0 0 0 0-12.8-12.8-32-32-44.8-51.2 0 0-6.4-6.4-6.4-12.8-12.8-12.8-19.2-25.6-32-44.8 0 0 0-6.4 0-6.4-12.8-19.2-19.2-38.4-25.6-57.6 0-6.4 0-6.4-6.4-12.8 0-12.8-6.4-32-12.8-57.6 0-6.4 0-6.4 0-12.8-6.4-19.2-6.4-38.4-6.4-64 0-243.2 192-441.6 435.2-448v0c6.4 0 6.4 0 12.8 0 19.2 0 44.8 0 64 6.4 6.4 0 6.4 0 12.8 0 19.2 6.4 38.4 6.4 57.6 12.8zM627.2 230.4l-64 89.6h44.8l64-64h32v-140.8c0 0 0 0 0 0-12.8-6.4-32-19.2-44.8-25.6 0 0-6.4 0-6.4 0-12.8-6.4-32-12.8-51.2-12.8 0 0 0 0 0 0l51.2 128-25.6 25.6zM582.4 499.2v0l-25.6 6.4-38.4 89.6 51.2 115.2 6.4 12.8v102.4c0 0 0 0 0 0 19.2-6.4 44.8-6.4 64-19.2 0 0 0 0 0 0 64-25.6 121.6-64 166.4-115.2l-198.4-108.8-51.2-32 25.6-51.2zM371.2 761.6l-89.6-185.6h-64l-64-128h-25.6c0 19.2 0 32 6.4 51.2 0 6.4 0 12.8 0 12.8 0 12.8 6.4 25.6 6.4 38.4 0 6.4 0 6.4 6.4 12.8 0 12.8 6.4 25.6 12.8 38.4 0 6.4 6.4 12.8 6.4 19.2 6.4 6.4 12.8 12.8 12.8 19.2 6.4 12.8 12.8 25.6 25.6 38.4 6.4 6.4 6.4 12.8 12.8 12.8 6.4 6.4 12.8 12.8 19.2 19.2s6.4 6.4 12.8 12.8 12.8 12.8 19.2 19.2c6.4 6.4 19.2 19.2 32 25.6 0 0 6.4 6.4 12.8 6.4 6.4 6.4 19.2 12.8 32 12.8 0 0 6.4 0 6.4 6.4l19.2-32zM512 64c-192 0-345.6 140.8-377.6 320h57.6l64 128h64l128 256-32 51.2c32 6.4 64 12.8 96 12.8v-96l-64-140.8 64-140.8 192-70.4-64 140.8 204.8 115.2c32-57.6 51.2-121.6 51.2-192 0-115.2-51.2-217.6-128-288v160h-64l-64 64h-192l128-192-51.2-128c-6.4 0-6.4 0-12.8 0z" />
<glyph unicode="&#xe986;" glyph-name="education" d="M256 475.52v-256l256-91.52 256 91.52v256l-256-91.52zM960 608l-448 160-448-160 64-23.040v-264.96h64v242.56l320-114.56z" />
<glyph unicode="&#xe987;" glyph-name="education-l" d="M704 264.32l-192-68.48-192 68.48v188.16l-64 23.040v-256l256-91.52 256 91.52v256l-64-23.040zM960 608l-448 160-448-160 64-23.040v-264.96h64v242.56l320-114.56 448 160zM512 700.16l257.92-92.16-257.92-92.16-257.92 92.16 257.92 92.16z" />
<glyph unicode="&#xe988;" glyph-name="eye" d="M512 531.2c-44.8 0-83.2-38.4-83.2-83.2s38.4-83.2 83.2-83.2 83.2 38.4 83.2 83.2-38.4 83.2-83.2 83.2zM512 812.8c-236.8 0-435.2-153.6-512-364.8 76.8-211.2 275.2-364.8 512-364.8s435.2 153.6 512 364.8c-76.8 211.2-275.2 364.8-512 364.8zM512 300.8c-83.2 0-147.2 64-147.2 147.2s64 147.2 147.2 147.2 147.2-64 147.2-147.2-64-147.2-147.2-147.2z" />
<glyph unicode="&#xe989;" glyph-name="eye-l" d="M512 595.2c-83.2 0-147.2-64-147.2-147.2s64-147.2 147.2-147.2 147.2 64 147.2 147.2c0 83.2-64 147.2-147.2 147.2zM512 364.8c-44.8 0-83.2 38.4-83.2 83.2s38.4 83.2 83.2 83.2 83.2-38.4 83.2-83.2c0-44.8-38.4-83.2-83.2-83.2zM512 812.8c-236.8 0-435.2-153.6-512-364.8 76.8-211.2 275.2-364.8 512-364.8s435.2 153.6 512 364.8c-76.8 211.2-275.2 364.8-512 364.8zM512 147.2c-192 0-371.2 121.6-441.6 300.8 70.4 179.2 249.6 300.8 441.6 300.8s371.2-121.6 441.6-300.8c-70.4-179.2-249.6-300.8-441.6-300.8z" />
<glyph unicode="&#xe98a;" glyph-name="face" d="M512 896c-249.6 0-448-198.4-448-448s198.4-448 448-448 448 198.4 448 448c0 249.6-198.4 448-448 448zM256 512c0 38.4 25.6 64 64 64s64-25.6 64-64c0-38.4-25.6-64-64-64s-64 25.6-64 64zM512 179.2c-89.6 0-172.8 51.2-217.6 128l57.6 32c32-64 89.6-96 160-96s128 38.4 166.4 96l57.6-32c-51.2-83.2-134.4-128-224-128zM704 448c-38.4 0-64 25.6-64 64s25.6 64 64 64 64-25.6 64-64c0-38.4-25.6-64-64-64z" />
<glyph unicode="&#xe98b;" glyph-name="facebook" d="M748.8 627.2l-19.2-179.2h-140.8v-512h-211.2v512h-102.4v179.2h102.4v102.4c0 147.2 64 230.4 230.4 230.4h140.8v-179.2h-89.6c-64 0-70.4-25.6-70.4-70.4v-89.6l160 6.4z" />
<glyph unicode="&#xe98c;" glyph-name="face-l" d="M512 896c-249.6 0-448-198.4-448-448s198.4-448 448-448c249.6 0 448 198.4 448 448s-198.4 448-448 448zM512 64c-211.2 0-384 172.8-384 384s172.8 384 384 384c211.2 0 384-172.8 384-384s-172.8-384-384-384zM512 243.2c-70.4 0-128 38.4-166.4 96l-57.6-32c44.8-76.8 128-128 217.6-128s172.8 51.2 217.6 128l-57.6 32c-25.6-64-83.2-96-153.6-96zM384 512c0 38.4-25.6 64-64 64s-64-25.6-64-64 25.6-64 64-64c38.4 0 64 25.6 64 64zM704 576c-38.4 0-64-25.6-64-64s25.6-64 64-64c38.4 0 64 25.6 64 64s-25.6 64-64 64z" />
<glyph unicode="&#xe98d;" glyph-name="file" d="M448 896l-256-256h256zM512 896v-320h-320v-576h704v896z" />
<glyph unicode="&#xe98e;" glyph-name="file-l" d="M768 896h-345.6l-294.4-294.4v-601.6h704v896h-64zM448 832v-256h-256l256 256zM768 64h-576v448h320v320h256v-768z" />
<glyph unicode="&#xe98f;" glyph-name="film" d="M128 896v-960h768v960h-768zM448 320v256l192-128-192-128zM768 640v-64h-64v64h64zM704 704v64h64v-64h-64zM768 512v-64h-64v64h64zM768 384v-64h-64v64h64zM768 256v-64h-64v64h64zM768 128v-64h-64v64h64zM320 640v-64h-64v64h64zM256 704v64h64v-64h-64zM320 512v-64h-64v64h64zM320 384v-64h-64v64h64zM320 256v-64h-64v64h64zM320 128v-64h-64v64h64z" />
<glyph unicode="&#xe990;" glyph-name="film-l" d="M416 633.6v-377.6l281.6 192-281.6 185.6zM480 377.6v140.8l102.4-70.4-102.4-70.4zM896 896h-768v-960h768v960zM192 0v832h640v-832h-640zM320 768h-64v-64h64v64zM320 640h-64v-64h64v64zM320 512h-64v-64h64v64zM320 384h-64v-64h64v64zM320 256h-64v-64h64v64zM320 128h-64v-64h64v64zM768 768h-64v-64h64v64zM768 640h-64v-64h64v64zM768 512h-64v-64h64v64zM768 384h-64v-64h64v64zM768 256h-64v-64h64v64zM768 128h-64v-64h64v64z" />
<glyph unicode="&#xe991;" glyph-name="fingerprint" d="M736 960h-448c-160 0-288-128-288-288v-448c0-160 128-288 288-288h448c160 0 288 128 288 288v448c0 160-128 288-288 288zM339.2 729.6c6.4 6.4 12.8 6.4 19.2 6.4s19.2-6.4 25.6-12.8c12.8-12.8 12.8-32 0-44.8s-25.6-25.6-38.4-38.4c-19.2-19.2-32-44.8-44.8-76.8-6.4-25.6-12.8-51.2-12.8-83.2v-160c0-19.2-12.8-32-32-32s-32 12.8-32 32v160c0 38.4 6.4 70.4 19.2 108.8 12.8 32 32 64 51.2 96 12.8 19.2 32 32 44.8 44.8zM352 384c0 19.2 12.8 32 32 32s32-12.8 32-32v-320c0-19.2-12.8-32-32-32s-32 12.8-32 32v320zM128 652.8c6.4 12.8 19.2 19.2 32 19.2 6.4 0 6.4 0 12.8 0 12.8-6.4 25.6-25.6 19.2-44.8-19.2-44.8-32-96-32-147.2v-160c0-19.2-12.8-32-32-32s-32 12.8-32 32v160c0 57.6 12.8 115.2 32 172.8zM288 134.4c0-19.2-12.8-32-32-32s-32 12.8-32 32v57.6c0 19.2 12.8 32 32 32s32-12.8 32-32v-57.6zM576 288c0-19.2-12.8-32-32-32s-32 12.8-32 32v192c0 19.2 12.8 32 32 32s32-12.8 32-32v-192zM672 64v416c0 70.4-57.6 128-128 128-57.6 0-115.2-44.8-128-102.4 0-12.8-12.8-25.6-25.6-25.6h-6.4c-19.2 6.4-32 19.2-25.6 38.4 19.2 89.6 96 153.6 185.6 153.6 108.8 0 192-83.2 192-192v-416c0-19.2-12.8-32-32-32s-32 12.8-32 32zM544 736c-12.8 0-19.2 0-32 0s-32 12.8-32 25.6c0 19.2 12.8 32 25.6 38.4 12.8 0 25.6 0 38.4 0 179.2 0 320-140.8 320-320 0-19.2-12.8-32-32-32s-32 12.8-32 32c0 140.8-115.2 256-256 256zM800 134.4v185.6c0 19.2 12.8 32 32 32s32-12.8 32-32v-185.6c0-19.2-12.8-32-32-32s-32 12.8-32 32zM812.8 755.2c-12.8 12.8-12.8 32 0 44.8 6.4 6.4 12.8 12.8 25.6 12.8 6.4 0 12.8 0 19.2-6.4 25.6-25.6 51.2-51.2 70.4-83.2 6.4-12.8 6.4-32-12.8-44.8-6.4-6.4-12.8-6.4-19.2-6.4-12.8 0-19.2 6.4-25.6 12.8-19.2 25.6-38.4 51.2-57.6 70.4zM512 32v128c0 19.2 12.8 32 32 32s32-12.8 32-32v-128c0-19.2-12.8-32-32-32s-32 12.8-32 32zM723.2 896c19.2-6.4 25.6-25.6 19.2-44.8-12.8-12.8-25.6-19.2-38.4-19.2-6.4 0-6.4 0-12.8 0-44.8 19.2-96 32-147.2 32-102.4 0-204.8-44.8-275.2-115.2-6.4-6.4-19.2-12.8-25.6-12.8s-12.8 0-19.2 6.4c-12.8 12.8-12.8 32 0 44.8 83.2 89.6 198.4 140.8 326.4 140.8 57.6 0 115.2-12.8 172.8-32zM998.4 480v-160c-6.4-19.2-19.2-32-38.4-32s-32 12.8-32 32v160c0 12.8 0 19.2 0 32 0 19.2-6.4 38.4-6.4 57.6-6.4 19.2 6.4 32 25.6 38.4h6.4c12.8 0 25.6-12.8 32-25.6 6.4-25.6 6.4-44.8 12.8-70.4 0-12.8 0-25.6 0-32z" />
<glyph unicode="&#xe992;" glyph-name="fingerprint-l" d="M172.8 672c-19.2 6.4-38.4 0-44.8-19.2-19.2-57.6-32-115.2-32-172.8v-224c0-19.2 12.8-32 32-32s32 12.8 32 32v224c0 51.2 12.8 102.4 32 147.2 6.4 19.2-6.4 38.4-19.2 44.8zM985.6 582.4c-6.4 19.2-19.2 32-38.4 25.6s-32-19.2-25.6-38.4c0-19.2 6.4-38.4 6.4-57.6 0-12.8 0-19.2 0-32v-224c0-19.2 12.8-32 32-32s32 12.8 38.4 32v224c0 6.4 0 19.2 0 32-6.4 25.6-6.4 44.8-12.8 70.4zM928 716.8c-19.2 32-44.8 57.6-70.4 83.2-12.8 12.8-32 12.8-44.8 0s-12.8-32 0-44.8c19.2-19.2 38.4-44.8 57.6-70.4 6.4-6.4 12.8-12.8 25.6-12.8 6.4 0 12.8 0 19.2 0 19.2 12.8 19.2 32 12.8 44.8zM243.2 736c6.4 0 19.2 6.4 32 12.8 70.4 70.4 172.8 115.2 275.2 115.2 51.2 0 102.4-12.8 147.2-32 19.2-6.4 38.4 0 44.8 19.2s0 38.4-19.2 44.8c-57.6 19.2-115.2 32-172.8 32-128 0-243.2-51.2-326.4-140.8-12.8-12.8-12.8-32 0-44.8 6.4-6.4 12.8-6.4 19.2-6.4zM384 723.2c-12.8 12.8-32 19.2-44.8 6.4s-32-25.6-44.8-44.8c-19.2-32-38.4-64-51.2-96-12.8-38.4-19.2-70.4-19.2-108.8v-160c0-19.2 12.8-32 32-32s32 12.8 32 32v160c0 32 6.4 57.6 12.8 83.2 12.8 32 25.6 57.6 44.8 76.8 12.8 12.8 25.6 25.6 38.4 38.4s12.8 32 0 44.8zM256 224c-19.2 0-32-12.8-32-32v-57.6c0-19.2 12.8-32 32-32s32 12.8 32 32v57.6c0 19.2-12.8 32-32 32zM832 352c-19.2 0-32-12.8-32-32v-185.6c0-19.2 12.8-32 32-32s32 12.8 32 32v185.6c0 19.2-12.8 32-32 32zM544 800c-12.8 0-25.6 0-38.4 0-12.8-6.4-25.6-19.2-25.6-38.4 6.4-12.8 19.2-25.6 38.4-25.6 6.4 0 12.8 0 25.6 0 140.8 0 256-115.2 256-256 0-19.2 12.8-32 32-32s32 12.8 32 32c0 179.2-140.8 320-320 320zM384 416c-19.2 0-32-12.8-32-32v-320c0-19.2 12.8-32 32-32s32 12.8 32 32v320c0 19.2-12.8 32-32 32zM544 672c-89.6 0-166.4-64-185.6-153.6-6.4-19.2 6.4-32 25.6-38.4 12.8 0 32 6.4 32 25.6 12.8 57.6 70.4 102.4 128 102.4 70.4 0 128-57.6 128-128v-416c0-19.2 12.8-32 32-32s32 12.8 32 32v416c0 108.8-83.2 192-192 192zM544 512c-19.2 0-32-12.8-32-32v-192c0-19.2 12.8-32 32-32s32 12.8 32 32v192c0 19.2-12.8 32-32 32zM544 192c-19.2 0-32-12.8-32-32v-128c0-19.2 12.8-32 32-32s32 12.8 32 32v128c0 19.2-12.8 32-32 32z" />
<glyph unicode="&#xe993;" glyph-name="fire-l" d="M212.674 529.65c27.195 64.43 67.412 95.993 67.412 95.993-3.805-31.408-5.873-73.838-1.022-104.063 0 0 4.99-43.647 23.779-73.58s34.894-27.164 34.894-27.164c-17.718-35.864-81.599 31.603-81.724-20.988-24.794 31.659-39.006 78.058-43.34 129.801zM495.080 778.46c-118.818-106.792-135.216-187.042-104.033-273.62 0.020-0.055 13.764-35.504 16.63-45.672 10.449-37.068 4.849-73.743-35.989-95.064-9.143-4.774-19.305-7.267-29.62-7.267-36.54 0-65.083 16.233-86.055 43.012-0.005-1.913-0.003-3.853 0.005-5.82 0.014-3.61 0.014-3.61 0.019-7.177 0-154.56 107.313-267.024 249.268-267.024 145.488 0 262.589 115.86 262.589 267.024 0 96.188-37.962 156.141-125.499 226.844-10.803 8.726-7.97 6.523-41.668 32.564-50.48 39.009-84.155 84.797-103.826 133.832l-1.821-1.631zM342.068 420.836c8.968 4.682 6.385 15.753 0 32.844 0 0-57.59 97.463-9.867 209.646 26.491 65.826 86.11 143.829 206.883 232.674 0-49.647 15.033-132.841 100.776-199.1s192.034-143.786 192.034-310.049c0-190.612-149.898-331.024-326.589-331.024s-313.268 140.412-313.268 331.024c0 29.321-3.167 101.59 30.568 163.767 2.674 4.928 73.801-131.796 119.463-129.782z" />
<glyph unicode="&#xe994;" glyph-name="firewall" d="M448 384h192v-128h-192v128zM192 384h192v-128h-192v128zM448 192h-256v-128h320v128zM640 192h-64v-128h320v128h-192zM704 384h192v-128h-192v128zM320 537.6c0-32 6.4-64 19.2-89.6h409.6c12.8 25.6 19.2 57.6 19.2 89.6 0 115.2-76.8 172.8-134.4 217.6s-70.4 108.8-70.4 140.8c-83.2-64-128-115.2-147.2-160-32-83.2 6.4-147.2 6.4-147.2 6.4-12.8 6.4-19.2 0-25.6-6.4 0-12.8 6.4-19.2 6.4 0 0-6.4 6.4-6.4 12.8-12.8 19.2-12.8 51.2-12.8 51.2-6.4 19.2-6.4 51.2 0 70.4 0 0-32-19.2-51.2-64 0 0 0 0 0 0-12.8-38.4-12.8-83.2-12.8-102.4z" />
<glyph unicode="&#xe995;" glyph-name="firewall-l" d="M748.8 448c12.8 25.6 19.2 57.6 19.2 89.6 0 115.2-76.8 172.8-134.4 217.6s-70.4 108.8-70.4 140.8c-83.2-64-128-115.2-147.2-160-32-83.2 6.4-147.2 6.4-147.2 6.4-12.8 6.4-19.2 0-25.6 0 0 0 0 0 0-6.4 0-12.8 6.4-19.2 6.4 0 0-6.4 6.4-6.4 12.8-12.8 19.2-12.8 51.2-12.8 51.2-6.4 19.2-6.4 51.2 0 70.4 0 0-32-19.2-51.2-64 0 0 0 0 0 0-12.8-38.4-12.8-83.2-12.8-102.4 0-32 6.4-64 19.2-89.6h-211.2v-448h832v448h-211.2zM640 256h-192v128h192v-128zM384 512c12.8-6.4 25.6-6.4 38.4-6.4v0 0h12.8l12.8 6.4c19.2 0 64 32 38.4 96v12.8c0 0-25.6 44.8 0 89.6 6.4 25.6 25.6 44.8 51.2 70.4 12.8-25.6 38.4-51.2 64-76.8v0c51.2-44.8 102.4-83.2 102.4-166.4 0-32-12.8-64-25.6-89.6h-268.8c-12.8 19.2-19.2 38.4-25.6 64zM192 384h192v-128h-192v128zM192 64v128h320v-128h-320zM896 64h-320v128h320v-128zM704 256v128h192v-128h-192z" />
<glyph unicode="&#xe996;" glyph-name="folder" d="M512 704l-128 128h-320v-768h896v640z" />
<glyph unicode="&#xe997;" glyph-name="folder-l" d="M358.4 768l128-128h409.6v-512h-768v640h230.4zM384 832h-320v-768h896v640h-448l-128 128z" />
<glyph unicode="&#xe998;" glyph-name="forum" d="M64 896v-832h512l256-128v128h128v832h-896zM256 256c0 140.8 115.2 256 256 256-70.4 0-128 57.6-128 128s57.6 128 128 128 128-57.6 128-128c0-70.4-57.6-128-128-128 140.8 0 256-115.2 256-256h-512zM512 448c-83.2 0-153.6-51.2-179.2-128h364.8c-32 76.8-102.4 128-185.6 128zM576 640c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64z" />
<glyph unicode="&#xe999;" glyph-name="forum-l" d="M64 896v-832h512l256-128v128h128v832h-896zM896 128h-128v-89.6l-179.2 89.6h-460.8v704h768v-704zM640 640c0 70.4-57.6 128-128 128s-128-57.6-128-128c0-70.4 57.6-128 128-128s128 57.6 128 128zM512 576c-38.4 0-64 25.6-64 64s25.6 64 64 64 64-25.6 64-64-25.6-64-64-64zM512 512c-140.8 0-256-115.2-256-256h512c0 140.8-115.2 256-256 256zM512 448c83.2 0 153.6-51.2 179.2-128h-358.4c25.6 76.8 96 128 179.2 128z" />
<glyph unicode="&#xe99a;" glyph-name="game" d="M953.6 441.6l-38.4 160c-12.8 57.6-70.4 102.4-134.4 102.4h-550.4c-64 0-115.2-44.8-134.4-102.4l-38.4-160c-32-128 64-249.6 198.4-249.6 76.8 0 147.2 44.8 179.2 108.8l6.4 19.2h128l6.4-19.2c32-70.4 102.4-108.8 179.2-108.8 134.4 0 230.4 121.6 198.4 249.6zM320 448v-64h-64v64h-64v64h64v64h64v-64h64v-64h-64zM672 512c19.2 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 12.8 32 32 32zM736 448c19.2 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 12.8 32 32 32zM736 512c-19.2 0-32 12.8-32 32s12.8 32 32 32 32-12.8 32-32-12.8-32-32-32zM800 512c19.2 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 12.8 32 32 32z" />
<glyph unicode="&#xe99b;" glyph-name="game-l" d="M320 576h-64v-64h-64v-64h64v-64h64v64h64v64h-64zM768 544c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM768 416c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM832 480c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM704 480c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM953.6 441.6l-38.4 160c-12.8 64-70.4 102.4-134.4 102.4h-550.4c-64 0-115.2-44.8-134.4-102.4l-38.4-160c-32-128 64-249.6 198.4-249.6 76.8 0 147.2 44.8 179.2 108.8l6.4 19.2h128l6.4-19.2c32-70.4 102.4-108.8 179.2-108.8 134.4 0 230.4 121.6 198.4 249.6zM864 307.2c-25.6-32-64-51.2-108.8-51.2-51.2 0-102.4 32-121.6 76.8l-25.6 51.2h-204.8l-25.6-51.2c-25.6-44.8-70.4-76.8-128-76.8-44.8 0-83.2 19.2-108.8 51.2s-32 76.8-25.6 121.6l38.4 160c12.8 25.6 38.4 51.2 76.8 51.2h556.8c32 0 64-25.6 70.4-57.6l38.4-160c6.4-38.4 0-76.8-32-115.2z" />
<glyph unicode="&#xe99c;" glyph-name="gene" d="M620.8 704l-38.4-70.4-32-57.6 38.4-64 38.4 70.4 32 57.6h236.8v-384h-236.8l-256 448h-339.2v-512h339.2l38.4 64 32 64-38.4 64-38.4-76.8-32-51.2h-236.8v384h236.8l256-448h339.2v512zM192 576h64v-256h-64v256zM320 512h64v-128h-64v128zM640 512h64v-128h-64v128zM768 576h64v-256h-64v256z" />
<glyph unicode="&#xe99d;" glyph-name="gift" d="M512 332.8h320v-320h-320v320zM128 332.8h320v-320h-320v320zM448 396.8v256h64v-256h384v320h-140.8c25.6 51.2 6.4 108.8-44.8 128-12.8 6.4-32 12.8-44.8 12.8-25.6 0-44.8-6.4-64-25.6l-121.6-115.2-121.6 115.2c-19.2 19.2-44.8 25.6-64 25.6-12.8 0-32-6.4-44.8-12.8-51.2-25.6-70.4-83.2-44.8-128h-140.8v-320h384zM646.4 780.8c6.4 6.4 12.8 6.4 25.6 6.4 6.4 0 12.8 0 12.8-6.4 19.2-6.4 25.6-32 12.8-44.8v-6.4c-6.4-12.8-19.2-19.2-32-19.2h-89.6l70.4 70.4zM275.2 787.2c6.4 0 12.8 6.4 12.8 6.4 6.4 0 19.2 0 25.6-6.4l70.4-64h-89.6c-12.8 0-25.6 6.4-32 19.2v6.4c-12.8 12.8-6.4 32 12.8 38.4z" />
<glyph unicode="&#xe99e;" glyph-name="gift-l" d="M896 710.4h-140.8c25.6 51.2 6.4 108.8-44.8 128-12.8 6.4-32 12.8-44.8 12.8-25.6 0-44.8-6.4-64-25.6l-121.6-115.2-121.6 115.2c-19.2 19.2-44.8 25.6-64 25.6-12.8 0-32-6.4-44.8-12.8-51.2-25.6-70.4-83.2-44.8-128h-140.8v-320h64v-384h704v384h64v320zM646.4 774.4c6.4 6.4 12.8 6.4 25.6 6.4 6.4 0 12.8 0 12.8-6.4 6.4-6.4 12.8-12.8 19.2-19.2 0-6.4 0-19.2 0-25.6v-6.4c-6.4-12.8-19.2-19.2-32-19.2h-96l70.4 70.4zM256 761.6c0 6.4 6.4 12.8 19.2 19.2 6.4 0 12.8 6.4 12.8 6.4 6.4 0 19.2 0 25.6-6.4l70.4-64h-89.6c-12.8 0-25.6 6.4-32 19.2v6.4c-6.4 0-6.4 12.8-6.4 19.2zM128 646.4h320v-192h-320v192zM192 70.4v320h192v-320h-192zM448 70.4v320h64v-320h-64zM768 70.4h-192v320h192v-320zM832 454.4h-320v192h320v-192z" />
<glyph unicode="&#xe99f;" glyph-name="github" d="M915.2 633.6c6.4 19.2 32 96-6.4 198.4 0 0-64 19.2-204.8-76.8-64 12.8-128 19.2-192 19.2s-128-6.4-185.6-19.2c-147.2 96-211.2 76.8-211.2 76.8-38.4-102.4-12.8-179.2-6.4-198.4-44.8-51.2-76.8-121.6-76.8-204.8 0-307.2 198.4-377.6 480-377.6s480 70.4 480 377.6c0 83.2-32 153.6-76.8 204.8zM512 108.8c-198.4 0-358.4 6.4-358.4 198.4 0 44.8 25.6 89.6 64 121.6 64 57.6 172.8 25.6 300.8 25.6 121.6 0 230.4 32 294.4-25.6 38.4-38.4 64-76.8 64-121.6-6.4-185.6-166.4-198.4-364.8-198.4zM358.4 409.6c-38.4 0-70.4-51.2-70.4-108.8s32-108.8 70.4-108.8 70.4 51.2 70.4 108.8-25.6 108.8-70.4 108.8zM665.6 409.6c-38.4 0-70.4-44.8-70.4-108.8s32-108.8 70.4-108.8c38.4 0 70.4 51.2 70.4 108.8s-32 108.8-70.4 108.8z" />
<glyph unicode="&#xe9a0;" glyph-name="github-logo" d="M512 915.2c-262.4 0-480-211.2-480-480 0-211.2 134.4-390.4 326.4-454.4 25.6-6.4 32 12.8 32 25.6s0 51.2 0 89.6c-121.6-19.2-153.6 32-160 57.6-6.4 12.8-32 57.6-51.2 70.4-19.2 6.4-38.4 32 0 32s64-32 76.8-51.2c44.8-70.4 115.2-51.2 140.8-38.4 6.4 32 19.2 51.2 32 64-108.8 6.4-224 44.8-224 230.4 0 51.2 19.2 96 51.2 128-6.4 12.8-19.2 64 6.4 128 0 0 38.4 12.8 134.4-51.2 32 12.8 76.8 19.2 115.2 19.2s83.2-6.4 121.6-19.2c89.6 64 134.4 51.2 134.4 51.2 25.6-64 6.4-115.2 6.4-128 32-32 51.2-76.8 51.2-128 0-185.6-115.2-224-217.6-236.8 19.2-12.8 32-44.8 32-89.6 0-64 0-115.2 0-134.4 0-12.8 6.4-25.6 32-25.6 198.4 64 326.4 249.6 326.4 454.4-6.4 275.2-224 486.4-486.4 486.4z" />
<glyph unicode="&#xe9a1;" glyph-name="Google" d="M889.6 588.8h-377.6v-153.6h217.6c-32-89.6-115.2-153.6-217.6-153.6-128 0-230.4 102.4-230.4 230.4s102.4 230.4 230.4 230.4c57.6 0 115.2-19.2 153.6-57.6l108.8 108.8c-70.4 64-160 102.4-262.4 102.4-211.2 0-384-172.8-384-384s172.8-384 384-384 384 172.8 384 384c0 25.6 0 51.2-6.4 76.8z" />
<glyph unicode="&#xe9a2;" glyph-name="greatwall" d="M832 704v-128h-64v128h-128v-128h-64v128h-128v-128h-320v-448h512v128c0 38.4 25.6 64 64 64s64-25.6 64-64v-128h192v576h-128zM192 512h128v-64h-128v64zM192 384h64v-64h-64v64zM320 192h-128v64h128v-64zM448 192h-64v64h64v-64zM448 320h-128v64h128v-64zM448 448h-64v64h64v-64z" />
<glyph unicode="&#xe9a3;" glyph-name="hacker" d="M756.48 896h-512l-128-128 64-512 256-256h32v192h64v-192h32l256 256 64 512-128 128zM308.48 576h128v-64h-128v64zM692.48 576v-64h-128v64h128zM686.080 664.96l-106.88-53.76-28.8 57.6 148.48 74.24 80-80-45.44-45.44-47.36 47.36zM302.080 743.040l148.48-74.24-28.16-57.6-107.52 53.76-47.36-47.36-45.44 44.8 80 80.64zM331.52 406.4l54.4-54.4h37.76l77.44 77.44 76.8-77.44h37.76l54.4 54.4 45.44-45.44-73.6-73.6h-90.24l-51.2 51.2-50.56-50.56h-90.24l-73.6 73.6 45.44 44.8z" />
<glyph unicode="&#xe9a4;" glyph-name="hacker-l" d="M768 896h-512l-128-128 64-512 256-256h128l256 256 64 512-128 128zM774.4 288l-224-224h-6.4v192h-64v-192h-6.4l-224 224-51.2 454.4 83.2 89.6h460.8l89.6-89.6-57.6-454.4zM320 576h128v-64h-128v64zM576 576h128v-64h-128v64zM627.2 352h-38.4l-76.8 76.8-76.8-76.8h-38.4l-51.2 57.6-51.2-51.2 76.8-70.4h89.6l51.2 51.2 51.2-51.2h89.6l76.8 70.4-51.2 51.2zM435.2 614.4l25.6 51.2-147.2 76.8-83.2-76.8 51.2-51.2 44.8 51.2zM563.2 665.6l25.6-51.2 108.8 51.2 44.8-51.2 51.2 51.2-83.2 76.8z" />
<glyph unicode="&#xe9a5;" glyph-name="hammer" d="M448 576v-64h-128v192c-108.8 0-192-83.2-192-192v-128h-64v-192h320v192h-64v64h128v-64h576v192h-576zM192 256h-64v64h64v-64z" />
<glyph unicode="&#xe9a6;" glyph-name="hammer-l" d="M448 576v-64h-128v192c-108.8 0-192-83.2-192-192v-128h-64v-192h320v192h-64v64h128v-64h576v192h-576zM320 256h-192v64h192v-64zM192 384v128c0 44.8 25.6 89.6 64 108.8v-236.8h-64zM960 448h-448v64h448v-64z" />
<glyph unicode="&#xe9a7;" glyph-name="hand-bevel" d="M476.377 601.996c0 55.734 44.348 102.004 100.427 102.004 55.965 0 100.76-46.152 100.76-102.004v-135.071c20.733-4.511 39.263-15.080 53.555-29.776 2.408 0.163 4.839 0.246 7.29 0.246 29.758 0 56.712-12.248 75.972-32.001l-2.952 0.045c0.988 0 1.972-0.015 2.952-0.045 51.354-1.567 92.261-43.865 92.261-95.495v-40.433l0.156-88.181c0-9.61-0.813-19.253-2.369-28.963-5.090-31.76-15.925-58.729-36.407-99.077-20.541-40.465-24.913-50.602-24.913-53.245v-64h-336.238v64c0-6.86-1.831-2.602-6.331 4.675-6.693 10.823-13.151 20.010-32.353 46.492-1.037 1.43-1.037 1.43-2.078 2.867-12.886 17.791-20.566 28.709-28.028 40.159-10.277 15.769-26.026 40.369-45.835 71.534-13.332 20.977-26.784 42.213-40.205 63.448-8.052 12.74-14.304 22.647-19.171 30.461-26.884 46.584-10.143 105.749 36.209 132.523 34.772 20.062 77.016 16.573 107.299-6.108v215.944zM842.642 268.439v41.46c0 17.418-13.981 31.54-31.214 31.54-7.343 0-14.248-4.301-20.713-12.904-1.099-1.462-2.822-2.322-4.651-2.322-3.214 0-5.819 2.605-5.819 5.819 0 22.847-18.724 41.364-41.837 41.364-11.165 0-21.231-4.321-28.654-11.364-0.622-0.59-1.23-1.249-1.82-1.979-1.182-1.447-2.951-2.286-4.818-2.286-3.436 0-6.221 2.785-6.221 6.221 0 22.847-18.974 41.364-41.983 41.364-10.355 0-19.765-3.753-26.982-9.962 0 0 0 0 0 0-1.577-1.357-3.589-2.103-5.67-2.103-4.801 0-8.694 3.892-8.694 8.694h-0.002v200.016c0 20.991-16.639 38.004-36.76 38.004-20.111 0-36.427-17.023-36.427-38.004v-343.764c0-6.018-2.822-11.688-7.623-15.317-8.459-6.394-20.5-4.719-26.894 3.74v0l-59.385 78.572c-9.018 15.626-29.348 20.767-45.413 11.498-16.066-9.28-21.779-29.471-12.761-45.097 0 0 73.427-116.497 103.4-162.491s79.171-102.727 79.171-129.137h208.238c0 44.585 63.689 114.226 63.689 181.285-0.035 57.783-0.087 86.834-0.156 87.154zM330.039 762.51l-45.255 45.255 158.392 22.627-22.627-158.392-45.255 45.255-135.765-135.765 45.255-45.255-158.392-22.627 22.627 158.392 45.255-45.255 135.765 135.765z" />
<glyph unicode="&#xe9a8;" glyph-name="hand-button" d="M266.854 411.354v190.632c0 56.044 45.025 102.013 101.235 102.013 56.216 0 101.246-45.965 101.246-102.013v-134.765c21.487-4.335 40.7-15.071 55.419-30.163 2.826 0.222 5.681 0.335 8.562 0.335 29.907 0 57.139-12.204 76.614-31.975l-1.963 0.020c0.656 0 1.31-0.007 1.963-0.020 51.886-1.040 93.939-43.228 93.939-95.498v-39.859l0.16-2.41v-86.362c0-9.625-0.827-19.279-2.409-28.995-5.207-31.98-16.318-59.052-37.337-99.556-20.857-40.191-25.359-50.405-25.359-52.738v-64h-340.892v64c0-8.050-0.827-6.318-4.44-1.316-6.495 8.989-11.566 15.036-32.959 39.755-4.136 4.784-4.136 4.784-8.346 9.697-42.256 49.488-60.264 77.714-60.264 117.911 0.082 2.129 0.058 2.59 0.032 3.080l-0.053 141.508c0 47.581 31.668 87.366 74.854 100.719zM639.868 268.462v41.459c0 17.407-14.292 31.518-31.902 31.518-5.594 0-10.848-1.422-15.416-3.919-2.889-1.58-5.574-4.254-8.059-8.021-0.848-1.288-2.287-2.063-3.83-2.063-2.533 0-4.586 2.053-4.586 4.586v0c0 22.857-19.145 41.373-42.76 41.373-10.35 0-19.84-3.554-27.238-9.469-1.342-1.073-2.633-2.398-3.873-3.973-1.238-1.574-3.129-2.493-5.132-2.493-3.605 0-6.528 2.923-6.528 6.528 0 22.846-19.071 41.363-42.6 41.363-7.861 0-15.224-2.065-21.544-5.666 0 0 0 0 0 0-2.126-1.211-4.531-1.848-6.977-1.848-7.784 0-14.093 6.31-14.093 14.093h0.005v190.059c0 20.991-16.671 38.013-37.246 38.013-20.564 0-37.235-17.023-37.235-38.013v-354.622c0-7.050-7.21-12.767-16.095-12.767-8.895 0-16.106 5.717-16.106 12.767v104.782c-23.561-0.032-42.653-18.601-42.653-41.512l0.053-141.484c0-0.544 0.149-1.045-0.032-3.104 0-47.154 106.009-126.104 106.009-166.048h212.892c0 44.594 65.105 114.222 65.105 181.289-0.028 57.788-0.082 86.846-0.16 87.173zM563.32 488.376c-8.968-15.229-28.583-20.305-43.812-11.337s-20.305 28.583-11.337 43.812c14.759 25.064 22.45 53.607 22.468 82.641 0.027 43.083-16.737 84.463-47.816 115.542-63.755 63.755-167.122 63.755-230.876 0-30.631-30.631-47.365-71.27-47.807-113.724-0.306-29.321 7.22-58.227 21.97-83.623 8.876-15.282 3.683-34.867-11.599-43.743s-34.867-3.683-43.743 11.599c-20.571 35.417-31.049 75.666-30.625 116.434 0.615 59.031 23.958 115.722 66.549 158.312 88.748 88.748 232.638 88.748 321.386 0 43.214-43.214 66.599-100.934 66.561-160.837-0.026-40.371-10.736-80.12-31.319-115.075z" />
<glyph unicode="&#xe9a9;" glyph-name="hande-vertical" d="M476.377 601.996c0 55.734 44.348 102.004 100.427 102.004 55.965 0 100.76-46.152 100.76-102.004v-135.071c20.733-4.511 39.263-15.080 53.555-29.776 2.408 0.163 4.839 0.246 7.29 0.246 29.758 0 56.712-12.248 75.972-32.001l-2.952 0.045c0.988 0 1.972-0.015 2.952-0.045 51.354-1.567 92.261-43.865 92.261-95.495v-40.433l0.156-88.181c0-9.61-0.813-19.253-2.369-28.963-5.090-31.76-15.925-58.729-36.407-99.077-20.541-40.465-24.913-50.602-24.913-53.245v-64h-336.238v64c0-6.86-1.831-2.602-6.331 4.675-6.693 10.823-13.151 20.010-32.353 46.492-1.037 1.43-1.037 1.43-2.078 2.867-12.886 17.791-20.566 28.709-28.028 40.159-10.277 15.769-26.026 40.369-45.835 71.534-13.332 20.977-26.784 42.213-40.205 63.448-8.052 12.74-14.304 22.647-19.171 30.461-26.884 46.584-10.143 105.749 36.209 132.523 34.772 20.062 77.016 16.573 107.299-6.108v215.944zM842.642 268.439v41.46c0 17.418-13.981 31.54-31.214 31.54-7.343 0-14.248-4.301-20.713-12.904-1.099-1.462-2.822-2.322-4.651-2.322-3.214 0-5.819 2.605-5.819 5.819 0 22.847-18.724 41.364-41.837 41.364-11.165 0-21.231-4.321-28.654-11.364-0.622-0.59-1.23-1.249-1.82-1.979-1.182-1.447-2.951-2.286-4.818-2.286-3.436 0-6.221 2.785-6.221 6.221 0 22.847-18.974 41.364-41.983 41.364-10.355 0-19.765-3.753-26.982-9.962-1.577-1.357-3.589-2.103-5.67-2.103-4.801 0-8.694 3.892-8.694 8.694h-0.002v200.016c0 20.991-16.639 38.004-36.76 38.004-20.111 0-36.427-17.023-36.427-38.004v-343.764c0-6.018-2.822-11.688-7.623-15.317-8.459-6.394-20.5-4.719-26.894 3.74v0l-59.385 78.572c-9.018 15.626-29.348 20.767-45.413 11.498-16.066-9.28-21.779-29.471-12.761-45.097 0 0 73.427-116.497 103.4-162.491s79.171-102.727 79.171-129.137h208.238c0 44.585 63.689 114.226 63.689 181.285-0.035 57.783-0.087 86.834-0.156 87.154zM256 704v-512h64l-96-128-96 128h64v512h-64l96 128 96-128h-64z" />
<glyph unicode="&#xe9aa;" glyph-name="hand-gather" d="M476.377 601.996c0 55.734 44.348 102.004 100.427 102.004 55.965 0 100.76-46.152 100.76-102.004v-135.071c20.733-4.511 39.263-15.080 53.555-29.776 2.408 0.163 4.839 0.246 7.29 0.246 29.758 0 56.712-12.248 75.972-32.001l-2.952 0.045c0.988 0 1.972-0.015 2.952-0.045 51.354-1.567 92.261-43.865 92.261-95.495v-40.433l0.156-88.181c0-9.61-0.813-19.253-2.369-28.963-5.090-31.76-15.925-58.729-36.407-99.077-20.541-40.465-24.913-50.602-24.913-53.245v-64h-336.238v64c0-6.86-1.831-2.602-6.331 4.675-6.693 10.823-13.151 20.010-32.353 46.492-1.037 1.43-1.037 1.43-2.078 2.867-12.886 17.791-20.566 28.709-28.028 40.159-10.277 15.769-26.026 40.369-45.835 71.534-13.332 20.977-26.784 42.213-40.205 63.448-8.052 12.74-14.304 22.647-19.171 30.461-26.884 46.584-10.143 105.749 36.209 132.523 34.772 20.062 77.016 16.573 107.299-6.108v215.944zM842.642 268.439v41.46c0 17.418-13.981 31.54-31.214 31.54-7.343 0-14.248-4.301-20.713-12.904-1.099-1.462-2.822-2.322-4.651-2.322-3.214 0-5.819 2.605-5.819 5.819 0 22.847-18.724 41.364-41.837 41.364-11.165 0-21.231-4.321-28.654-11.364-0.622-0.59-1.23-1.249-1.82-1.979-1.182-1.447-2.951-2.286-4.818-2.286-3.436 0-6.221 2.785-6.221 6.221 0 22.847-18.974 41.364-41.983 41.364-10.355 0-19.765-3.753-26.982-9.962-1.577-1.357-3.589-2.103-5.67-2.103-4.801 0-8.694 3.892-8.694 8.694h-0.002v200.016c0 20.991-16.639 38.004-36.76 38.004-20.111 0-36.427-17.023-36.427-38.004v-343.764c0-6.018-2.822-11.688-7.623-15.317-8.459-6.394-20.5-4.719-26.894 3.74v0l-59.385 78.572c-9.018 15.626-29.348 20.767-45.413 11.498-16.066-9.28-21.779-29.471-12.761-45.097 0 0 73.427-116.497 103.4-162.491s79.171-102.727 79.171-129.137h208.238c0 44.585 63.689 114.226 63.689 181.285-0.035 57.783-0.087 86.834-0.156 87.154zM405.889 754.103c17.239 14.035 36.64 25.533 57.789 34.078 31.735 12.822 65.263 18.129 98.618 15.95l4.173 63.864c-42.907 2.804-86.060-4.028-126.766-20.474-26.361-10.651-50.654-24.913-72.351-42.277l-39.256 52.095-44.451-153.701 160 0.363-37.755 50.103zM196.16 544.445c-14.195-16.036-26.125-34.18-35.405-54.082-15.062-32.301-22.087-66.966-20.999-101.756l-63.969-2c-1.399 44.75 7.642 89.369 26.964 130.804 11.173 23.961 25.373 45.977 42.173 65.644l-51.203 38.584 153.701 44.451-0.363-160-50.899 38.355z" />
<glyph unicode="&#xe9ab;" glyph-name="hand-grasp" d="M526.248 631.447c39.335 0 74.611-18.195 97.317-46.689 7.207 1.285 14.624 1.956 22.19 1.956 38.632 0 73.376-17.489 96.163-45.047 2.753 0.208 5.533 0.314 8.338 0.314 59.826 0 108.658-48.234 108.658-108.121 0.030-10.617 0.075-29.733 0.119-54.719 0.075-41.641 0.12-84.245 0.12-125.362 0-12.054-1.040-24.199-3.040-36.478-6.729-41.32-21.488-77.275-49.732-131.691-32.268-62.17-38.381-76.037-38.381-85.61v-64h-426.020v64c0-1.131-17.423 22.986-58.588 70.559-5.754 6.656-8.13 9.415-11.571 13.446-54.657 64.018-78.224 100.961-78.224 148.439 0.049 0.846 0.094 1.618 0.136 2.324-0.022 0.406-0.082 67.099-0.181 200.078 0 61.597 46.002 111.991 105.339 120.759 5.72 59.095 55.019 105.703 115.569 105.703 31.786 0 60.47-12.839 81.38-33.584 9.74 2.432 19.93 3.722 30.407 3.722zM794.914 433.86c0 24.367-20.007 44.121-44.658 44.121-9.488 0-18.279-2.922-25.507-7.905-2.836-1.955-5.493-4.824-7.97-8.611-1.123-1.715-3.035-2.748-5.086-2.748-3.358 0-6.080 2.722-6.080 6.080 0 31.997-26.801 57.917-59.858 57.917-16.699 0-31.799-6.608-42.657-17.27-0.542-0.532-1.075-1.102-1.6-1.711-1.689-1.954-4.144-3.077-6.726-3.077-4.91 0-8.89 3.98-8.89 8.89v0c0 31.982-26.711 57.902-59.634 57.902-18.863 0-35.683-8.501-46.615-21.773-1.022-1.24-2.005-2.673-2.949-4.298-0.968-1.666-2.75-2.69-4.676-2.69-2.987 0-5.409 2.422-5.409 5.409 0 29.384-23.337 53.214-52.139 53.214-28.787 0-52.124-23.83-52.124-53.214v-167.957c0-9.869-10.093-17.872-22.531-17.872-12.452 0-22.546 8.003-22.546 17.872v116.819c-32.982-0.045-59.708-26.039-59.708-58.111l0.075-198.058c0-0.761 0.209-1.463 0.239-2.195-0.045-0.761-0.269-1.359-0.269-2.15 0-66.009 148.383-176.527 148.383-232.443h298.020c0 62.426 91.153 159.894 91.153 253.78s-0.239 180.081-0.239 180.081z" />
<glyph unicode="&#xe9ac;" glyph-name="hand-horizontal" d="M476.377 601.996c0 55.734 44.348 102.004 100.427 102.004 55.965 0 100.76-46.152 100.76-102.004v-135.071c20.733-4.511 39.263-15.080 53.555-29.776 2.408 0.163 4.839 0.246 7.29 0.246 29.758 0 56.712-12.248 75.972-32.001l-2.952 0.045c0.988 0 1.972-0.015 2.952-0.045 51.354-1.567 92.261-43.865 92.261-95.495v-40.433l0.156-88.181c0-9.61-0.813-19.253-2.369-28.963-5.090-31.76-15.925-58.729-36.407-99.077-20.541-40.465-24.913-50.602-24.913-53.245v-64h-336.238v64c0-6.86-1.831-2.602-6.331 4.675-6.693 10.823-13.151 20.010-32.353 46.492-1.037 1.43-1.037 1.43-2.078 2.867-12.886 17.791-20.566 28.709-28.028 40.159-10.277 15.769-26.026 40.369-45.835 71.534-13.332 20.977-26.784 42.213-40.205 63.448-8.052 12.74-14.304 22.647-19.171 30.461-26.884 46.584-10.143 105.749 36.209 132.523 34.772 20.062 77.016 16.573 107.299-6.108v215.944zM842.642 268.439v41.46c0 17.418-13.981 31.54-31.214 31.54-7.343 0-14.248-4.301-20.713-12.904-1.099-1.462-2.822-2.322-4.651-2.322-3.214 0-5.819 2.605-5.819 5.819 0 22.847-18.724 41.364-41.837 41.364-11.165 0-21.231-4.321-28.654-11.364-0.622-0.59-1.23-1.249-1.82-1.979-1.182-1.447-2.951-2.286-4.818-2.286-3.436 0-6.221 2.785-6.221 6.221v0c0 22.847-18.974 41.364-41.983 41.364-10.355 0-19.765-3.753-26.982-9.962 0 0 0 0 0 0-1.577-1.357-3.589-2.103-5.67-2.103-4.801 0-8.694 3.892-8.694 8.694h-0.002v200.016c0 20.991-16.639 38.004-36.76 38.004-20.111 0-36.427-17.023-36.427-38.004v-343.764c0-6.018-2.822-11.688-7.623-15.317-8.459-6.394-20.5-4.719-26.894 3.74v0l-59.385 78.572c-9.018 15.626-29.348 20.767-45.413 11.498-16.066-9.28-21.779-29.471-12.761-45.097 0 0 73.427-116.497 103.4-162.491s79.171-102.727 79.171-129.137h208.238c0 44.585 63.689 114.226 63.689 181.285-0.035 57.783-0.087 86.834-0.156 87.154zM256 832h512v64l128-96-128-96v64h-512v-64l-128 96 128 96v-64z" />
<glyph unicode="&#xe9ad;" glyph-name="hand-pointer" d="M520.812 842.794l-4.776-211.302c1.599 0 3.191-0.030 4.776-0.090 37.402-1.405 70.918-19.238 92.841-46.569 7.135 1.261 14.481 1.919 21.98 1.919 38.656 0 73.426-17.491 96.227-45.055 2.761 0.209 5.55 0.316 8.363 0.316 59.854 0 108.709-48.246 108.709-108.156v-56.605l0.224-123.455c0-12.135-1.055-24.362-3.082-36.725-6.763-41.248-21.52-77.148-49.734-131.471-32.289-62.171-38.409-76.042-38.409-85.602v-64h-426.268v64c0 0.368-19.311 30.893-60.265 86.1-1.482 1.998-1.482 1.998-2.969 4.004-18.218 24.584-29.028 39.606-39.415 55.185-14.651 21.974-37.168 56.351-65.492 99.905-19.082 29.346-38.339 59.060-57.552 88.772-11.528 17.827-20.481 31.695-26.921 41.773-31.436 53.241-11.797 121.078 41.952 151.423 51.487 29.035 117.066 13.927 149.041-35.188l17.943-23.204v374.025c0 64.442 51.741 117.206 116.175 117.206 64.358 0 116.653-52.663 116.653-117.206zM784.932 375.815v58.044c0 24.385-20.025 44.156-44.709 44.156-11.573 0-22.117-4.348-30.051-11.481-1.452-1.306-2.84-2.937-4.163-4.892-1.063-1.572-2.837-2.514-4.735-2.514-3.157 0-5.716 2.559-5.716 5.716 0 31.986-26.819 57.91-59.925 57.91-15.016 0-28.644-5.333-39.053-14.147-1.52-1.287-2.989-2.823-4.404-4.608-1.703-2.143-4.291-3.393-7.028-3.393-4.958 0-8.977 4.019-8.977 8.977 0 31.986-27.178 57.91-60.135 57.91-15.439 0-29.411-5.693-39.901-15.031 0 0 0 0 0 0-2.125-1.892-4.871-2.937-7.716-2.937-6.409 0-11.604 5.195-11.604 11.604h-0.003v281.666c0 29.388-23.833 53.206-52.653 53.206-28.805 0-52.175-23.833-52.175-53.206v-467.72c0-9.907-4.588-19.255-12.425-25.315-13.981-10.811-34.078-8.241-44.889 5.74v0l-77.186 99.818c-12.917 21.877-42.036 29.074-65.047 16.098-23.011-12.992-31.195-41.259-18.278-63.136 0 0 105.172-163.096 148.104-227.487s113.4-143.818 113.4-180.792h298.268c0 62.419 91.225 159.916 91.225 253.798-0.050 80.896-0.124 121.568-0.224 122.016z" />
<glyph unicode="&#xe9ae;" glyph-name="hand-slide" d="M476.377 601.996c0 55.734 44.348 102.004 100.427 102.004 55.965 0 100.76-46.152 100.76-102.004v-135.071c20.733-4.511 39.263-15.080 53.555-29.776 2.408 0.163 4.839 0.246 7.29 0.246 29.758 0 56.712-12.248 75.972-32.001l-2.952 0.045c0.988 0 1.972-0.015 2.952-0.045 51.354-1.567 92.261-43.865 92.261-95.495v-40.433l0.156-88.181c0-9.61-0.813-19.253-2.369-28.963-5.090-31.76-15.925-58.729-36.407-99.077-20.541-40.465-24.913-50.602-24.913-53.245v-64h-336.238v64c0-6.86-1.831-2.602-6.331 4.675-6.693 10.823-13.151 20.010-32.353 46.492-1.037 1.43-1.037 1.43-2.078 2.867-12.886 17.791-20.566 28.709-28.028 40.159-10.277 15.769-26.026 40.369-45.835 71.534-13.332 20.977-26.784 42.213-40.205 63.448-8.052 12.74-14.304 22.647-19.171 30.461-26.884 46.584-10.143 105.749 36.209 132.523 34.772 20.062 77.016 16.573 107.299-6.108v215.944zM842.642 268.439v41.46c0 17.418-13.981 31.54-31.214 31.54-7.343 0-14.248-4.301-20.713-12.904-1.099-1.462-2.822-2.322-4.651-2.322-3.214 0-5.819 2.605-5.819 5.819v0c0 22.847-18.724 41.364-41.837 41.364-11.165 0-21.231-4.321-28.654-11.364-0.622-0.59-1.23-1.249-1.82-1.979-1.182-1.447-2.951-2.286-4.818-2.286-3.436 0-6.221 2.785-6.221 6.221v0c0 22.847-18.974 41.364-41.983 41.364-10.355 0-19.765-3.753-26.982-9.962 0 0 0 0 0 0-1.577-1.357-3.589-2.103-5.67-2.103-4.801 0-8.694 3.892-8.694 8.694h-0.002v200.016c0 20.991-16.639 38.004-36.76 38.004-20.111 0-36.427-17.023-36.427-38.004v-343.764c0-6.018-2.822-11.688-7.623-15.317-8.459-6.394-20.5-4.719-26.894 3.74v0l-59.385 78.572c-9.018 15.626-29.348 20.767-45.413 11.498-16.066-9.28-21.779-29.471-12.761-45.097 0 0 73.427-116.497 103.4-162.491s79.171-102.727 79.171-129.137h208.238c0 44.585 63.689 114.226 63.689 181.285-0.035 57.783-0.087 86.834-0.156 87.154zM352 768v64l128-95.928-128-96.072v64c-88.366 0-160-71.634-160-160h64l-96.273-128-95.727 128h64c0 123.712 100.288 224 224 224z" />
<glyph unicode="&#xe9af;" glyph-name="hand-stop" d="M251.938 539.575l-188.117 108.61 32 55.426 886.81-512-32-55.426-100.783 58.187c-8.079-32.567-22.109-64.544-45.021-108.687-32.268-62.171-38.382-76.038-38.382-85.605v-64h-426.028v64c0-1.139-17.422 22.975-58.59 70.551-5.771 6.677-8.155 9.444-11.606 13.487-54.621 63.981-78.191 100.939-78.191 148.412 0.116 2.97 0.082 3.617 0.045 4.321l-0.075 198.072c0 44.605 24.108 83.344 59.938 104.652zM791.46 228.082l-430.672 248.649v-115.434c0-9.884-10.094-17.873-22.546-17.873s-22.546 7.988-22.546 17.873v131.753c-32.983-0.030-59.695-26.040-59.695-58.127l0.075-198.048c0-0.761 0.209-1.463-0.045-4.345 0-66.026 148.387-176.547 148.387-232.45h298.028c0 56.715 75.272 142.393 89.015 228.003zM793.376 376.071l64-36.845v273.857c0 56.525-43.498 102.684-98.745 107.663-18.71 44.273-63.147 75.085-114.702 75.085-14.418 51.839-62.617 89.528-119.241 89.528-1.18 0-2.352-0.018-3.599 0.159-16.88 43.492-58.786 74.483-108.176 74.483-64.44 0-116.125-52.769-116.125-117.2v-180.837l64-36.845v217.683c0 29.37 23.323 53.2 52.125 53.2s52.14-23.815 52.14-53.2v-277.709l45.048-25.934v279.097c4.584 2.284 9.466 3.106 14.588 3.106 32.938 0 59.635-25.921 59.635-57.903v-89.528c0 0.278 0.045-58.915 0.134-177.58l45.093-25.96v258.278c4.614 2.344 9.511 3.165 14.648 3.165 33.073 0 59.874-25.921 59.874-57.903v-194.375c0.791-9.317 10.437-16.693 22.382-16.693 12.453 0 22.546 8.003 22.546 17.888v176.443c24.532-0.149 44.376-19.829 44.376-44.107v-237.011z" />
<glyph unicode="&#xe9b0;" glyph-name="hand-touch" d="M266.854 411.354v190.632c0 56.044 45.025 102.013 101.235 102.013 56.216 0 101.246-45.965 101.246-102.013v-134.765c21.487-4.335 40.7-15.071 55.419-30.163 2.826 0.222 5.681 0.335 8.562 0.335 29.907 0 57.139-12.204 76.614-31.975l-1.963 0.020c0.656 0 1.31-0.007 1.963-0.020 51.886-1.040 93.939-43.228 93.939-95.498v-39.859l0.16-2.41v-86.362c0-9.625-0.827-19.279-2.409-28.995-5.207-31.98-16.318-59.052-37.337-99.556-20.857-40.191-25.359-50.405-25.359-52.738v-64h-340.892v64c0-8.050-0.827-6.318-4.44-1.316-6.495 8.989-11.566 15.036-32.959 39.755-4.136 4.784-4.136 4.784-8.346 9.697-42.256 49.488-60.264 77.714-60.264 117.911 0.082 2.129 0.058 2.59 0.032 3.080l-0.053 141.508c0 47.581 31.668 87.366 74.854 100.719zM639.868 268.462v41.459c0 17.407-14.292 31.518-31.902 31.518-5.594 0-10.848-1.422-15.416-3.919-2.889-1.58-5.574-4.254-8.059-8.021-0.848-1.288-2.287-2.063-3.83-2.063-2.533 0-4.586 2.053-4.586 4.586 0 22.857-19.145 41.373-42.76 41.373-10.35 0-19.84-3.554-27.238-9.469-1.342-1.073-2.633-2.398-3.873-3.973-1.238-1.574-3.129-2.493-5.132-2.493-3.605 0-6.528 2.923-6.528 6.528v0c0 22.846-19.071 41.363-42.6 41.363-7.861 0-15.224-2.065-21.544-5.666 0 0 0 0 0 0-2.126-1.211-4.531-1.848-6.977-1.848-7.784 0-14.093 6.31-14.093 14.093h0.005v190.059c0 20.991-16.671 38.013-37.246 38.013-20.564 0-37.235-17.023-37.235-38.013v-354.622c0-7.050-7.21-12.767-16.095-12.767-8.895 0-16.106 5.717-16.106 12.767v104.782c-23.561-0.032-42.653-18.601-42.653-41.512l0.053-141.484c0-0.544 0.149-1.045-0.032-3.104 0-47.154 106.009-126.104 106.009-166.048h212.892c0 44.594 65.105 114.222 65.105 181.289-0.028 57.788-0.082 86.846-0.16 87.173zM563.32 488.376c-8.968-15.229-28.583-20.305-43.812-11.337s-20.305 28.583-11.337 43.812c14.759 25.064 22.45 53.607 22.468 82.641 0.027 43.083-16.737 84.463-47.816 115.542-63.755 63.755-167.122 63.755-230.876 0-30.631-30.631-47.365-71.27-47.807-113.724-0.306-29.321 7.22-58.227 21.97-83.623 8.876-15.282 3.683-34.867-11.599-43.743s-34.867-3.683-43.743 11.599c-20.571 35.417-31.049 75.666-30.625 116.434 0.615 59.031 23.958 115.722 66.549 158.312 88.748 88.748 232.638 88.748 321.386 0 43.214-43.214 66.599-100.934 66.561-160.837-0.026-40.371-10.736-80.12-31.319-115.075zM669.292 426.754c-8.97-15.227-28.587-20.299-43.814-11.329s-20.299 28.587-11.329 43.814c25.959 44.065 39.491 94.221 39.543 145.214 0.077 75.66-29.359 148.373-83.913 202.928-111.948 111.948-293.536 111.879-405.587-0.173-53.821-53.821-83.264-125.269-84.069-199.832-0.556-51.493 12.645-102.268 38.55-146.888 8.873-15.284 3.677-34.868-11.608-43.741s-34.868-3.677-43.741 11.608c-31.726 54.647-47.878 116.77-47.197 179.713 0.985 91.134 37.037 178.622 102.811 244.395 137.037 137.037 359.147 137.122 496.096 0.173 66.698-66.698 102.752-155.761 102.659-248.248-0.063-62.326-16.618-123.683-48.4-177.634z" />
<glyph unicode="&#xe9b1;" glyph-name="hdmi" d="M64 704v-320h57.6c38.4 0 70.4-32 70.4-70.4v-57.6h704v57.6c0 38.4 32 70.4 70.4 70.4h57.6v320h-960zM768 512v-64h-64v64h-64v-64h-64v64h-64v-64h-64v64h-64v-64h-64v64h-64v-64h-64v128h704v-128h-64v64h-64z" />
<glyph unicode="&#xe9b2;" glyph-name="hdmi-l" d="M256 512h64v-64h64v64h64v-64h64v64h64v-64h64v64h64v-64h64v64h64v-64h64v128h-704v-128h64zM64 704v-320h57.6c38.4 0 70.4-32 70.4-70.4v-57.6h704v57.6c0 38.4 32 70.4 70.4 70.4h57.6v320h-960zM960 448c-70.4-6.4-121.6-57.6-128-128h-576c-6.4 70.4-57.6 121.6-128 128v192h832v-192z" />
<glyph unicode="&#xe9b3;" glyph-name="headset" d="M512 832c-211.2 0-384-172.8-384-384v-448h256v320h-192v128c0 179.2 140.8 320 320 320s320-140.8 320-320v-128h-192v-320h256v448c0 211.2-172.8 384-384 384z" />
<glyph unicode="&#xe9b4;" glyph-name="headset-l" d="M512 832c-211.2 0-384-172.8-384-384v-448h256v320h-192v128c0 179.2 140.8 320 320 320s320-140.8 320-320v-128h-192v-320h256v448c0 211.2-172.8 384-384 384zM320 256v-192h-128v192h128zM832 64h-128v192h128v-192z" />
<glyph unicode="&#xe9b5;" glyph-name="heart" d="M928 774.4c-44.8 51.2-108.8 76.8-179.2 76.8-64 0-128-25.6-179.2-76.8l-57.6-57.6-57.6 64c-51.2 44.8-115.2 70.4-179.2 70.4s-128-25.6-179.2-76.8c-96-96-96-262.4 0-358.4l416-416 416 416c96 96 96 262.4 0 358.4z" />
<glyph unicode="&#xe9b6;" glyph-name="heart-l" d="M748.8 787.2c51.2 0 96-19.2 134.4-57.6 76.8-76.8 76.8-192 0-268.8l-371.2-371.2-371.2 377.6c-76.8 70.4-76.8 192 0 262.4 32 38.4 83.2 57.6 134.4 57.6s96-19.2 134.4-57.6l102.4-102.4 102.4 102.4c38.4 38.4 83.2 57.6 134.4 57.6zM748.8 851.2c-64 0-128-25.6-179.2-76.8l-57.6-57.6-57.6 64c-51.2 44.8-115.2 70.4-179.2 70.4s-128-25.6-179.2-76.8v0c-96-96-96-262.4 0-358.4l416-416 416 416c96 96 96 262.4 0 358.4v0c-44.8 51.2-108.8 76.8-179.2 76.8v0z" />
<glyph unicode="&#xe9b7;" glyph-name="home" d="M128 448v-448h288v256h192v-256h288v448l-384 320zM512 902.4l-448-371.2v-83.2l448 371.2 448-371.2v83.2z" />
<glyph unicode="&#xe9b8;" glyph-name="home-l" d="M128 448v-448h288v256h192v-256h288v448l-384 320-384-320zM832 64h-160v256h-320v-256h-160v352l320 268.8 320-268.8v-352zM512 902.4l-448-371.2v-83.2l448 371.2 448-371.2v83.2z" />
<glyph unicode="&#xe9b9;" glyph-name="html5" d="M966.4 960l-83.2-921.6-371.2-102.4-364.8 102.4-83.2 921.6h902.4zM800 774.4h-569.6l32-339.2h390.4l-12.8-153.6-128-32-128 32-6.4 89.6h-108.8l12.8-179.2 230.4-64 230.4 64 32 345.6h-409.6l-6.4 121.6h428.8l12.8 115.2z" />
<glyph unicode="&#xe9ba;" glyph-name="image" d="M0 832v-768h1024v768h-1024zM64 768h896v-576l-128 256-192-192-192 256-384-384v640zM224 704c-51.2 0-96-44.8-96-96s44.8-96 96-96 96 44.8 96 96-44.8 96-96 96z" />
<glyph unicode="&#xe9bb;" glyph-name="image-l" d="M0 832v-768h1024v768h-1024zM153.6 128l288 288 147.2-198.4 44.8-57.6 179.2 179.2 108.8-211.2h-768zM832 448l-192-192-192 256-384-384v640h896v-576l-128 256zM224 704c-51.2 0-96-44.8-96-96s44.8-96 96-96 96 44.8 96 96-44.8 96-96 96zM224 576c-19.2 0-32 12.8-32 32s12.8 32 32 32 32-12.8 32-32-12.8-32-32-32z" />
<glyph unicode="&#xe9bc;" glyph-name="inbox" d="M896 320h-256v-128h-256v128h-320v-320h896v320zM480 832h64v-192h-64v192zM384 384h64v-128h128v128h352l-160 320h-128v-64h-96v-115.2l70.4 76.8 51.2-51.2-153.6-147.2-153.6 147.2 51.2 51.2 70.4-76.8v115.2h-96v64h-128l-160-320h70.4z" />
<glyph unicode="&#xe9bd;" glyph-name="inbox-l" d="M768 704h-128v-64h89.6l128-256h-281.6v-128h-128v128h-281.6l128 256h89.6v64h-128l-192-384v-320h896v320l-192 384zM896 64h-768v256h256v-128h256v128h256v-256zM358.4 550.4l153.6-147.2 153.6 147.2-51.2 51.2-70.4-76.8v307.2h-64v-307.2l-70.4 76.8z" />
<glyph unicode="&#xe9be;" glyph-name="Instagram" d="M876.8 249.6c0-96-76.8-172.8-172.8-172.8h-384c-96 0-172.8 76.8-172.8 172.8v390.4c0 96 76.8 172.8 172.8 172.8h384c96 0 172.8-76.8 172.8-172.8v-390.4zM704 896h-384c-140.8 0-256-115.2-256-262.4v-377.6c0-140.8 115.2-262.4 256-262.4h384c140.8 0 256 115.2 256 262.4v377.6c0 147.2-115.2 262.4-256 262.4v0zM512 294.4c-83.2 0-153.6 70.4-153.6 153.6s70.4 153.6 153.6 153.6 153.6-70.4 153.6-153.6c0-89.6-70.4-153.6-153.6-153.6zM512 678.4c-128 0-230.4-102.4-230.4-236.8s102.4-230.4 230.4-230.4 230.4 102.4 230.4 230.4-102.4 236.8-230.4 236.8zM755.2 742.4c-32 0-51.2-25.6-51.2-51.2s25.6-51.2 51.2-51.2c32 0 51.2 25.6 51.2 51.2s-25.6 51.2-51.2 51.2z" />
<glyph unicode="&#xe9bf;" glyph-name="key" d="M473.6 576c-38.4 76.8-121.6 128-217.6 128-140.8 0-256-115.2-256-256s115.2-256 256-256c121.6 0 217.6 83.2 249.6 192h198.4v-128h128v128h128v192h-486.4zM256 320c-70.4 0-128 57.6-128 128s57.6 128 128 128 128-57.6 128-128-57.6-128-128-128z" />
<glyph unicode="&#xe9c0;" glyph-name="keyboard" d="M0 768v-576h960v576h-960zM256 512v-64h-128v64h128zM128 576v64h64v-64h-64zM256 384v-64h-128v64h128zM448 576h-64v64h64v-64zM512 512v-64h-64v64h64zM640 384v-64h-320v64h320zM576 576h-64v64h64v-64zM640 512v-64h-64v64h64zM384 448h-64v64h64v-64zM320 576h-64v64h64v-64zM704 320v64h128v-64h-128zM832 576h-64v64h64v-64zM832 512v-64h-128v64h128zM704 576h-64v64h64v-64z" />
<glyph unicode="&#xe9c1;" glyph-name="keyboard-l" d="M0 768v-576h960v576h-960zM896 256h-832v448h832v-448zM128 640h64v-64h-64v64zM128 512h128v-64h-128v64zM128 384h128v-64h-128v64zM704 384h128v-64h-128v64zM320 384h320v-64h-320v64zM256 640h64v-64h-64v64zM384 640h64v-64h-64v64zM320 512h64v-64h-64v64zM448 512h64v-64h-64v64zM576 512h64v-64h-64v64zM704 448h128v64h-128zM512 640h64v-64h-64v64zM640 640h64v-64h-64v64zM768 640h64v-64h-64v64z" />
<glyph unicode="&#xe9c2;" glyph-name="key-l" d="M256 576c-70.4 0-128-57.6-128-128s57.6-128 128-128 128 57.6 128 128-57.6 128-128 128zM256 384c-38.4 0-64 25.6-64 64s25.6 64 64 64 64-25.6 64-64-25.6-64-64-64zM473.6 576c-38.4 76.8-121.6 128-217.6 128-140.8 0-256-115.2-256-256s115.2-256 256-256c121.6 0 217.6 83.2 249.6 192h134.4v-128h192v128h128v192h-486.4zM896 448h-128v-128h-64v128h-249.6l-12.8-44.8c-25.6-89.6-96-147.2-185.6-147.2-108.8 0-192 83.2-192 192s83.2 192 192 192c70.4 0 128-38.4 166.4-96l19.2-32h454.4v-64z" />
<glyph unicode="&#xe9c3;" glyph-name="label-info" d="M384 704h256v-64h-256v64zM192 896v-896l320 192 320-192v896h-640zM704 320h-384v64h384v-64zM704 448h-384v64h384v-64zM704 576h-384v192h384v-192z" />
<glyph unicode="&#xe9c4;" glyph-name="label-info-l" d="M192 896v-896l320 192 320-192v896h-640zM768 115.2l-256 153.6-256-153.6v716.8h512v-716.8zM704 768h-384v-192h384v192zM640 640h-256v64h256v-64zM320 512h384v-64h-384v64zM320 384h384v-64h-384v64z" />
<glyph unicode="&#xe9c5;" glyph-name="laptop" d="M832 384v448h-704v-448l-128-192h960l-128 192zM192 768h576v-384h-576v384zM512 256h-64v64h64v-64z" />
<glyph unicode="&#xe9c6;" glyph-name="laptop-l" d="M832 256v448h-704v-448l-128-192h960l-128 192zM192 640h576v-384h-576v384zM121.6 128l44.8 64h281.6v-64h-326.4zM512 192h288l44.8-64h-332.8v64z" />
<glyph unicode="&#xe9c7;" glyph-name="layers" d="M876.8 288l-70.4-38.4 76.8-38.4-364.8-179.2-364.8 179.2 64 32-70.4 38.4-134.4-70.4 505.6-249.6 505.6 249.6zM1011.2 646.4l-505.6 249.6-505.6-249.6 505.6-256zM1011.2 428.8l-147.2 70.4-358.4-179.2-358.4 179.2-147.2-70.4 505.6-256z" />
<glyph unicode="&#xe9c8;" glyph-name="layout-grid" d="M0 960h448v-448h-448v448zM576 960h448v-448h-448v448zM0 384h448v-448h-448v448zM576 384h448v-448h-448v448z" />
<glyph unicode="&#xe9c9;" glyph-name="layout-grids" d="M64 896h256v-256h-256v256zM384 896h256v-256h-256v256zM704 896h256v-256h-256v256zM64 576h256v-256h-256v256zM384 576h256v-256h-256v256zM704 576h256v-256h-256v256zM64 256h256v-256h-256v256zM384 256h256v-256h-256v256zM704 256h256v-256h-256v256z" />
<glyph unicode="&#xe9ca;" glyph-name="layout-list" d="M0 960h1024v-448h-1024v448zM0 384h1024v-448h-1024v448z" />
<glyph unicode="&#xe9cb;" glyph-name="light" d="M480 896c-192 0-352-160-352-352 0-147.2 96-275.2 224-326.4v-25.6h256v25.6c128 51.2 224 179.2 224 326.4 0 192-160 352-352 352zM512 256h-64v134.4l-134.4 128 44.8 44.8 121.6-115.2 115.2 115.2 44.8-44.8-128-128v-134.4zM480 0c70.4 0 128 57.6 128 128h-256c0-70.4 57.6-128 128-128z" />
<glyph unicode="&#xe9cc;" glyph-name="light-flash-l" d="M160 576c0 194.404 157.596 352 352 352s352-157.596 352-352c0-153.926-99.691-288.608-244.775-335.35l-235.094-68.724v76.021c-133.416 51.964-224.131 181.216-224.131 328.053zM384 142.212l306.324 84.443v-64l-306.324-84.443v64zM384 39.812l306.324 84.443v-64l-306.324-84.443v64zM600.431 301.822c117.99 38.023 199.569 148.236 199.569 274.178 0 159.058-128.942 288-288 288s-288-128.942-288-288c0-126.758 82.636-237.516 201.706-274.858l22.424-7.032v-36.799l152.3 44.511zM554.489 755.2v-152.727h85.511l-170.664-213.818v152.727h-85.336l170.489 213.818z" />
<glyph unicode="&#xe9cd;" glyph-name="light-l" d="M896 537.6c0 192-160 352-352 352s-352-153.6-352-352c0-147.2 96-275.2 224-326.4v-89.6c0-70.4 57.6-128 128-128s128 57.6 128 128v89.6c128 51.2 224 179.2 224 326.4zM544 57.6c-38.4 0-64 25.6-64 64h128c0-32-25.6-64-64-64zM576 256v128l134.4 134.4-44.8 44.8-121.6-121.6-115.2 121.6-51.2-44.8 134.4-134.4v-128c-140.8 19.2-256 134.4-256 281.6 0 160 128 288 288 288s288-128 288-288c0-147.2-115.2-268.8-256-281.6z" />
<glyph unicode="&#xe9ce;" glyph-name="lightning" d="M736 512h-224v384l-224-512h224v-384z" />
<glyph unicode="&#xe9cf;" glyph-name="lightning-l" d="M736 512h-224v384l-224-576h224v-320l224 512zM377.6 384l70.4 172.8v-108.8h192l-64-147.2v83.2h-198.4z" />
<glyph unicode="&#xe9d0;" glyph-name="link-l" d="M800 640h-192c-121.6 0-224-102.4-224-224 0-32 6.4-64 19.2-96h6.4c19.2 0 38.4 6.4 57.6 19.2-12.8 19.2-19.2 51.2-19.2 76.8 0 89.6 70.4 160 160 160h192c89.6 0 160-70.4 160-160s-70.4-160-160-160h-153.6c-12.8-25.6-32-44.8-57.6-64 6.4 0 12.8 0 12.8 0h192c121.6 0 224 102.4 224 224 6.4 121.6-96 224-217.6 224zM620.8 512h-12.8c-19.2 0-38.4-6.4-51.2-19.2 12.8-19.2 19.2-44.8 19.2-76.8 0-89.6-70.4-160-160-160h-192c-89.6 0-160 70.4-160 160s70.4 160 160 160h147.2c12.8 25.6 32 44.8 57.6 64-6.4 0-6.4 0-12.8 0h-192c-121.6 0-224-102.4-224-224s102.4-224 224-224h192c121.6 0 224 102.4 224 224 0 32-6.4 64-19.2 96z" />
<glyph unicode="&#xe9d1;" glyph-name="linux" d="M844.8 12.8c-32-19.2-76.8-51.2-89.6-70.4-12.8-12.8-64-19.2-89.6 0-32 19.2-12.8 44.8-64 44.8-25.6 0-51.2 0-76.8 0-19.2 0-44.8 0-64 0-83.2 0-89.6-51.2-140.8-51.2-32 0-76.8 25.6-147.2 44.8-44.8 12.8-96 12.8-108.8 38.4-12.8 19.2 12.8 44.8 12.8 70.4 0 32-19.2 70.4-6.4 83.2s44.8 6.4 64 12.8c19.2 12.8 32 19.2 32 51.2 6.4-25.6 0-51.2-19.2-57.6-12.8-6.4-32-12.8-44.8-6.4-12.8 0-19.2 0-25.6-6.4s-6.4-19.2 0-32c6.4-12.8 12.8-25.6 12.8-44.8s-19.2-38.4-19.2-57.6c0-6.4 6.4-12.8 19.2-12.8 25.6-6.4 64-12.8 102.4-19.2 44.8-12.8 89.6-32 121.6-25.6 89.6 12.8 38.4 102.4 25.6 128-76.8 115.2-121.6 192-160 160-12.8-6.4-12.8 19.2-12.8 32 0 38.4 19.2 51.2 32 83.2 38.4 38.4 51.2 102.4 89.6 134.4 25.6 32 64 83.2 70.4 108.8-6.4 64-12.8 128-12.8 179.2 0 57.6 6.4 108.8 76.8 147.2 12.8 6.4 38.4 12.8 57.6 12.8 38.4 0 83.2-12.8 108.8-32 44.8-32 70.4-102.4 70.4-153.6 0-38.4 6.4-83.2 19.2-121.6 12.8-51.2 38.4-83.2 76.8-121.6 44.8-51.2 76.8-147.2 89.6-204.8 6.4-57.6-6.4-89.6-12.8-89.6-19.2 0-32-57.6-89.6-57.6-38.4 0-38.4 25.6-51.2 44.8-19.2 32-32 19.2-38.4-12.8-6.4-12.8 0-38.4 6.4-57.6 12.8-38.4 6.4-70.4 0-108.8-12.8-76.8 57.6-96 102.4-57.6s51.2 44.8 108.8 64c83.2 32 57.6 57.6 12.8 70.4-38.4 12.8-44.8 83.2-25.6 96 6.4-76.8 44.8-83.2 57.6-96 64-51.2-32-83.2-70.4-108.8zM748.8 294.4c12.8 51.2 6.4 70.4 0 121.6-12.8 32-44.8 83.2-70.4 96 6.4-6.4 19.2-19.2 32-44.8 25.6-44.8 44.8-108.8 32-160-6.4-19.2-19.2-25.6-25.6-25.6-38.4-6.4-19.2 51.2-32 121.6-25.6 83.2-44.8 83.2-51.2 89.6-19.2 108.8-44.8 96-57.6 134.4-6.4 38.4 32 64-19.2 76.8-12.8 0-32 12.8-44.8 19.2-6.4 0-12.8 57.6 19.2 57.6s38.4-38.4 32-51.2c-6.4-12.8 0-19.2 19.2-12.8 12.8 6.4 6.4 38.4 6.4 44.8-12.8 44.8-32 51.2-51.2 51.2-76.8-6.4-44.8-89.6-51.2-83.2-12.8 12.8-44.8 0-44.8 6.4 0 44.8-12.8 70.4-32 70.4-25.6 6.4-32-25.6-38.4-44.8 0-19.2 12.8-57.6 19.2-51.2 6.4 0 12.8 12.8 6.4 12.8s-12.8 12.8-12.8 25.6c0 12.8 6.4 32 25.6 32s19.2-44.8 19.2-44.8c-6.4-12.8-19.2-19.2-19.2-19.2-6.4-12.8-19.2-19.2-25.6-25.6-12.8-6.4-12.8-19.2-6.4-25.6 25.6-12.8 19.2-32 51.2-32 25.6 0 44.8 6.4 57.6 6.4 12.8 6.4 51.2 12.8 64 25.6 6.4 6.4 6.4 6.4 12.8 6.4s6.4-12.8-6.4-19.2c-19.2 0-38.4-12.8-57.6-19.2s-25.6-6.4-38.4-12.8c-38.4-6.4-64 12.8-38.4-12.8 6.4-6.4 19.2-12.8 38.4-12.8 44.8 0 102.4 57.6 108.8 32 0-6.4-12.8-12.8-25.6-19.2-44.8-19.2-76.8-64-102.4-51.2-38.4 19.2-64 83.2-64 57.6 0-44.8-57.6-83.2-32-134.4-19.2-6.4-57.6-89.6-64-134.4-6.4-25.6 0-57.6-6.4-70.4-6.4-25.6-44.8 25.6-32 83.2 0 12.8 0 12.8 0 6.4-12.8-25.6-6.4-70.4 6.4-96 6.4-12.8 19.2-12.8 25.6-25.6 19.2-25.6 96-83.2 115.2-96 19.2-19.2 12.8-57.6-25.6-57.6 19.2-38.4 38.4-38.4 38.4-96 19.2 12.8 12.8 38.4 6.4 51.2s-12.8 19.2-12.8 19.2c0 0 12.8 12.8 19.2 6.4 19.2-19.2 57.6-25.6 96-19.2s83.2 19.2 102.4 51.2c6.4 12.8 12.8 19.2 19.2 19.2s6.4-12.8 6.4-32c0-19.2-6.4-38.4-12.8-51.2-12.8-25.6-12.8-38.4 6.4-38.4 6.4 32 12.8 64 19.2 96 0 38.4-25.6 102.4 6.4 140.8 6.4 6.4 19.2 12.8 32 12.8 0 44.8 70.4 44.8 96 25.6-12.8 0-32 12.8-38.4 19.2zM281.6 454.4c-6.4-6.4-19.2-12.8-6.4-12.8 0 0 12.8 6.4 12.8 12.8 0 12.8 6.4 12.8 0 19.2-6.4 0-6.4-6.4-6.4-19.2zM409.6 768c-6.4 0-6.4-6.4 0-6.4 0 0 6.4-6.4 6.4-6.4 0-6.4 0-12.8 6.4-12.8 0 0 0 0 0 0 0 12.8-6.4 25.6-12.8 25.6zM428.8 716.8c-6.4 0-6.4 12.8 12.8 12.8-12.8-6.4-12.8-12.8-12.8-12.8zM473.6 723.2c19.2 6.4 19.2-6.4 19.2-6.4-6.4 0-12.8 6.4-19.2 6.4zM544 768c-12.8 0-6.4 0 0 0 0-6.4 6.4-12.8 6.4-25.6 0 0 6.4 0 6.4 0 0 19.2-12.8 25.6-12.8 25.6zM576 896c-6.4 0-12.8 6.4-12.8 6.4-12.8 0-6.4-12.8-6.4-19.2s-12.8-12.8-6.4-19.2c6.4-6.4 6.4 6.4 19.2 12.8 0 0 19.2 0 19.2 6.4 0 0-6.4 6.4-12.8 12.8zM640 640c-12.8 6.4-12.8 19.2-19.2 12.8-12.8-12.8 12.8-38.4 25.6-38.4 6.4 0 12.8 6.4 12.8 19.2-6.4 6.4-12.8 0-19.2 6.4z" />
<glyph unicode="&#xe9d2;" glyph-name="list-clipboard" d="M640 768v64h-64c0 51.2-44.8 96-96 96s-96-44.8-96-96h-64v-64h-192v-768h704v768h-192zM384 768h64v64c0 19.2 12.8 32 32 32s32-12.8 32-32v-64h64v-64h-192v64zM256 512v64h64v-64h-64zM384 512v64h320v-64h-320zM704 384v-64h-320v64h320zM320 320h-64v64h64v-64zM704 192v-64h-320v64h320zM320 192v-64h-64v64h64z" />
<glyph unicode="&#xe9d3;" glyph-name="list-clipboard-l" d="M640 768v64h-64c0 51.2-44.8 96-96 96s-96-44.8-96-96h-64v-64h-192v-768h704v768h-192zM384 768h64v64c0 19.2 12.8 32 32 32s32-12.8 32-32v-64h64v-64h-192v64zM768 64h-576v640h128v-64h320v64h128v-640zM384 576h320v-64h-320v64zM384 384h320v-64h-320v64zM384 192h320v-64h-320v64zM256 576h64v-64h-64v64zM256 384h64v-64h-64v64zM256 192h64v-64h-64v64z" />
<glyph unicode="&#xe9d4;" glyph-name="location" d="M780.8 774.4c-64 70.4-160 121.6-268.8 121.6s-204.8-51.2-268.8-121.6c-108.8-121.6-128-294.4-64-448 108.8-256 332.8-390.4 332.8-390.4s224 134.4 332.8 390.4c64 147.2 44.8 326.4-64 448zM512 640c70.4 0 128-57.6 128-128s-57.6-128-128-128-128 57.6-128 128 57.6 128 128 128z" />
<glyph unicode="&#xe9d5;" glyph-name="location-l" d="M780.8 774.4c-70.4 70.4-166.4 121.6-268.8 121.6s-204.8-51.2-275.2-121.6c-108.8-121.6-128-294.4-64-448 115.2-256 339.2-390.4 339.2-390.4s224 134.4 332.8 390.4c64 147.2 51.2 326.4-64 448zM787.2 352c-76.8-179.2-211.2-294.4-275.2-339.2-64 44.8-198.4 160-275.2 339.2-57.6 134.4-38.4 281.6 51.2 377.6 57.6 64 140.8 102.4 224 102.4s160-38.4 224-102.4c89.6-96 108.8-243.2 51.2-377.6zM512 640c-70.4 0-128-57.6-128-128s57.6-128 128-128c70.4 0 128 57.6 128 128s-57.6 128-128 128zM512 448c-38.4 0-64 25.6-64 64s25.6 64 64 64 64-25.6 64-64-32-64-64-64z" />
<glyph unicode="&#xe9d6;" glyph-name="lock" d="M768 512v128c0 140.8-115.2 256-256 256s-256-115.2-256-256v-128h-128v-512h768v512h-128zM320 640c0 108.8 83.2 192 192 192s192-83.2 192-192v-128h-384v128z" />
<glyph unicode="&#xe9d7;" glyph-name="lock-l" d="M768 512v128c0 140.8-115.2 256-256 256s-256-115.2-256-256v-128h-128v-512h768v512h-128zM320 640c0 108.8 83.2 192 192 192s192-83.2 192-192v-128h-384v128zM832 64h-640v384h640v-384z" />
<glyph unicode="&#xe9d8;" glyph-name="map" d="M640 832l-256-192-256 192v-640l256-192 256 192 256-192v640l-256 192zM608 249.6v0l-192-147.2v480l6.4 6.4 185.6 140.8v-480z" />
<glyph unicode="&#xe9d9;" glyph-name="map-l" d="M640 832l-256-192-256 192v-640l256-192 256 192 256-192v640l-256 192zM192 704l153.6-115.2 6.4-6.4v-480l-160 121.6v480zM416 102.4v480l6.4 6.4 185.6 140.8v-480l-6.4-6.4-185.6-140.8zM832 128l-153.6 115.2-6.4 6.4v480l160-121.6v-480z" />
<glyph unicode="&#xe9da;" glyph-name="medal" d="M640 582.4c0-70.692-57.308-128-128-128s-128 57.308-128 128c0 70.692 57.308 128 128 128s128-57.308 128-128zM512 896c-179.2 0-320-140.8-320-320 0-102.4 44.8-185.6 121.6-249.6v-352l198.4 147.2 198.4-140.8v352c70.4 57.6 121.6 147.2 121.6 249.6-6.4 172.8-147.2 313.6-320 313.6zM512 384c-108.8 0-192 89.6-192 192 0 108.8 89.6 192 192 192s192-89.6 192-192-89.6-192-192-192zM512 198.4l-38.4-25.6-96-70.4v185.6c38.4-12.8 83.2-25.6 134.4-25.6 44.8 0 89.6 12.8 134.4 32v-185.6l-96 70.4-38.4 19.2z" />
<glyph unicode="&#xe9db;" glyph-name="medal-l" d="M825.6 576c0 172.8-140.8 320-320 320s-313.6-140.8-313.6-320c0-102.4 44.8-185.6 121.6-249.6v-352l198.4 147.2 198.4-140.8v352c70.4 57.6 115.2 147.2 115.2 243.2zM256 576c0 140.8 115.2 256 256 256s256-115.2 256-256-115.2-256-256-256c-140.8 6.4-256 121.6-256 256zM640 102.4l-96 70.4-32 25.6-38.4-25.6-96-70.4v185.6c38.4-19.2 83.2-32 134.4-32s89.6 12.8 134.4 32v-185.6zM512 384c108.8 0 192 89.6 192 192s-89.6 192-192 192-192-89.6-192-192 83.2-192 192-192zM512 710.4c70.4 0 128-57.6 128-128s-57.6-134.4-128-134.4c-70.4 0-128 57.6-128 128s51.2 134.4 128 134.4z" />
<glyph unicode="&#xe9dc;" glyph-name="menu-l" d="M896 768h-768v-64h768v64zM896 512h-768v-64h768v64zM896 256h-768v-64h768v64z" />
<glyph unicode="&#xe9dd;" glyph-name="message" d="M64 691.2v-569.6h896v569.6l-448-345.6zM64 825.6v-51.2l448-345.6 448 345.6v51.2z" />
<glyph unicode="&#xe9de;" glyph-name="message-l" d="M896 768v-576h-768v576h768zM960 832h-896v-704h896v704zM512 435.2l-448 345.6v-83.2l448-345.6 448 345.6v83.2z" />
<glyph unicode="&#xe9df;" glyph-name="microchip" d="M384 576h256v-256h-256v256zM960 576v64h-128v128h-192v128h-64v-128h-64v128h-64v-128h-64v128h-64v-128h-128v-128h-128v-64h128v-64h-128v-64h128v-64h-128v-64h128v-192h128v-128h64v128h64v-128h64v128h64v-128h64v128h192v192h128v64h-128v64h128v64h-128v64h128zM704 256h-384v384h384v-384z" />
<glyph unicode="&#xe9e0;" glyph-name="microchip-l" d="M384 320h256v256h-256v-256zM448 512h128v-128h-128v128zM256 192h512v512h-512v-512zM320 640h384v-384h-384v384zM320 896h64v-128h-64v128zM448 896h64v-128h-64v128zM576 896h64v-128h-64v128zM320 128h64v-128h-64v128zM448 128h64v-128h-64v128zM576 128h64v-128h-64v128zM832 640h128v-64h-128v64zM832 512h128v-64h-128v64zM832 384h128v-64h-128v64zM64 640h128v-64h-128v64zM64 512h128v-64h-128v64zM64 384h128v-64h-128v64z" />
<glyph unicode="&#xe9e1;" glyph-name="microphone" d="M512 256c108.8 0 192 83.2 192 192v256c0 108.8-83.2 192-192 192s-192-83.2-192-192v-256c0-108.8 83.2-192 192-192zM512 825.6c76.8 0 140.8-64 140.8-140.8v-83.2h-64v83.2c0 44.8-32 76.8-76.8 76.8v64zM768 512v-64c0-140.8-115.2-256-256-256s-256 115.2-256 256v64h-64v-64c0-166.4 128-300.8 288-313.6v-70.4h-160v-64h384v64h-160v70.4c160 12.8 288 147.2 288 313.6v64h-64z" />
<glyph unicode="&#xe9e2;" glyph-name="microphone-l" d="M512 256c108.8 0 192 83.2 192 192v256c0 108.8-83.2 192-192 192s-192-83.2-192-192v-256c0-108.8 83.2-192 192-192zM384 704c0 70.4 57.6 128 128 128s128-57.6 128-128v-256c0-70.4-57.6-128-128-128s-128 57.6-128 128v256zM768 512v-64c0-140.8-115.2-256-256-256s-256 115.2-256 256v64h-64v-64c0-166.4 128-300.8 288-313.6v-70.4h-160v-64h384v64h-160v70.4c160 12.8 288 147.2 288 313.6v64h-64z" />
<glyph unicode="&#xe9e3;" glyph-name="microsoft" d="M0 819.2l422.4 57.6v-403.2h-422.4v345.6zM0 76.8l422.4-57.6v403.2h-422.4v-345.6zM467.2 883.2v-409.6h556.8v486.4l-556.8-76.8zM467.2 12.8l556.8-76.8v486.4h-556.8v-409.6z" />
<glyph unicode="&#xe9e4;" glyph-name="mobile" d="M192 896v-960h576v960h-576zM512 64h-64v64h64v-64z" />
<glyph unicode="&#xe9e5;" glyph-name="mobile-l" d="M192 896v-960h576v960h-576zM704 0h-448v832h448v-832zM448 128h64v-64h-64v64z" />
<glyph unicode="&#xe9e6;" glyph-name="moments" d="M966.4 288h-326.4l320 326.4c19.2-51.2 32-108.8 32-166.4s-12.8-108.8-25.6-160zM710.4 883.2c102.4-44.8 185.6-128 236.8-230.4l-236.8-236.8v467.2zM672 576l-326.4 320c51.2 19.2 108.8 32 166.4 32s108.8-12.8 160-25.6c0 0 0 0 0-6.4v-320zM76.8 646.4c44.8 102.4 128 185.6 230.4 236.8l236.8-236.8h-467.2zM64 275.2c-19.2 57.6-32 115.2-32 172.8s12.8 108.8 25.6 160c0 0 0 0 6.4 0h332.8l-332.8-332.8zM320 6.4c-102.4 44.8-192 128-243.2 230.4l243.2 243.2v-473.6zM358.4 320l320-320c-51.2-19.2-108.8-32-172.8-32-51.2 0-102.4 6.4-153.6 25.6 0 0 0 6.4 0 6.4v320zM947.2 249.6c-44.8-102.4-128-185.6-224-230.4l-230.4 230.4h454.4z" />
<glyph unicode="&#xe9e7;" glyph-name="money" d="M0 768v-640h1024v640h-1024zM928 320c-51.2 0-96-44.8-96-96 0-12.8 0-19.2 6.4-32h-652.8c6.4 12.8 6.4 19.2 6.4 32 0 51.2-44.8 96-96 96-12.8 0-19.2 0-32-6.4v268.8c12.8-6.4 19.2-6.4 32-6.4 51.2 0 96 44.8 96 96 0 12.8 0 19.2-6.4 32h652.8c-6.4-12.8-6.4-19.2-6.4-32 0-51.2 44.8-96 96-96 12.8 0 19.2 0 32 6.4v-268.8c-12.8 6.4-19.2 6.4-32 6.4zM512 640c-108.8 0-192-83.2-192-192s83.2-192 192-192 192 83.2 192 192-83.2 192-192 192zM512 320c-70.4 0-128 57.6-128 128s57.6 128 128 128 128-57.6 128-128c0-70.4-57.6-128-128-128zM576 448c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64z" />
<glyph unicode="&#xe9e8;" glyph-name="moon" d="M448 832c-70.4 0-134.4-19.2-192-51.2 115.2-64 192-192 192-332.8s-76.8-268.8-192-332.8c57.6-32 121.6-51.2 192-51.2 211.2 0 384 172.8 384 384s-172.8 384-384 384z" />
<glyph unicode="&#xe9e9;" glyph-name="moon-l" d="M448 768c179.2 0 320-140.8 320-320s-140.8-320-320-320c-19.2 0-44.8 0-64 6.4 83.2 83.2 128 192 128 313.6s-44.8 230.4-128 313.6c19.2 6.4 44.8 6.4 64 6.4zM448 832c-70.4 0-134.4-19.2-192-51.2 115.2-64 192-192 192-332.8s-76.8-268.8-192-332.8c57.6-32 121.6-51.2 192-51.2 211.2 0 384 172.8 384 384s-172.8 384-384 384v0z" />
<glyph unicode="&#xe9ea;" glyph-name="more" d="M320 512h-128v-128h128v128zM576 512h-128v-128h128v128zM832 512h-128v-128h128v128z" />
<glyph unicode="&#xe9eb;" glyph-name="mouse" d="M512 576c25.6 0 44.8 19.2 44.8 44.8v38.4c0 25.6-19.2 44.8-44.8 44.8s-44.8-19.2-44.8-44.8v-44.8c0-19.2 19.2-38.4 44.8-38.4zM512 960c-204.8 0-364.8-166.4-364.8-364.8v-294.4c0-198.4 160-364.8 364.8-364.8s364.8 166.4 364.8 364.8v294.4c0 198.4-160 364.8-364.8 364.8zM403.2 659.2c0 64 51.2 108.8 108.8 108.8s108.8-44.8 108.8-108.8v-44.8c0-57.6-51.2-102.4-108.8-102.4s-108.8 44.8-108.8 108.8v38.4z" />
<glyph unicode="&#xe9ec;" glyph-name="mouse-l" d="M512 960c-204.8 0-364.8-166.4-364.8-364.8v-294.4c0-198.4 160-364.8 364.8-364.8s364.8 166.4 364.8 364.8v294.4c0 198.4-160 364.8-364.8 364.8zM812.8 300.8c0-166.4-134.4-300.8-300.8-300.8s-300.8 134.4-300.8 300.8v294.4c0 166.4 134.4 300.8 300.8 300.8s300.8-134.4 300.8-300.8v-294.4zM512 832c-57.6 0-108.8-44.8-108.8-108.8v-44.8c0-57.6 51.2-102.4 108.8-102.4s108.8 44.8 108.8 108.8v38.4c0 64-51.2 108.8-108.8 108.8zM556.8 684.8c0-25.6-19.2-44.8-44.8-44.8s-44.8 19.2-44.8 44.8v38.4c0 25.6 19.2 44.8 44.8 44.8s44.8-19.2 44.8-44.8v-38.4z" />
<glyph unicode="&#xe9ed;" glyph-name="music" d="M256 768v-576c-19.2 12.8-44.8 19.2-70.4 19.2-76.8 0-134.4-57.6-134.4-134.4s57.6-134.4 134.4-134.4c70.4 0 128 51.2 134.4 121.6v0 403.2l448 147.2v-307.2c-19.2 12.8-44.8 19.2-70.4 19.2-76.8 0-134.4-57.6-134.4-134.4s57.6-134.4 134.4-134.4c70.4 0 128 57.6 134.4 128v0 774.4l-576-192zM768 787.2l-448-153.6v70.4l448 147.2v-64z" />
<glyph unicode="&#xe9ee;" glyph-name="music-file" d="M512 896v-320h-320v-576h704v896h-384zM576 512v64l128-64v-64l-64 32v-192c0-51.2-44.8-96-96-96s-96 44.8-96 96 44.8 96 96 96c12.8 0 19.2 0 32-6.4v134.4zM448 896l-256-256h256z" />
<glyph unicode="&#xe9ef;" glyph-name="music-file-l" d="M896 896h-448l-256-256v-640h704v896zM256 64v512h256v256h320v-768h-576zM281.6 640l166.4 166.4v-166.4h-166.4zM576 544v-198.4c-12.8 6.4-19.2 6.4-32 6.4-51.2 0-96-44.8-96-96s44.8-96 96-96 96 44.8 96 96c0 0 0 0 0 0v0 192l64-32v64l-128 64zM544 224c-19.2 0-32 12.8-32 32s12.8 32 32 32 32-12.8 32-32-12.8-32-32-32v0z" />
<glyph unicode="&#xe9f0;" glyph-name="music-l" d="M256 768v-576c-19.2 12.8-44.8 19.2-70.4 19.2-76.8 0-134.4-57.6-134.4-134.4s57.6-134.4 134.4-134.4c70.4 0 128 51.2 134.4 121.6v0 403.2l448 147.2v-307.2c-19.2 12.8-44.8 19.2-70.4 19.2-76.8 0-134.4-57.6-134.4-134.4s57.6-134.4 134.4-134.4c70.4 0 128 57.6 134.4 128v0 774.4l-576-192zM185.6 6.4c-38.4 0-70.4 32-70.4 70.4s32 70.4 70.4 70.4 70.4-32 70.4-70.4-32-70.4-70.4-70.4zM697.6 128c-38.4 0-70.4 32-70.4 70.4s32 70.4 70.4 70.4 70.4-32 70.4-70.4-32-70.4-70.4-70.4zM320 537.6v185.6l448 147.2v-185.6l-448-147.2z" />
<glyph unicode="&#xe9f1;" glyph-name="music-note" d="M448 896v-544c-25.6 19.2-57.6 32-96 32-89.6 0-160-70.4-160-160s70.4-160 160-160c83.2 0 153.6 70.4 160 153.6v0 396.8l384-166.4v256l-448 192z" />
<glyph unicode="&#xe9f2;" glyph-name="music-note-l" d="M896 704l-448 192v-544c-25.6 19.2-57.6 32-96 32-89.6 0-160-70.4-160-160s70.4-160 160-160 160 70.4 160 160c0 0 0 6.4 0 6.4v0 384l384-166.4v256zM352 128c-51.2 0-96 44.8-96 96s44.8 96 96 96 96-38.4 96-96-44.8-96-96-96zM832 544l-320 140.8v115.2l320-134.4v-121.6z" />
<glyph unicode="&#xe9f3;" glyph-name="nail" d="M115.2 38.4l51.2-51.2 224 230.4-44.8 44.8zM614.4 896l-134.4-134.4 57.6-57.6-76.8-192c-12.8 0-25.6 0-38.4 0-64 0-121.6-25.6-166.4-70.4l313.6-313.6c51.2 51.2 76.8 134.4 64 204.8l192 76.8 57.6-57.6 140.8 134.4-409.6 409.6zM505.6 281.6c12.8 32 19.2 64 12.8 96l-12.8 51.2 51.2 19.2 294.4 121.6 51.2-51.2-320-128c6.4-51.2 0-108.8-32-153.6l-44.8 44.8z" />
<glyph unicode="&#xe9f4;" glyph-name="nail-l" d="M614.4 896l-134.4-134.4 57.6-57.6-76.8-192c-12.8 0-25.6 0-38.4 0-64 0-121.6-25.6-166.4-70.4l134.4-134.4-268.8-268.8 44.8-44.8 268.8 268.8 134.4-134.4c51.2 51.2 76.8 134.4 64 204.8l192 76.8 57.6-57.6 140.8 134.4-409.6 409.6zM499.2 435.2l19.2 44.8 76.8 192 19.2 38.4-32 38.4-12.8 12.8 44.8 44.8 313.6-313.6-44.8-44.8-44.8 44.8-38.4-19.2-192-76.8-44.8-25.6 12.8-51.2c6.4-32 0-64-12.8-96l-211.2 211.2c25.6 6.4 44.8 12.8 70.4 12.8 6.4 0 19.2 0 25.6 0l51.2-12.8z" />
<glyph unicode="&#xe9f5;" glyph-name="nas" d="M576 704h-128v-64h64v-64h-64v-384h128zM960 896h-832c-38.4 0-64-25.6-64-64v-768c0-38.4 25.6-64 64-64h832c38.4 0 64 25.6 64 64v768c0 38.4-25.6 64-64 64zM256 448h-64v64h64v-64zM256 576h-64v64h64v-64zM640 128h-256v640h256v-640zM960 128h-256v640h256v-640zM896 704h-128v-64h64v-64h-64v-384h128z" />
<glyph unicode="&#xe9f6;" glyph-name="nas-l" d="M896 768h-256v-640h256v640zM832 192h-128v384h64v64h-64v64h128v-512zM576 768h-256v-640h256v640zM512 192h-128v384h64v64h-64v64h128v-512zM192 640h64v-64h-64v64zM192 512h64v-64h-64v64zM960 896h-832c-38.4 0-64-25.6-64-64v-768c0-38.4 25.6-64 64-64h832c38.4 0 64 25.6 64 64v768c0 38.4-25.6 64-64 64zM960 64h-832v768h832v-768z" />
<glyph unicode="&#xe9f7;" glyph-name="network" d="M352 256h-243.2c64-128 179.2-224 326.4-249.6 19.2 0 44.8-6.4 70.4-6.4-12.8 12.8-25.6 25.6-32 38.4-57.6 64-96 134.4-121.6 217.6zM467.2 857.6c12.8 12.8 25.6 25.6 38.4 38.4-25.6 0-44.8 0-70.4-6.4-147.2-25.6-268.8-121.6-326.4-249.6h243.2c25.6 83.2 64 153.6 115.2 217.6zM384 448c0-44.8 6.4-89.6 12.8-128h224c12.8 38.4 19.2 83.2 19.2 128s-6.4 89.6-12.8 128h-230.4c-6.4-38.4-12.8-83.2-12.8-128zM940.8 576h-249.6c6.4-38.4 12.8-83.2 12.8-128s-6.4-89.6-12.8-128h249.6c12.8 38.4 19.2 83.2 19.2 128s-6.4 89.6-19.2 128zM556.8 38.4c-12.8-12.8-25.6-25.6-32-38.4 25.6 0 44.8 0 70.4 6.4 147.2 25.6 262.4 121.6 326.4 249.6h-243.2c-32-83.2-70.4-153.6-121.6-217.6zM608 640c-25.6 64-57.6 121.6-96 166.4-38.4-44.8-70.4-102.4-96-166.4h192zM416 256c19.2-64 51.2-121.6 96-166.4 38.4 44.8 70.4 102.4 96 166.4h-192zM320 448c0 44.8 6.4 89.6 12.8 128h-249.6c-12.8-38.4-19.2-83.2-19.2-128s6.4-89.6 19.2-128h249.6c-6.4 38.4-12.8 83.2-12.8 128zM672 640h243.2c-64 128-179.2 224-326.4 249.6-19.2 0-44.8 6.4-70.4 6.4 12.8-12.8 25.6-25.6 32-38.4 57.6-64 96-134.4 121.6-217.6z" />
<glyph unicode="&#xe9f8;" glyph-name="network-l" d="M588.8 889.6c-19.2 0-44.8 6.4-70.4 6.4 0 0-6.4 0-6.4 0s-6.4 0-6.4 0c-25.6 0-44.8 0-70.4-6.4-211.2-38.4-371.2-224-371.2-441.6s160-403.2 371.2-441.6c19.2 0 44.8-6.4 70.4-6.4 0 0 6.4 0 6.4 0s6.4 0 6.4 0c25.6 0 44.8 0 70.4 6.4 211.2 38.4 371.2 224 371.2 441.6s-160 403.2-371.2 441.6zM844.8 640h-172.8c-19.2 70.4-51.2 128-96 185.6 115.2-19.2 211.2-89.6 268.8-185.6zM512 806.4c38.4-44.8 70.4-102.4 96-166.4h-192c25.6 64 57.6 121.6 96 166.4zM640 448c0-44.8-6.4-89.6-12.8-128h-230.4c-6.4 38.4-12.8 83.2-12.8 128s6.4 89.6 12.8 128h224c12.8-38.4 19.2-83.2 19.2-128zM441.6 825.6c-38.4-57.6-70.4-115.2-89.6-185.6h-172.8c57.6 96 153.6 166.4 262.4 185.6zM153.6 576h185.6c-12.8-38.4-19.2-83.2-19.2-128s6.4-89.6 12.8-128h-179.2c-19.2 38.4-25.6 83.2-25.6 128s6.4 89.6 25.6 128zM179.2 256h172.8c19.2-70.4 51.2-128 96-185.6-115.2 19.2-211.2 89.6-268.8 185.6zM512 89.6c-38.4 44.8-70.4 102.4-96 166.4h192c-25.6-64-57.6-121.6-96-166.4zM582.4 70.4c38.4 57.6 70.4 115.2 96 185.6h172.8c-64-96-160-166.4-268.8-185.6zM870.4 320h-185.6c12.8 38.4 19.2 83.2 19.2 128s-6.4 89.6-12.8 128h185.6c12.8-38.4 19.2-83.2 19.2-128s-6.4-89.6-25.6-128z" />
<glyph unicode="&#xe9f9;" glyph-name="new" d="M531.2 550.4c-12.8 0-19.2-6.4-25.6-12.8-12.8-6.4-12.8-19.2-19.2-32h83.2c0 12.8-6.4 25.6-12.8 32s-19.2 12.8-25.6 12.8zM64 832v-768l256 192h704v576h-960zM416 390.4h-57.6l-115.2 198.4v-198.4h-51.2v281.6h64l108.8-198.4v198.4h57.6v-281.6zM505.6 435.2c6.4-6.4 19.2-6.4 25.6-6.4 12.8 0 19.2 0 25.6 6.4 6.4 0 6.4 6.4 12.8 12.8h51.2c0-12.8-6.4-25.6-19.2-38.4-12.8-19.2-38.4-25.6-70.4-25.6-25.6 0-44.8 6.4-64 25.6-25.6 12.8-32 38.4-32 76.8 0 32 6.4 57.6 25.6 76.8s38.4 25.6 70.4 25.6c19.2 0 32 0 44.8-6.4s25.6-12.8 32-25.6c6.4-12.8 12.8-25.6 12.8-44.8 0-6.4 0-19.2 0-38.4h-134.4c0-19.2 6.4-32 19.2-38.4zM838.4 390.4h-51.2l-32 140.8-32-140.8h-51.2l-57.6 198.4h57.6l25.6-140.8 25.6 140.8h51.2l38.4-140.8 32 140.8h51.2l-57.6-198.4z" />
<glyph unicode="&#xe9fa;" glyph-name="new-l" d="M243.2 588.8l115.2-198.4h57.6v281.6h-51.2v-192l-115.2 192h-57.6v-281.6h51.2zM531.2 384c32 0 57.6 6.4 70.4 25.6 12.8 12.8 19.2 25.6 19.2 38.4h-51.2c0-6.4-6.4-12.8-12.8-12.8-6.4-6.4-12.8-6.4-25.6-6.4s-19.2 0-25.6 6.4-19.2 19.2-19.2 38.4h134.4c0 19.2 0 32 0 38.4 0 12.8-6.4 32-12.8 38.4-6.4 19.2-19.2 25.6-32 32s-32 12.8-44.8 12.8c-25.6 0-51.2-6.4-70.4-25.6s-25.6-51.2-25.6-83.2c0-38.4 12.8-64 32-76.8 19.2-19.2 38.4-25.6 64-25.6zM499.2 537.6c6.4 6.4 19.2 12.8 25.6 12.8 12.8 0 19.2-6.4 25.6-12.8s12.8-19.2 12.8-32h-76.8c6.4 12.8 6.4 25.6 12.8 32zM723.2 390.4l32 140.8 32-140.8h51.2l57.6 198.4h-51.2l-32-140.8-32 140.8h-51.2l-32-140.8-32 140.8h-51.2l51.2-198.4zM64 832v-768l256 192h704v576h-960zM960 320h-659.2l-19.2-12.8-153.6-115.2v576h832v-448z" />
<glyph unicode="&#xe9fb;" glyph-name="newspaper" d="M576 384h64v-192h-64v192zM256 640h384v-64h-384v64zM896 512v-448h-64v768h-768v-832h896v512h-64zM448 128h-256v64h256v-64zM448 256h-256v64h256v-64zM448 384h-256v64h256v-64zM704 128h-192v320h192v-320zM704 512h-512v192h512v-192z" />
<glyph unicode="&#xe9fc;" glyph-name="newspaper-l" d="M192 512h512v192h-512v-192zM256 640h384v-64h-384v64zM192 320h256v-64h-256v64zM192 448h256v-64h-256v64zM192 192h256v-64h-256v64zM832 512v320h-768v-832h896v512h-128zM768 64h-640v704h640v-704zM896 64h-64v384h64v-384zM512 128h192v320h-192v-320zM576 384h64v-192h-64v192z" />
<glyph unicode="&#xe9fd;" glyph-name="operation" d="M1024 128v768h-1024v-768h512v-64h-192v-64h448v64h-192v64h448zM576 761.6c89.6-25.6 160-96 185.6-185.6h-185.6v185.6zM256 512c0 140.8 115.2 256 256 256v-256h256c0-140.8-115.2-256-256-256s-256 115.2-256 256z" />
<glyph unicode="&#xe9fe;" glyph-name="operation-l" d="M1024 128v768h-1024v-768h512v-64h-192v-64h448v64h-192v64h448zM64 192v640h896v-640h-896zM563.2 761.6c-19.2 6.4-32 6.4-51.2 6.4-140.8 0-256-115.2-256-256s115.2-256 256-256 256 115.2 256 256c0 38.4-6.4 70.4-19.2 102.4-32 76.8-102.4 134.4-185.6 147.2zM576 691.2c0 0 0 0 0 0 12.8-6.4 19.2-6.4 32-12.8 6.4 0 6.4-6.4 12.8-6.4 12.8-6.4 19.2-12.8 32-25.6 0 0 0 0 0 0 6.4-6.4 19.2-19.2 25.6-32 0-6.4 6.4-6.4 6.4-12.8 6.4-6.4 6.4-12.8 12.8-25.6 0 0 0 0 0-6.4h-121.6v121.6zM512 320c-108.8 0-192 83.2-192 192s83.2 192 192 192v-192h192c0-108.8-83.2-192-192-192z" />
<glyph unicode="&#xe9ff;" glyph-name="out-l" d="M448 128h-192v640h320v64h-384v-768h384v64h-64zM729.6 665.6l-51.2-51.2 140.8-134.4h-435.2v-64h435.2l-140.8-134.4 51.2-51.2 211.2 217.6z" />
<glyph unicode="&#xea00;" glyph-name="pad" d="M0 768v-704h960v704h-960zM896 384h-64v64h64v-64z" />
<glyph unicode="&#xea01;" glyph-name="pad-l" d="M960 832h-960v-832h960v832zM64 64v704h832v-704h-832zM832 448h-64v-64h64v64z" />
<glyph unicode="&#xea02;" glyph-name="paper" d="M832 320v-256h-64v768h-768v-192h128v-640h768v320h-64zM64 768h448v-64h-448v64zM640 128h-384v64h384v-64zM640 256h-384v64h384v-64zM640 384h-384v64h384v-64zM640 512h-384v64h384v-64z" />
<glyph unicode="&#xea03;" glyph-name="paper-l" d="M768 832h-768v-192h128v-640h768v320h-64v-256h-64v768zM192 64v576h384v128h128v-704h-512zM64 704v64h448v-64h-448zM640 576h-384v-64h384v64zM640 448h-384v-64h384v64zM640 320h-384v-64h384v64zM640 192h-384v-64h384v64z" />
<glyph unicode="&#xea04;" glyph-name="paper-plane" d="M512 896l-512-768 396.8 51.2 115.2-179.2 115.2 179.2 396.8-51.2-512 768zM512 115.2l-44.8 70.4-19.2 25.6 64 556.8 64-556.8-64-96z" />
<glyph unicode="&#xea05;" glyph-name="paper-plane-l" d="M569.6 806.4l-57.6 89.6-57.6-89.6-454.4-678.4 396.8 51.2 115.2-179.2 115.2 179.2 396.8-51.2-454.4 678.4zM896 211.2l-256 32-51.2 422.4 307.2-454.4zM435.2 665.6l-44.8-428.8-256-32 300.8 460.8zM512 115.2l-44.8 70.4-19.2 25.6 6.4 38.4 57.6 512 57.6-512 6.4-38.4-64-96z" />
<glyph unicode="&#xea06;" glyph-name="pause-l" d="M512 896c-249.6 0-448-198.4-448-448s198.4-448 448-448 448 198.4 448 448c0 249.6-198.4 448-448 448zM512 64c-211.2 0-384 172.8-384 384s172.8 384 384 384 384-172.8 384-384-172.8-384-384-384zM384 640h64v-384h-64v384zM576 640h64v-384h-64v384z" />
<glyph unicode="&#xea07;" glyph-name="paypal" d="M870.4 569.6c6.4-25.6 6.4-64 0-102.4-32-147.2-121.6-224-281.6-224h-25.6c-6.4 0-12.8 0-19.2-6.4s-12.8-12.8-12.8-19.2v-6.4l-25.6-172.8v-6.4c0-6.4-6.4-12.8-12.8-19.2-12.8-12.8-19.2-12.8-25.6-12.8h-128c-6.4 0-12.8 0-19.2 6.4 0 6.4 0 12.8 0 19.2 0 19.2 6.4 44.8 12.8 83.2s12.8 64 12.8 83.2l12.8 83.2c6.4 38.4 12.8 64 12.8 83.2 0 12.8 6.4 19.2 19.2 19.2h64c44.8 0 83.2 0 115.2 12.8 57.6 12.8 108.8 38.4 140.8 70.4s57.6 70.4 76.8 121.6c6.4 25.6 12.8 44.8 19.2 64 0 0 0 6.4 0 6.4s0 0 0 0 0 0 0 0c38.4-19.2 57.6-44.8 64-83.2v0 0zM787.2 710.4c0-38.4-6.4-76.8-25.6-115.2-25.6-76.8-76.8-128-153.6-160-38.4-12.8-76.8-19.2-128-19.2 0 0-12.8 0-44.8 0h-44.8c-32 0-51.2-19.2-57.6-51.2 0 0-12.8-89.6-44.8-262.4 0-6.4 0-6.4-6.4-6.4h-140.8c-6.4 0-12.8 0-19.2 6.4s-6.4 12.8-6.4 19.2l115.2 742.4c0 12.8 6.4 19.2 12.8 25.6 6.4 0 19.2 6.4 25.6 6.4h300.8c12.8 0 25.6 0 51.2-6.4 19.2-6.4 38.4-12.8 57.6-12.8 38.4-12.8 64-32 83.2-64 12.8-25.6 19.2-64 25.6-102.4v0z" />
<glyph unicode="&#xea08;" glyph-name="pen" d="M704 832l-640-640v-192h192l640 640-192 192zM230.4 64h-102.4v102.4l492.8 492.8 102.4-102.4-492.8-492.8z" />
<glyph unicode="&#xea09;" glyph-name="pen-write" d="M832 576l128 128-192 192-512-512v-192h192l384 384zM320 256v102.4l364.8 364.8 102.4-102.4-364.8-364.8h-102.4zM64 128h896v-64h-896v64z" />
<glyph unicode="&#xea0a;" glyph-name="people" d="M102.4 588.8c0-57.6 44.8-102.4 102.4-102.4s108.8 51.2 108.8 102.4c0 57.6-44.8 102.4-102.4 102.4-64 0-108.8-44.8-108.8-102.4zM0 249.6c0-6.4 0-12.8 0-12.8h198.4c12.8 83.2 51.2 147.2 115.2 192-32 12.8-64 19.2-102.4 19.2-140.8 0-211.2-83.2-211.2-198.4zM710.4 588.8c0-57.6 44.8-102.4 102.4-102.4s108.8 51.2 108.8 102.4c0 57.6-44.8 102.4-102.4 102.4-64 0-108.8-44.8-108.8-102.4v0zM825.6 243.2h198.4c0 6.4 0 6.4 0 12.8 0 108.8-76.8 192-204.8 192-44.8 0-76.8-6.4-108.8-19.2 64-44.8 102.4-108.8 115.2-185.6zM364.8 652.8c0-83.2 64-147.2 147.2-147.2s147.2 70.4 147.2 147.2c0 83.2-64 147.2-147.2 147.2-83.2-6.4-147.2-70.4-147.2-147.2zM224 172.8c0-6.4 0-19.2 0-19.2h569.6c0 6.4 0 12.8 0 19.2 6.4 153.6-96 275.2-281.6 275.2-192 0-288-121.6-288-275.2z" />
<glyph unicode="&#xea0b;" glyph-name="phone" d="M704 448l-96-96c-89.6 32-160 102.4-192 192l96 96-192 192-192-192c89.6-275.2 307.2-486.4 576-576l192 192-192 192z" />
<glyph unicode="&#xea0c;" glyph-name="phone-l" d="M320 742.4l102.4-102.4-76.8-76.8 12.8-38.4c38.4-108.8 121.6-198.4 230.4-230.4l38.4-12.8 76.8 76.8 102.4-102.4-121.6-121.6c-224 83.2-403.2 262.4-486.4 486.4l121.6 121.6zM320 832l-192-192c89.6-275.2 307.2-486.4 576-576v0l192 192-192 192-96-96c-89.6 32-160 102.4-192 192v0l96 96-192 192z" />
<glyph unicode="&#xea0d;" glyph-name="pinterest" d="M512 896c-249.6 0-448-198.4-448-448 0-192 121.6-352 288-416-6.4 32-6.4 89.6 0 134.4l51.2 217.6c0 0-12.8 25.6-12.8 64 0 64 38.4 108.8 83.2 108.8 38.4 0 57.6-25.6 57.6-64s-25.6-96-38.4-147.2c-6.4-44.8 25.6-83.2 70.4-83.2 76.8 0 140.8 83.2 140.8 204.8 0 108.8-76.8 185.6-192 185.6-128 0-198.4-96-198.4-192 0-38.4 12.8-76.8 32-102.4 6.4 0 6.4-6.4 0-12.8l-12.8-51.2c0-6.4 0-6.4-6.4-6.4h-6.4c-57.6 25.6-89.6 108.8-89.6 172.8 0 140.8 102.4 268.8 294.4 268.8 153.6 0 275.2-108.8 275.2-256 0-153.6-96-275.2-230.4-275.2-44.8 0-83.2 25.6-102.4 51.2l-32-108.8c-12.8-38.4-38.4-89.6-57.6-121.6 44.8-12.8 89.6-19.2 134.4-19.2 249.6 0 448 198.4 448 448s-198.4 448-448 448z" />
<glyph unicode="&#xea0e;" glyph-name="pixel" d="M64 896h128v-128h-128v128zM192 768h128v-128h-128v128zM448 768h128v-128h-128v128zM704 768h128v-128h-128v128zM320 896h128v-128h-128v128zM576 896h128v-128h-128v128zM832 896h128v-128h-128v128zM64 640h128v-128h-128v128zM192 512h128v-128h-128v128zM448 512h128v-128h-128v128zM704 512h128v-128h-128v128zM320 640h128v-128h-128v128zM576 640h128v-128h-128v128zM832 640h128v-128h-128v128zM64 384h128v-128h-128v128zM192 256h128v-128h-128v128zM448 256h128v-128h-128v128zM704 256h128v-128h-128v128zM320 384h128v-128h-128v128zM576 384h128v-128h-128v128zM832 384h128v-128h-128v128zM64 128h128v-128h-128v128zM320 128h128v-128h-128v128zM576 128h128v-128h-128v128zM832 128h128v-128h-128v128z" />
<glyph unicode="&#xea0f;" glyph-name="platform" d="M576 640v-633.6h384v633.6h-384zM768 64h-64v64h64v-64zM0 832v-640h512v512h320v128h-832zM384 256h-64v64h64v-64z" />
<glyph unicode="&#xea10;" glyph-name="platform-l" d="M384 384h64v-64h-64v64zM832 640v192h-832v-640h512v-185.6h448v633.6h-128zM512 256h-448v512h704v-128h-256v-384zM896 70.4h-320v505.6h320v-505.6zM704 198.4h64v-64h-64v64z" />
<glyph unicode="&#xea11;" glyph-name="play-l" d="M384 192l320 256-320 256v-512zM448 569.6l153.6-121.6-153.6-121.6v243.2zM512 896c-249.6 0-448-198.4-448-448s198.4-448 448-448 448 198.4 448 448c0 249.6-198.4 448-448 448zM512 64c-211.2 0-384 172.8-384 384s172.8 384 384 384 384-172.8 384-384-172.8-384-384-384z" />
<glyph unicode="&#xea12;" glyph-name="plugin" d="M128 832h384v-384h-384v384zM960 832h-384v-384h384v384zM896 512h-256v256h256v-256zM128 384h384v-384h-384v384zM576 384h384v-384h-384v384z" />
<glyph unicode="&#xea13;" glyph-name="pokemon-ball" d="M1024 499.2c-32 262.4-249.6 460.8-512 460.8s-480-198.4-512-460.8c0-19.2 0-32 0-51.2 0-281.6 230.4-512 512-512s512 230.4 512 512c0 19.2 0 32 0 51.2zM512 864c204.8 0 377.6-147.2 409.6-345.6l-64-12.8c-25.6 172.8-172.8 294.4-345.6 294.4v64zM512 576c70.4 0 128-57.6 128-128s-57.6-128-128-128-128 57.6-128 128c0 70.4 57.6 128 128 128zM512 0c-249.6 0-448 198.4-448 448h256c0-108.8 83.2-192 192-192s192 83.2 192 192h256c0-249.6-198.4-448-448-448z" />
<glyph unicode="&#xea14;" glyph-name="port" d="M320 384v-64h128v-128h192v128h128v128h64v256h-576v-256h64v-64zM448 512v128h64v-128h-64zM640 512h-64v128h64v-128zM320 640h64v-128h-64v128zM768 512h-64v128h64v-128zM64 896v-896h960v896h-960zM896 384h-64v-128h-128v-128h-320v128h-128v128h-64v384h704v-384z" />
<glyph unicode="&#xea15;" glyph-name="port-l" d="M64 896v-896h960v896h-960zM960 64h-832v768h832v-768zM256 256h128v-128h320v128h128v128h64v384h-704v-384h64v-128zM256 704h64v-128h64v128h64v-128h64v128h64v-128h64v128h64v-128h64v128h64v-256h-64v-128h-128v-128h-192v128h-128v128h-64v256zM320 512h64v-64h-64v64zM448 512h64v-64h-64v64zM576 512h64v-64h-64v64zM704 512h64v-64h-64v64z" />
<glyph unicode="&#xea16;" glyph-name="printer" d="M256 832h448v-192h-448v192zM256 0h448v320h-448v-320zM320 256h320v-64h-320v64zM320 128h320v-64h-320v64zM768 640v-64h-576v64h-192v-512h192v256h576v-256h192v512h-192zM832 448h-64v64h64v-64z" />
<glyph unicode="&#xea17;" glyph-name="printer-l" d="M768 512h64v-64h-64v64zM768 640v256h-576v-256h-192v-512h192v-192h576v192h192v512h-192zM704 832v-192h-448v192h448zM704 192v-192h-448v320h448v-128zM896 192h-128v192h-576v-192h-128v384h832v-384zM320 256h320v-64h-320v64zM320 128h320v-64h-320v64z" />
<glyph unicode="&#xea18;" glyph-name="product" d="M480 448l384 224-384 224-384-224zM448 396.8l-384 224v-448l384-217.6zM512 396.8v-441.6l384 217.6v448z" />
<glyph unicode="&#xea19;" glyph-name="program" d="M64 896v-192h960v192h-960zM704 768h-64v64h64v-64zM832 768h-64v64h64v-64zM960 768h-64v64h64v-64zM64 0h960v640h-960v-640zM723.2 313.6l-108.8 108.8 44.8 44.8 153.6-153.6-147.2-147.2-44.8 44.8 102.4 102.4zM467.2 217.6l-44.8-51.2-147.2 153.6 153.6 153.6 44.8-44.8-108.8-108.8 102.4-102.4z" />
<glyph unicode="&#xea1a;" glyph-name="program-framework" d="M192 768h256v128h-384v-384h128zM192 384h-128v-384h384v128h-256zM832 128h-256v-128h384v384h-128zM576 896v-128h256v-256h128v384zM256 192h512v512h-512v-512zM448 512h128v-128h-128v128z" />
<glyph unicode="&#xea1b;" glyph-name="program-l" d="M64 896v-896h960v896h-960zM960 64h-832v576h832v-576zM960 704h-64v64h-64v-64h-64v64h-64v-64h-64v64h-64v-64h-448v128h832v-128zM473.6 217.6l-108.8 102.4 108.8 102.4-51.2 51.2-147.2-153.6 147.2-153.6zM665.6 166.4l147.2 153.6-147.2 153.6-51.2-51.2 108.8-102.4-108.8-102.4z" />
<glyph unicode="&#xea1c;" glyph-name="prototype" d="M64 896h896v-320h-896v320zM384 512h576v-512h-576v512zM64 512h256v-512h-256v512z" />
<glyph unicode="&#xea1d;" glyph-name="prototype-l" d="M64 896v-320h896v320h-896zM896 640h-768v192h768v-192zM384 0h576v512h-576v-512zM448 448h448v-384h-448v384zM64 0h256v512h-256v-512zM128 448h128v-384h-128v384z" />
<glyph unicode="&#xea1e;" glyph-name="prototype-select" d="M192 128h64v-64h-64v64zM320 128h64v-64h-64v64zM448 128h64v-64h-64v64zM576 128h64v-64h-64v64zM832 384h64v-64h-64v64zM832 512h64v-64h-64v64zM832 640h64v-64h-64v64zM832 768h64v-64h-64v64zM192 768h576v-576h-576v576zM64 128h64v-64h-64v64zM64 256h64v-64h-64v64zM64 384h64v-64h-64v64zM64 512h64v-64h-64v64zM64 640h64v-64h-64v64zM64 768h64v-64h-64v64zM64 896h64v-64h-64v64zM192 896h64v-64h-64v64zM320 896h64v-64h-64v64zM448 896h64v-64h-64v64zM576 896h64v-64h-64v64zM704 896h64v-64h-64v64zM832 896h64v-64h-64v64zM985.6 25.6l-108.8 102.4h83.2v64h-192v-192h64v83.2l102.4-108.8z" />
<glyph unicode="&#xea1f;" glyph-name="prototype-select-l" d="M192 128h64v-64h-64v64zM320 128h64v-64h-64v64zM448 128h64v-64h-64v64zM576 128h64v-64h-64v64zM832 384h64v-64h-64v64zM832 512h64v-64h-64v64zM832 640h64v-64h-64v64zM832 768h64v-64h-64v64zM192 768v-576h576v576h-576zM704 256h-448v448h448v-448zM64 128h64v-64h-64v64zM64 256h64v-64h-64v64zM64 384h64v-64h-64v64zM64 512h64v-64h-64v64zM64 640h64v-64h-64v64zM64 768h64v-64h-64v64zM64 896h64v-64h-64v64zM192 896h64v-64h-64v64zM320 896h64v-64h-64v64zM448 896h64v-64h-64v64zM576 896h64v-64h-64v64zM704 896h64v-64h-64v64zM832 896h64v-64h-64v64zM985.6 25.6l-108.8 102.4h83.2v64h-192v-192h64v83.2l102.4-108.8z" />
<glyph unicode="&#xea20;" glyph-name="qq" d="M902.4 326.4c-6.4 25.6-19.2 64-32 96l-44.8 108.8c0 0 0 25.6 0 32 0 192-89.6 384-307.2 384s-307.2-192-307.2-384c0-12.8 0-32 0-32l-51.2-115.2c-12.8-32-25.6-64-38.4-89.6-44.8-134.4-25.6-192-19.2-192 25.6-6.4 89.6 102.4 89.6 102.4 0-57.6 32-140.8 96-198.4-25.6-6.4-57.6-19.2-76.8-32s-12.8-25.6-12.8-32c19.2-25.6 249.6-19.2 313.6-12.8 64-6.4 294.4-19.2 307.2 6.4 6.4 6.4 6.4 19.2-12.8 32s-51.2 25.6-76.8 32c70.4 57.6 96 134.4 96 198.4 0 0 64-102.4 89.6-102.4 12.8 6.4 25.6 64-12.8 198.4z" />
<glyph unicode="&#xea21;" glyph-name="qrcode-l" d="M448 896h-384v-384h384v384zM128 576v256h256v-256h-256zM320 768h-128v-128h128v128zM896 896h-384v-384h384v384zM576 576v256h256v-256h-256zM768 768h-128v-128h128v128zM448 448h-384v-384h384v384zM128 128v256h256v-256h-256zM320 320h-128v-128h128v128zM896 448h-64v-64h64v64zM704 448h-192v-192h64v128h128v64zM576 128h-64v-64h64v64zM896 256h-64v-128h-128v-64h192v192zM704 320h-64v-128h128v64h-64v64z" />
<glyph unicode="&#xea22;" glyph-name="quadrotor" d="M192 704h-64v64h-64v-64h-64v-64h192zM640 640h-256l-192-64h-192v-64h275.2l160-128h160l160 128h268.8v64h-192l-192 64zM576 512h-128v64h128v-64zM704 396.8l64-57.6v-166.4h64v192l-76.8 76.8zM192 364.8v-192h64v166.4l64 57.6-51.2 44.8zM384 320h256v-64h-256v64zM960 704v64h-64v-64h-64v-64h192v64z" />
<glyph unicode="&#xea23;" glyph-name="quote-left" d="M64 320h128v192h256v320h-384zM512 832v-512h128v192h256v320z" />
<glyph unicode="&#xea24;" glyph-name="quote-right" d="M576 832v-320h256v-192h128v512zM128 512h256v-192h128v512h-384z" />
<glyph unicode="&#xea25;" glyph-name="qzone" d="M512 371.2c-6.4-6.4 0-6.4 0-12.8 64-25.6 166.4-38.4 236.8-38.4l204.8 217.6c6.4 6.4 6.4 25.6-6.4 25.6l-275.2 51.2c-6.4 0-6.4 6.4-12.8 6.4l-134.4 243.2c0 6.4-6.4 12.8-12.8 12.8s-12.8 0-12.8-6.4l-134.4-249.6c0-6.4-6.4-6.4-12.8-6.4l-275.2-51.2c-12.8 0-19.2-19.2-6.4-25.6l198.4-204.8c6.4-6.4 6.4-6.4 6.4-12.8l-44.8-275.2c0-6.4 6.4-19.2 12.8-19.2h6.4l256 121.6h12.8l256-121.6h6.4c6.4 0 19.2 6.4 12.8 19.2l-32 192v19.2c44.8 32 64 57.6 70.4 64 0 6.4 0 6.4 0 6.4-64-25.6-217.6-70.4-409.6-70.4-12.8 0-25.6 0-38.4 0-25.6 0-51.2 6.4-64 6.4s-19.2 19.2-6.4 25.6c57.6 51.2 256 192 256 192 6.4 0 6.4 6.4 0 12.8-6.4 0-64 25.6-166.4 25.6-32 0-70.4 0-108.8-6.4-19.2-12.8-25.6 0-12.8 6.4 44.8 25.6 147.2 51.2 256 51.2 0 0 0 0 6.4 0 76.8 0 140.8-25.6 160-38.4 6.4-6.4 6.4-12.8 0-19.2-38.4-32-153.6-115.2-192-140.8z" />
<glyph unicode="&#xea26;" glyph-name="raspberry" d="M256 857.6c96-51.2 153.6-89.6 185.6-121.6-12.8-64-102.4-64-128-64 0 0 6.4 6.4 6.4 12.8-6.4 6.4-32 0-51.2 12.8 6.4 0 12.8 0 12.8 6.4-19.2 0-38.4 6.4-44.8 19.2 6.4 0 12.8 0 19.2 6.4-19.2 6.4-32 12.8-44.8 25.6 6.4 0 19.2 0 19.2 0-19.2 12.8-32 19.2-38.4 32 12.8 0 19.2 0 19.2 0-12.8 12.8-25.6 19.2-32 38.4 6.4 0 19.2-6.4 19.2 0s-19.2 12.8-25.6 32c6.4 0 19.2 0 19.2 0-6.4 12.8-12.8 25.6-19.2 32 19.2 0 51.2 0 44.8 0l-6.4 19.2c19.2 6.4 38.4 0 51.2-6.4 6.4 6.4 0 12.8-6.4 19.2 19.2 0 32-6.4 44.8-12.8 6.4 6.4-6.4 12.8-12.8 19.2 25.6-6.4 32-12.8 44.8-19.2 6.4 6.4 0 12.8-6.4 19.2 19.2-6.4 25.6-12.8 38.4-25.6 6.4 6.4 6.4 6.4 0 19.2 19.2-6.4 25.6-12.8 32-25.6 6.4 6.4 6.4 12.8 6.4 19.2 12.8-12.8 25.6-25.6 32-32 0 0 6.4 6.4 6.4 12.8 32-32 76.8-108.8 12.8-140.8-57.6 44.8-121.6 76.8-198.4 102.4v0zM774.4 857.6c-102.4-51.2-153.6-89.6-185.6-121.6 12.8-64 102.4-64 128-64-6.4 0-12.8 6.4-12.8 12.8 6.4 6.4 32 0 51.2 12.8-6.4 0-12.8 0-12.8 6.4 19.2 6.4 38.4 12.8 51.2 19.2-6.4 0-12.8 0-19.2 6.4 19.2 6.4 32 12.8 44.8 25.6-6.4 0-19.2 0-19.2 0 12.8 6.4 25.6 19.2 38.4 32-12.8 0-19.2 0-19.2 0 12.8 12.8 25.6 19.2 32 32-6.4 0-19.2-6.4-19.2 0 0 12.8 12.8 19.2 25.6 38.4-6.4 0-19.2 0-19.2 0 6.4 19.2 12.8 25.6 19.2 38.4-19.2 0-51.2 0-44.8 0l12.8 12.8c-19.2 6.4-38.4 0-51.2-6.4-6.4 6.4 0 12.8 6.4 19.2-19.2 0-32-6.4-44.8-12.8-6.4 6.4 6.4 12.8 12.8 19.2-25.6-6.4-38.4-12.8-44.8-19.2-6.4 6.4 0 12.8 6.4 19.2-19.2-6.4-25.6-12.8-38.4-25.6-6.4 6.4-6.4 6.4 0 19.2-25.6-6.4-38.4-12.8-44.8-25.6-6.4 6.4-6.4 12.8-6.4 19.2-12.8-12.8-19.2-25.6-32-32 0 0-6.4 6.4-6.4 12.8-32-32-76.8-108.8-12.8-140.8 57.6 44.8 128 76.8 204.8 102.4v0zM633.6 217.6c0-57.6-51.2-108.8-115.2-108.8s-115.2 44.8-115.2 108.8c0 0 0 0 0 0-6.4 57.6 44.8 108.8 108.8 108.8s121.6-51.2 121.6-108.8c0 0 0 0 0 0zM448 518.4c51.2-32 57.6-102.4 19.2-160s-108.8-76.8-153.6-44.8v0c-51.2 32-57.6 108.8-19.2 160s102.4 76.8 153.6 44.8v0zM582.4 524.8c-51.2-32-57.6-102.4-19.2-160s108.8-76.8 153.6-44.8v0c51.2 32 57.6 102.4 19.2 160s-108.8 76.8-153.6 44.8v0zM211.2 467.2c51.2 12.8 19.2-211.2-25.6-198.4-51.2 44.8-64 153.6 25.6 198.4zM812.8 473.6c-51.2 12.8-19.2-211.2 25.6-198.4 51.2 38.4 64 147.2-25.6 198.4v0zM640 640c89.6 12.8 166.4-38.4 160-134.4 0-32-192 134.4-160 134.4zM390.4 646.4c-89.6 12.8-166.4-38.4-166.4-134.4 6.4-38.4 198.4 128 166.4 134.4zM512 665.6c-51.2 0-108.8-38.4-108.8-64 6.4-25.6 44.8-57.6 108.8-57.6s108.8 25.6 108.8 51.2c0 38.4-57.6 70.4-108.8 70.4v0zM518.4 76.8c44.8 0 108.8-12.8 108.8-38.4 0-19.2-57.6-70.4-115.2-70.4s-115.2 44.8-115.2 64c0 25.6 76.8 44.8 121.6 44.8v0zM345.6 211.2c32-38.4 51.2-108.8 19.2-128-25.6-12.8-89.6-6.4-134.4 57.6-32 51.2-25.6 108.8-6.4 128 32 12.8 83.2-12.8 121.6-57.6v0zM678.4 224c-38.4-44.8-57.6-121.6-32-140.8s96-19.2 140.8 51.2c38.4 44.8 25.6 121.6 6.4 140.8-25.6 25.6-70.4-6.4-115.2-51.2v0z" />
<glyph unicode="&#xea27;" glyph-name="raspberry-l" d="M896 396.8c-6.4 44.8-32 83.2-64 108.8v6.4c0 70.4-32 108.8-64 140.8-6.4-6.4 0 0 0 6.4 19.2 6.4 32 19.2 32 32 6.4 6.4 25.6 19.2 25.6 38.4 12.8 12.8 19.2 25.6 12.8 38.4 12.8 12.8 12.8 25.6 12.8 38.4 12.8 19.2 6.4 32 0 44.8 6.4 12.8 6.4 25.6-6.4 38.4 0 0-12.8 6.4-25.6 6.4-12.8 12.8-25.6 12.8-44.8 12.8-6.4 6.4-19.2 6.4-32 6.4-12.8 12.8-32 6.4-44.8 6.4-19.2 6.4-32 0-38.4 0 0 0 0 0 0 0-19.2 6.4-25.6 0-38.4-6.4 0 0 0 0 0 0-25.6 0-38.4-6.4-44.8-19.2-6.4 0-12.8 0-12.8 0v0c-25.6-12.8-38.4-32-51.2-51.2-12.8 19.2-25.6 38.4-51.2 51.2v0c-6.4 0-6.4 6.4-12.8 0-6.4 12.8-19.2 19.2-44.8 19.2 0 0 0 0 0 0-6.4 6.4-19.2 6.4-32 6.4 0 0 0 0 0 0-6.4 0-12.8 6.4-19.2 6.4 0 0 0 0 0 0v0 0c-6.4 0-12.8 0-19.2-6.4-19.2 6.4-38.4 6.4-51.2-6.4-12.8 0-25.6 0-32-6.4-19.2 0-32-6.4-44.8-12.8-12.8 0-25.6-6.4-38.4-19.2-6.4-6.4-6.4-19.2 0-32-6.4-12.8-12.8-25.6 0-44.8 0-12.8 0-25.6 12.8-38.4 0-12.8 0-25.6 12.8-38.4 0-19.2 19.2-32 25.6-38.4s12.8-19.2 38.4-25.6c0-6.4 6.4-12.8 12.8-12.8-38.4-25.6-64-64-64-140.8v-6.4c-32-19.2-57.6-64-64-108.8-6.4-32 0-76.8 38.4-121.6 6.4-19.2 6.4-32 12.8-51.2 0-6.4 0-6.4 6.4-12.8 12.8-83.2 76.8-128 108.8-134.4 12.8-12.8 38.4-38.4 76.8-51.2 38.4-38.4 76.8-51.2 121.6-51.2 0 0 0 0 0 0v0c44.8 0 89.6 19.2 128 51.2 38.4 12.8 70.4 32 96 51.2 25.6 6.4 96 51.2 108.8 134.4 0 6.4 0 6.4 6.4 12.8 6.4 12.8 12.8 32 12.8 51.2 38.4 44.8 44.8 96 38.4 128zM774.4 505.6c0-32-179.2 115.2-147.2 121.6 83.2 12.8 153.6-32 147.2-121.6zM697.6 332.8c-44.8-25.6-108.8-12.8-140.8 38.4-38.4 57.6-25.6 121.6 19.2 153.6 44.8 25.6 108.8 12.8 140.8-38.4 32-57.6 25.6-121.6-19.2-153.6zM576 857.6c0-6.4 6.4-12.8 6.4-12.8 12.8 12.8 19.2 19.2 32 32 0-6.4 0-12.8 6.4-19.2 6.4 6.4 12.8 19.2 25.6 25.6-6.4-12.8 0-12.8 0-19.2 6.4 6.4 19.2 19.2 38.4 19.2-6.4-6.4-12.8-12.8-6.4-19.2 12.8 6.4 19.2 12.8 44.8 19.2-6.4-6.4-12.8-12.8-6.4-19.2 12.8 6.4 25.6 6.4 38.4 12.8-6.4-6.4-12.8-12.8-6.4-12.8 12.8 6.4 32 6.4 44.8 6.4l-12.8-12.8c0 0 25.6 0 44.8 0-6.4-6.4-12.8-19.2-19.2-32 0 0 12.8 0 19.2 0-6.4-19.2-25.6-19.2-25.6-32 6.4-6.4 12.8 0 19.2 0-6.4-12.8-19.2-19.2-32-32 0 0 6.4 0 19.2 0-6.4-12.8-19.2-19.2-32-25.6 0 0 12.8 0 19.2 0-12.8-12.8-25.6-19.2-44.8-25.6 6.4-6.4 12.8-6.4 19.2-6.4-12.8-6.4-25.6-12.8-44.8-19.2 0-6.4 6.4-6.4 12.8-6.4-19.2-12.8-44.8-6.4-51.2-12.8 0-6.4 6.4-6.4 12.8-12.8-25.6 0-102.4 0-121.6 57.6 25.6 32 83.2 70.4 172.8 115.2-70.4-25.6-134.4-51.2-185.6-96-57.6 25.6-19.2 102.4 12.8 128zM512 652.8c44.8 0 96-32 96-64 6.4-25.6-32-51.2-96-51.2-57.6 0-96 25.6-96 51.2s51.2 64 96 64zM473.6 371.2c-38.4-51.2-102.4-70.4-147.2-38.4-44.8 25.6-51.2 89.6-12.8 140.8s96 70.4 140.8 38.4c44.8-25.6 51.2-89.6 19.2-140.8zM256 697.6c6.4 0 12.8 0 19.2 6.4-12.8 6.4-25.6 12.8-38.4 25.6 6.4 0 12.8 0 19.2 0-19.2 12.8-25.6 19.2-38.4 32 12.8 0 12.8 0 19.2 0-12.8 12.8-25.6 19.2-32 32 6.4 0 12.8-6.4 19.2 0 0 6.4-12.8 12.8-25.6 32 6.4 0 19.2 0 19.2 0 0 12.8-6.4 19.2-12.8 32 19.2 0 44.8 0 44.8 0l-12.8 12.8c19.2 6.4 32 0 44.8-6.4 6.4 6.4 0 12.8-6.4 12.8 12.8 0 25.6-6.4 38.4-12.8 6.4 12.8 0 19.2-6.4 25.6 25.6-6.4 32-12.8 44.8-19.2 6.4 6.4 0 12.8-6.4 19.2 19.2-6.4 25.6-12.8 38.4-19.2 0 6.4 6.4 6.4 0 19.2 12.8-6.4 19.2-12.8 25.6-25.6 6.4 6.4 6.4 12.8 6.4 19.2 12.8-12.8 19.2-19.2 32-32 0-6.4 0 0 0 6.4 32-32 70.4-102.4 12.8-128-51.2 44.8-115.2 70.4-185.6 96 89.6-44.8 140.8-83.2 172.8-115.2-19.2-57.6-96-57.6-121.6-57.6 6.4 0 12.8 6.4 12.8 12.8-6.4 6.4-32 0-51.2 12.8 6.4 0 12.8 0 12.8 6.4-12.8 0-32 6.4-44.8 12.8zM396.8 633.6c32-6.4-140.8-160-147.2-128 0 89.6 64 140.8 147.2 128zM211.2 294.4c-44.8 32-57.6 128 25.6 172.8 44.8 12.8 12.8-192-25.6-172.8zM377.6 115.2c-25.6-12.8-83.2-6.4-128 51.2-25.6 51.2-25.6 102.4-6.4 115.2 32 19.2 76.8-6.4 108.8-44.8 38.4-38.4 51.2-102.4 25.6-121.6zM512 12.8c-51.2 0-102.4 44.8-102.4 57.6 0 25.6 64 38.4 108.8 38.4s102.4-12.8 102.4-32c0-19.2-57.6-64-108.8-64zM620.8 236.8c0-51.2-44.8-96-108.8-96-57.6 0-108.8 44.8-108.8 96 0 0 0 0 0 0 0 51.2 44.8 96 108.8 96 57.6 6.4 108.8-38.4 108.8-96 0 0 0 0 0 0zM768 160c-44.8-64-108.8-64-134.4-44.8-25.6 25.6-6.4 89.6 25.6 128 38.4 44.8 76.8 70.4 108.8 51.2 25.6-19.2 38.4-89.6 0-134.4zM812.8 294.4c-38.4-19.2-70.4 192-25.6 179.2 83.2-44.8 70.4-147.2 25.6-179.2z" />
<glyph unicode="&#xea28;" glyph-name="read" d="M576 832c-38.4 0-70.4-19.2-96-44.8-25.6 25.6-57.6 44.8-96 44.8h-384v-704h384c38.4 0 64-25.6 64-64h64c0 38.4 25.6 64 64 64h384v704h-384zM384 320h-256v64h256v-64zM384 448h-256v64h256v-64zM384 576h-256v64h256v-64zM832 320h-256v64h256v-64zM832 448h-256v64h256v-64zM832 576l-96 64-96-64v192h192v-192z" />
<glyph unicode="&#xea29;" glyph-name="read-l" d="M832 832h-256c-38.4 0-70.4-19.2-96-44.8-25.6 25.6-57.6 44.8-96 44.8h-384v-704h384c38.4 0 64-25.6 64-64h64c0 38.4 25.6 64 64 64h384v704h-128zM704 768h64v-70.4l-32 19.2-32-19.2v70.4zM384 192h-320v576h320c38.4 0 64-25.6 64-64v-531.2c-19.2 12.8-38.4 19.2-64 19.2zM896 192h-320c-25.6 0-44.8-6.4-64-19.2v531.2c0 38.4 25.6 64 64 64h64v-192l96 64 96-64v192h64v-576zM128 640h256v-64h-256v64zM128 512h256v-64h-256v64zM576 512h256v-64h-256v64zM128 384h256v-64h-256v64zM576 384h256v-64h-256v64z" />
<glyph unicode="&#xea2a;" glyph-name="red-envelope" d="M838.4 832v64h-640v-64l313.6-179.2zM512 576l-313.6 179.2v-755.2h640v761.6l-326.4-185.6zM672 384v-64h-128v-64h128v-64h-128v-128h-64v128h-128v64h128v64h-128v64h115.2l-128 128h89.6l83.2-83.2 83.2 83.2h89.6l-128-128h115.2z" />
<glyph unicode="&#xea2b;" glyph-name="renew" d="M819.2 480l-57.6-57.6c12.8-96-12.8-198.4-89.6-268.8-121.6-121.6-326.4-121.6-454.4 0-121.6 121.6-121.6 326.4 0 454.4 96 96 230.4 115.2 345.6 70.4l-160-160 44.8-44.8 230.4 230.4-230.4 224-44.8-44.8 121.6-121.6c-121.6 25.6-256-6.4-352-102.4-147.2-147.2-147.2-390.4 0-544 147.2-147.2 390.4-147.2 544 0 102.4 96 134.4 236.8 102.4 364.8z" />
<glyph unicode="&#xea2c;" glyph-name="right-clipboard" d="M704 768v64h-64c0 51.2-44.8 96-96 96s-96-44.8-96-96h-64v-64h-192v-768h704v768h-192zM448 768h64v64c0 19.2 12.8 32 32 32s32-12.8 32-32v-64h64v-64h-192v64zM480 211.2l-153.6 147.2 44.8 44.8 102.4-102.4 198.4 198.4 44.8-44.8-236.8-243.2z" />
<glyph unicode="&#xea2d;" glyph-name="right-clipboard-l" d="M704 768v64h-64c0 51.2-44.8 96-96 96s-96-44.8-96-96h-64v-64h-192v-768h704v768h-192zM448 768h64v64c0 19.2 12.8 32 32 32s32-12.8 32-32v-64h64v-64h-192v64zM832 64h-576v640h128v-64h320v64h128v-640zM480 300.8l-102.4 108.8-51.2-51.2 153.6-147.2 249.6 243.2-51.2 51.2z" />
<glyph unicode="&#xea2e;" glyph-name="robot" d="M1024 640h-128v128h-352v128h-64v-128h-352v-128h-128v-320h128v-128h224l-96-192h512l-96 192h224v128h128v320zM64 384v192h64v-192h-64zM832 256h-640v448h640v-448zM960 384h-64v192h64v-192zM256 320h512v320h-512v-320zM320 576h64v-64h-64v64zM640 576h64v-64h-64v64zM576 384h-128v64h128v-64z" />
<glyph unicode="&#xea2f;" glyph-name="robot2" d="M1024 640h-128v128h-352v128h-64v-128h-352v-128h-128v-320h128v-128h224l-96-192h512l-96 192h224v128h128v320zM64 384v192h64v-192h-64zM832 256h-640v448h640v-448zM960 384h-64v192h64v-192zM256 320h512v320h-512v-320zM320 576h64v-64h-64v64zM640 576h64v-64h-64v64zM576 384h-128v64h128v-64z" />
<glyph unicode="&#xea30;" glyph-name="robot2-l" d="M256 320h512v384h-512v-384zM320 640h384v-256h-128v64h-128v-64h-128v256zM1024 640h-128v192h-352v128h-64v-128h-352v-192h-128v-320h128v-128h224l-96-192h512l-96 192h224v128h128v320zM64 384v192h64v-192h-64zM665.6 64h-307.2l64 128h179.2l64-128zM832 256h-640v512h640v-512zM960 384h-64v192h64v-192zM384 576h64v-64h-64v64zM576 576h64v-64h-64v64z" />
<glyph unicode="&#xea31;" glyph-name="robot-l" d="M256 320h512v384h-512v-384zM320 640h384v-256h-128v64h-128v-64h-128v256zM1024 640h-128v192h-352v128h-64v-128h-352v-192h-128v-320h128v-128h224l-96-192h512l-96 192h224v128h128v320zM64 384v192h64v-192h-64zM665.6 64h-307.2l64 128h179.2l64-128zM832 256h-640v512h640v-512zM960 384h-64v192h64v-192zM384 576h64v-64h-64v64zM576 576h64v-64h-64v64z" />
<glyph unicode="&#xea32;" glyph-name="rocket" d="M499.2 108.8l-44.8 44.8-44.8-44.8 89.6-89.6 89.6 89.6-44.8 44.8zM441.6 236.8h121.6l64 307.2c6.4 44.8 0 89.6-25.6 128v0l-102.4 166.4-102.4-166.4c-25.6-38.4-32-83.2-25.6-128l70.4-307.2zM467.2 614.4h64v-64h-64v64zM326.4 428.8c-19.2-25.6-32-57.6-32-89.6v-204.8l83.2 64-51.2 230.4zM672 428.8v0l-51.2-224 83.2-64v198.4c0 32-12.8 64-32 89.6z" />
<glyph unicode="&#xea33;" glyph-name="rocket-l" d="M499.2 108.8l-44.8 44.8-44.8-44.8 89.6-89.6 89.6 89.6-44.8 44.8zM672 428.8l-32 38.4 12.8 70.4c12.8 51.2 0 108.8-25.6 153.6l-128 204.8-128-204.8c-32-44.8-38.4-102.4-25.6-153.6l12.8-70.4-32-38.4c-19.2-25.6-32-57.6-32-89.6v-204.8l102.4 83.2 6.4 6.4 6.4-25.6h172.8l6.4 25.6 6.4-6.4 102.4-83.2v204.8c6.4 32-6.4 64-25.6 89.6zM358.4 268.8v70.4c0 12.8 6.4 32 12.8 38.4l19.2-83.2-32-25.6zM595.2 550.4l-57.6-281.6h-70.4l-64 281.6c-6.4 38.4 0 76.8 19.2 108.8l76.8 121.6 76.8-128c19.2-32 25.6-64 19.2-102.4zM640 268.8l-32 25.6 12.8 89.6c12.8-12.8 19.2-25.6 19.2-44.8v-70.4zM467.2 614.4h64v-64h-64v64z" />
<glyph unicode="&#xea34;" glyph-name="rollerbrush" d="M896 448v256h-128v128h-704v-256h704v64h64v-134.4l-390.4-57.6-57.6-6.4v-121.6h-64v-320h192v320h-64v64l448 64zM704 704h-576v64h576v-64z" />
<glyph unicode="&#xea35;" glyph-name="rollerbrush-l" d="M896 448v256h-128v128h-704v-256h704v64h64v-134.4l-390.4-57.6-57.6-6.4v-121.6h-64v-320h192v320h-64v64l448 64zM128 640v128h576v-128h-576zM448 64h-64v192h64v-192z" />
<glyph unicode="&#xea36;" glyph-name="router" d="M768 832h64v-384h-64v384zM128 832h64v-384h-64v384zM64 384v-256h64v-64h128v64h448v-64h128v64h64v256h-832zM192 256h-64v64h64v-64zM320 256h-64v64h64v-64zM448 256h-64v64h64v-64zM832 256h-64v64h64v-64z" />
<glyph unicode="&#xea37;" glyph-name="router-l" d="M832 448v384h-64v-384h-576v384h-64v-384h-64v-320h832v320h-64zM832 192h-704v192h704v-192zM192 320h64v-64h-64v64zM320 320h64v-64h-64v64zM448 320h64v-64h-64v64zM704 320h64v-64h-64v64zM128 64h128v-64h-128v64zM704 64h128v-64h-128v64z" />
<glyph unicode="&#xea38;" glyph-name="rss" d="M185.6 236.8c-64 0-121.6-51.2-121.6-121.6 0-64 51.2-121.6 121.6-121.6v0c64 0 121.6 51.2 121.6 121.6 0 0 0 0 0 0-6.4 70.4-57.6 121.6-121.6 121.6zM64 588.8v-172.8c108.8 0 217.6-44.8 294.4-121.6s121.6-185.6 121.6-294.4h172.8c0 326.4-262.4 588.8-588.8 588.8zM64 896v-172.8c396.8 0 723.2-326.4 723.2-723.2h172.8c0 492.8-403.2 896-896 896z" />
<glyph unicode="&#xea39;" glyph-name="ruler" d="M256 896v-960h448v960h-448zM512 576v-64h-192v64h192zM320 640v64h128v-64h-128zM448 448v-64h-128v64h128zM512 320v-64h-192v64h192zM320 192h128v-64h-128v64z" />
<glyph unicode="&#xea3a;" glyph-name="ruler-l" d="M256 896v-960h448v960h-448zM640 0h-320v128h128v64h-128v64h192v64h-192v64h128v64h-128v64h192v64h-192v64h128v64h-128v128h320v-832z" />
<glyph unicode="&#xea3b;" glyph-name="save" d="M704 896h-134.4v-249.6h-384v249.6h-121.6v-832h896v576l-256 256zM889.6 121.6h-768v396.8h768v-396.8zM256 896h256v-192h-256v192z" />
<glyph unicode="&#xea3c;" glyph-name="save-l" d="M704 896h-640v-832h896v576l-256 256zM512 832v-128h-256v128h256zM896 128h-768v384h768v-384zM896 576h-768v256h64v-192h384v192h102.4l217.6-217.6v-38.4z" />
<glyph unicode="&#xea3d;" glyph-name="scan-l" d="M128 832h256v64h-320v-320h64zM576 896v-64h256v-256h64v320zM128 384h-64v-320h320v64h-256zM832 128h-256v-64h320v320h-64zM64 512h832v-64h-832v64z" />
<glyph unicode="&#xea3e;" glyph-name="scissors" d="M793.6 729.6l-44.8 44.8-288-281.6-102.4 102.4c19.2 25.6 25.6 51.2 25.6 83.2 0 83.2-70.4 153.6-153.6 153.6s-153.6-70.4-153.6-153.6c0-83.2 70.4-153.6 153.6-153.6 32 0 57.6 6.4 83.2 25.6l102.4-102.4-102.4-102.4c-25.6 19.2-51.2 25.6-83.2 25.6-83.2 0-153.6-70.4-153.6-153.6s70.4-153.6 153.6-153.6c83.2 0 153.6 70.4 153.6 153.6 0 32-6.4 57.6-25.6 83.2l102.4 102.4 281.6-281.6 44.8 44.8-281.6 281.6 288 281.6zM140.8 678.4c0 51.2 38.4 89.6 89.6 89.6s89.6-38.4 89.6-89.6c0-51.2-38.4-89.6-89.6-89.6s-89.6 38.4-89.6 89.6zM230.4 128c-51.2 0-89.6 38.4-89.6 89.6s38.4 89.6 89.6 89.6c51.2 0 89.6-38.4 89.6-89.6s-38.4-89.6-89.6-89.6z" />
<glyph unicode="&#xea3f;" glyph-name="sdcard" d="M192 896v-320l-128-128v-448h832v896h-704zM384 576h-64v192h64v-192zM512 576h-64v192h64v-192zM640 576h-64v192h64v-192zM768 576h-64v192h64v-192z" />
<glyph unicode="&#xea40;" glyph-name="sdcard-l" d="M192 896v-320l-128-128v-448h832v896h-704zM832 64h-704v358.4l128 128v281.6h576v-768zM448 768h64v-192h-64v192zM320 768h64v-192h-64v192zM576 768h64v-192h-64v192zM704 768h64v-192h-64v192z" />
<glyph unicode="&#xea41;" glyph-name="search-l" d="M1011.2-6.4l-243.2 243.2c64 76.8 108.8 172.8 108.8 281.6 0 243.2-198.4 435.2-435.2 435.2s-441.6-192-441.6-428.8c0-243.2 198.4-435.2 435.2-435.2 108.8 0 211.2 38.4 281.6 108.8l243.2-243.2 51.2 38.4zM64 524.8c0 204.8 166.4 371.2 371.2 371.2s371.2-166.4 371.2-371.2-166.4-371.2-371.2-371.2-371.2 166.4-371.2 371.2z" />
<glyph unicode="&#xea42;" glyph-name="server" d="M64 768v-320h896v320h-896zM640 576v64h64v-64h-64zM768 576v64h64v-64h-64zM64 64h896v320h-896v-320zM192 192v64h64v-64h-64zM320 192v64h64v-64h-64z" />
<glyph unicode="&#xea43;" glyph-name="server-l" d="M64 768v-320h896v320h-896zM896 512h-768v192h768v-192zM64 64h896v320h-896v-320zM128 320h768v-192h-768v192zM768 640h64v-64h-64v64zM640 640h64v-64h-64v64zM320 256h64v-64h-64v64zM192 256h64v-64h-64v64z" />
<glyph unicode="&#xea44;" glyph-name="servers" d="M64 768v-192h896v192h-896zM128 640v64h448v-64h-448zM896 640h-64v64h64v-64zM64 320h896v192h-896v-192zM896 448v-64h-448v64h448zM128 448h64v-64h-64v64zM64 64h896v192h-896v-192zM896 192v-64h-64v64h64zM128 192h448v-64h-448v64z" />
<glyph unicode="&#xea45;" glyph-name="setting" d="M1011.2 537.6c-19.2-6.4-32-6.4-51.2-6.4-51.2 0-102.4 25.6-134.4 76.8-38.4 64-19.2 147.2 32 192-51.2 51.2-121.6 89.6-192 115.2-12.8-70.4-76.8-128-153.6-128-70.4 0-134.4 57.6-147.2 128-70.4-19.2-140.8-57.6-198.4-108.8 64-44.8 83.2-134.4 38.4-198.4-25.6-51.2-76.8-76.8-128-76.8-19.2 0-44.8 6.4-64 12.8-6.4-38.4-12.8-76.8-12.8-115.2s6.4-76.8 12.8-115.2c19.2 6.4 44.8 12.8 64 12.8 51.2 0 102.4-25.6 134.4-76.8 38.4-70.4 19.2-153.6-38.4-198.4 51.2-51.2 121.6-96 192-115.2 12.8 76.8 76.8 134.4 153.6 134.4s140.8-57.6 153.6-128c70.4 25.6 140.8 64 192 115.2-57.6 44.8-70.4 128-32 192 25.6 51.2 83.2 76.8 134.4 76.8 19.2 0 32 0 51.2-6.4 0 32 6.4 70.4 6.4 108.8s-6.4 76.8-12.8 108.8zM640 422.4c0-70.4-57.6-128-128-128s-128 57.6-128 128c0 70.4 57.6 128 128 128s128-57.6 128-128z" />
<glyph unicode="&#xea46;" glyph-name="setting-l" d="M512 620.8c-108.8 0-192-89.6-192-192 0-108.8 89.6-192 192-192s192 89.6 192 192c0 102.4-83.2 192-192 192zM512 294.4c-70.4 0-128 57.6-128 128s57.6 128 128 128 128-57.6 128-128c0-70.4-57.6-128-128-128zM1011.2 537.6c-19.2-6.4-32-6.4-51.2-6.4-51.2 0-102.4 25.6-134.4 76.8-38.4 64-19.2 147.2 32 192-51.2 51.2-121.6 89.6-192 115.2-12.8-70.4-76.8-128-153.6-128s-140.8 57.6-153.6 134.4c-64-25.6-134.4-64-192-115.2 64-44.8 83.2-134.4 38.4-198.4-25.6-51.2-76.8-76.8-128-76.8-19.2 0-44.8 6.4-64 12.8-6.4-38.4-12.8-76.8-12.8-115.2 0-44.8 6.4-83.2 12.8-115.2 19.2 6.4 44.8 12.8 64 12.8 51.2 0 102.4-25.6 134.4-76.8 38.4-70.4 19.2-153.6-38.4-198.4 51.2-51.2 121.6-96 192-115.2 12.8 76.8 76.8 134.4 153.6 134.4s140.8-57.6 153.6-128c70.4 25.6 140.8 64 192 115.2-57.6 44.8-70.4 128-32 192 25.6 51.2 83.2 76.8 134.4 76.8 19.2 0 32 0 51.2-6.4 0 32 6.4 70.4 6.4 108.8s-6.4 70.4-12.8 108.8zM960 390.4c-76.8 0-147.2-44.8-185.6-108.8-38.4-70.4-38.4-153.6 0-217.6-19.2-12.8-44.8-25.6-64-38.4-38.4 64-108.8 108.8-185.6 108.8-83.2 0-153.6-44.8-192-115.2-25.6 12.8-44.8 25.6-70.4 38.4 38.4 64 44.8 153.6 6.4 224-38.4 64-108.8 108.8-185.6 108.8-6.4 0-6.4 0-12.8 0 0 12.8 0 25.6 0 38.4s0 25.6 0 38.4c6.4 0 6.4 0 12.8 0 76.8 0 147.2 38.4 185.6 108.8s38.4 153.6-6.4 224c19.2 12.8 44.8 25.6 70.4 38.4 38.4-70.4 108.8-115.2 192-115.2 76.8 0 153.6 44.8 185.6 108.8 25.6-12.8 44.8-25.6 64-38.4-38.4-64-38.4-147.2 0-217.6 38.4-64 108.8-108.8 185.6-108.8 0-12.8 0-25.6 0-38.4s0-25.6 0-38.4z" />
<glyph unicode="&#xea47;" glyph-name="share" d="M832 384v-320h-704v704h320v64h-384v-832h832v384zM224 128h64c0 262.4 204.8 473.6 467.2 480l-140.8-134.4 44.8-44.8 217.6 211.2-217.6 217.6-44.8-51.2 140.8-140.8c-294.4 0-531.2-243.2-531.2-537.6z" />
<glyph unicode="&#xea48;" glyph-name="shield" d="M755.2 876.8c-153.6 51.2-326.4 51.2-480 0l-147.2-44.8v-512l384-384 384 384v512l-140.8 44.8zM832 339.2l-320-320-320 320v422.4l121.6 38.4c64 19.2 134.4 32 198.4 32s134.4-12.8 198.4-32l121.6-38.4v-422.4zM512 774.4c-64 0-121.6-12.8-179.2-32l-76.8-25.6v-352l256-256 256 256v352l-76.8 25.6c-57.6 19.2-115.2 32-179.2 32zM460.8 384l-140.8 140.8 44.8 44.8 96-96 224 230.4 44.8-44.8-268.8-275.2z" />
<glyph unicode="&#xea49;" glyph-name="shield-l" d="M755.2 876.8c-83.2 32-160 44.8-243.2 44.8s-160-12.8-236.8-44.8l-147.2-44.8v-512l384-384 384 384v512l-140.8 44.8zM832 345.6l-320-320-320 320v441.6l102.4 32c70.4 25.6 140.8 38.4 217.6 38.4s147.2-12.8 217.6-38.4l102.4-32v-441.6zM460.8 473.6l-96 96-44.8-44.8 140.8-140.8 268.8 275.2-44.8 44.8z" />
<glyph unicode="&#xea4a;" glyph-name="shop" d="M832 768v64h-640v-64l-128-128v-128h128v128h64v-128h128v128h64v-128h128v128h64v-128h128v128h64v-128h128v128zM192 448v-384h320v256h192v-256h128v384z" />
<glyph unicode="&#xea4b;" glyph-name="shop-l" d="M960 640l-128 128v64h-640v-64l-128-128v-192h128v-384h320v192h128v-192h192v384h128v192zM768 128h-64v192h-256v-192h-192v320h512v-320zM896 512h-64v128h-64v-128h-128v128h-64v-128h-128v128h-64v-128h-128v128h-64v-128h-64v102.4l128 128v25.6h512v-25.6l128-128v-102.4z" />
<glyph unicode="&#xea4c;" glyph-name="shopping-cart" d="M384 64h64v-64h-64v64zM640 64h64v-64h-64v64zM268.8 704l-12.8 76.8-12.8 51.2h-179.2v-64h128l128-640h448v64h-396.8l-25.6 128h486.4l64 384z" />
<glyph unicode="&#xea4d;" glyph-name="shopping-cart-l" d="M384 64h64v-64h-64v64zM640 64h64v-64h-64v64zM896 704h-627.2l-12.8 76.8-12.8 51.2h-179.2v-64h128l128-640h448v64h-396.8l-25.6 128h486.4l64 384zM780.8 384h-448l-51.2 256h537.6l-38.4-256z" />
<glyph unicode="&#xea4e;" glyph-name="site-folder" d="M640 384c0-70.692-57.308-128-128-128s-128 57.308-128 128c0 70.692 57.308 128 128 128s128-57.308 128-128zM512 704l-128 128h-320v-768h896v640h-448zM512 192c-108.8 0-192 83.2-192 192s83.2 192 192 192 192-83.2 192-192-83.2-192-192-192z" />
<glyph unicode="&#xea4f;" glyph-name="site-folder-l" d="M512 704l-128 128h-320v-768h896v640h-448zM896 128h-768v640h230.4l128-128h409.6v-512zM320 384c0-108.8 83.2-192 192-192s192 83.2 192 192-83.2 192-192 192-192-83.2-192-192zM640 384c0-70.4-57.6-128-128-128s-128 57.6-128 128c0 70.4 57.6 128 128 128s128-57.6 128-128z" />
<glyph unicode="&#xea50;" glyph-name="slider-l" d="M729.6 851.2c-19.2 44.8-57.6 76.8-108.8 76.8-44.8 0-89.6-32-102.4-76.8h-518.4v-64h518.4c12.8-44.8 57.6-76.8 102.4-76.8 51.2 0 89.6 32 102.4 76.8h300.8v64h-294.4zM620.8 774.4c-25.6 0-44.8 19.2-44.8 44.8s19.2 44.8 44.8 44.8 44.8-19.2 44.8-44.8c0-25.6-19.2-44.8-44.8-44.8zM684.8 185.6c-51.2 0-89.6-32-102.4-76.8h-582.4v-64h582.4c12.8-44.8 57.6-76.8 102.4-76.8 51.2 0 89.6 32 102.4 76.8h236.8v64h-230.4c-19.2 44.8-57.6 76.8-108.8 76.8zM684.8 32c-25.6 0-44.8 19.2-44.8 44.8s19.2 44.8 44.8 44.8 44.8-19.2 44.8-44.8-19.2-44.8-44.8-44.8zM307.2 544c-51.2 0-89.6-32-102.4-76.8h-204.8v-64h204.8c12.8-44.8 51.2-76.8 102.4-76.8s89.6 32 102.4 76.8h614.4v64h-614.4c-12.8 44.8-51.2 76.8-102.4 76.8zM307.2 390.4c-25.6 0-44.8 19.2-44.8 44.8s19.2 44.8 44.8 44.8 44.8-19.2 44.8-44.8c0-25.6-19.2-44.8-44.8-44.8z" />
<glyph unicode="&#xea51;" glyph-name="square" d="M768 704v-512h-512v512h512zM896 832h-768v-768h768v768z" />
<glyph unicode="&#xea52;" glyph-name="square-l" d="M832 736v-640h-640v640h640zM896 800h-768v-768h768v768z" />
<glyph unicode="&#xea53;" glyph-name="square-o" d="M128 800h768v-768h-768v768z" />
<glyph unicode="&#xea54;" glyph-name="star" d="M512 960l160-320 352-51.2-256-249.6 57.6-352-313.6 166.4-313.6-166.4 57.6 352-256 249.6 352 51.2z" />
<glyph unicode="&#xea55;" glyph-name="star-l" d="M512 812.8l102.4-204.8 12.8-32h32l224-32-185.6-185.6 6.4-32 38.4-224-204.8 108.8-25.6 12.8-32-12.8-204.8-108.8 51.2 256-25.6 25.6-166.4 160 230.4 32 32 6.4 12.8 32 102.4 198.4zM512 960l-160-320-352-51.2 256-249.6-57.6-352 313.6 166.4 313.6-166.4-57.6 352 256 249.6-352 51.2-160 320z" />
<glyph unicode="&#xea56;" glyph-name="steam" d="M825.6 614.4c0 38.4-12.8 64-38.4 89.6s-57.6 38.4-89.6 38.4c-38.4 0-64-12.8-89.6-38.4s-38.4-57.6-38.4-89.6c0-38.4 12.8-64 38.4-89.6s57.6-38.4 89.6-38.4c38.4 0 64 12.8 89.6 38.4s38.4 51.2 38.4 89.6zM422.4 224c0-38.4-12.8-70.4-38.4-96s-57.6-38.4-96-38.4c-25.6 0-44.8 6.4-70.4 19.2s-38.4 32-51.2 51.2c25.6-6.4 44.8-19.2 64-25.6 25.6-12.8 51.2-12.8 83.2 0 25.6 12.8 44.8 32 57.6 57.6s12.8 51.2 0 83.2-25.6 44.8-57.6 51.2l-51.2 25.6c12.8 0 19.2 6.4 25.6 6.4 38.4 0 70.4-12.8 96-38.4 25.6-32 38.4-64 38.4-96zM1024 768v-640c0-51.2-19.2-96-57.6-134.4s-83.2-57.6-134.4-57.6h-640c-51.2 0-96 19.2-134.4 57.6s-57.6 83.2-57.6 134.4v102.4l115.2-44.8c6.4-38.4 32-76.8 64-102.4s70.4-38.4 115.2-38.4c44.8 0 89.6 12.8 121.6 44.8s51.2 70.4 57.6 115.2l230.4 166.4c64 0 121.6 25.6 172.8 70.4 44.8 44.8 70.4 102.4 70.4 172.8 0 64-25.6 121.6-70.4 172.8s-102.4 70.4-172.8 70.4c-70.4-6.4-128-25.6-172.8-76.8s-70.4-102.4-70.4-166.4l-153.6-211.2c-6.4 0-12.8 0-19.2 0-32 0-64-6.4-89.6-25.6l-198.4 76.8v313.6c0 51.2 19.2 96 57.6 134.4s83.2 57.6 134.4 57.6h640c51.2 0 96-19.2 134.4-57.6s57.6-83.2 57.6-134.4v0zM857.6 614.4c0-44.8-12.8-83.2-44.8-115.2s-70.4-44.8-115.2-44.8c-44.8 0-83.2 12.8-115.2 44.8s-44.8 70.4-44.8 115.2c0 44.8 12.8 83.2 44.8 115.2s70.4 44.8 115.2 44.8c44.8 0 83.2-12.8 115.2-44.8s44.8-70.4 44.8-115.2v0z" />
<glyph unicode="&#xea57;" glyph-name="storage" d="M64 320v-320h896v320h-896zM768 128v64h64v-64h-64zM192 128v64h448v-64h-448zM832 896h-640l-102.4-512h844.8l-102.4 512zM480 832h64v-243.2l70.4 70.4 44.8-44.8-147.2-147.2-153.6 147.2 44.8 44.8 76.8-70.4v243.2z" />
<glyph unicode="&#xea58;" glyph-name="storage-l" d="M947.2 384l-115.2 512h-640l-115.2-512-12.8-64v-256h896v256l-12.8 64zM243.2 832h537.6l102.4-448h-742.4l102.4 448zM896 128h-768v192h768v-192zM768 256h64v-64h-64v64zM192 256h448v-64h-448v64zM544 588.8v179.2h-64v-179.2l-70.4 76.8-51.2-51.2 153.6-147.2 153.6 147.2-51.2 51.2z" />
<glyph unicode="&#xea59;" glyph-name="sun" d="M768 448c0-141.385-114.615-256-256-256s-256 114.615-256 256c0 141.385 114.615 256 256 256s256-114.615 256-256zM480 896h64v-128h-64v128zM480 128h64v-128h-64v128zM832 480h128v-64h-128v64zM64 480h128v-64h-128v64zM715.645 693.036l90.509 90.509 45.254-45.254-90.509-90.509-45.254 45.254zM172.579 157.709l90.509 90.509 45.254-45.254-90.509-90.509-45.254 45.254zM711.775 199.094l45.254 45.254 90.509-90.509-45.254-45.254-90.509 90.509zM176.449 742.16l45.254 45.254 90.509-90.509-45.254-45.254-90.509 90.509z" />
<glyph unicode="&#xea5a;" glyph-name="sun-l" d="M512 704c-140.8 0-256-115.2-256-256s115.2-256 256-256c140.8 0 256 115.2 256 256s-115.2 256-256 256zM512 256c-108.8 0-192 83.2-192 192s83.2 192 192 192c108.8 0 192-83.2 192-192s-83.2-192-192-192zM480 896h64v-128h-64v128zM480 128h64v-128h-64v128zM832 480h128v-64h-128v64zM64 480h128v-64h-128v64zM715.645 693.036l90.509 90.509 45.254-45.254-90.509-90.509-45.254 45.254zM172.579 157.709l90.509 90.509 45.254-45.254-90.509-90.509-45.254 45.254zM711.775 199.094l45.254 45.254 90.509-90.509-45.254-45.254-90.509 90.509zM176.449 742.16l45.254 45.254 90.509-90.509-45.254-45.254-90.509 90.509z" />
<glyph unicode="&#xea5b;" glyph-name="sword" d="M646.4 192l57.6 576-192 192-192-192 57.6-576h-121.6v-64h192v-128h-64v-64h256v64h-64v128h192v64h-121.6zM544 256h-64v448h64v-448z" />
<glyph unicode="&#xea5c;" glyph-name="sword-l" d="M646.4 192l57.6 576-192 192-192-192 57.6-576h-121.6v-64h192v-128h-64v-64h256v64h-64v128h192v64h-121.6zM582.4 192v0h-140.8l-57.6 550.4 128 128 128-128-57.6-550.4zM480 704h64v-448h-64v448z" />
<glyph unicode="&#xea5d;" glyph-name="tab" d="M64 640h960v-640h-960v640zM64 896v-192h960v192h-960zM704 768h-64v64h64v-64zM832 768h-64v64h64v-64zM960 768h-64v64h64v-64z" />
<glyph unicode="&#xea5e;" glyph-name="tab-l" d="M64 896v-896h960v896h-960zM960 64h-832v576h832v-576zM960 704h-64v64h-64v-64h-64v64h-64v-64h-64v64h-64v-64h-448v128h832v-128z" />
<glyph unicode="&#xea5f;" glyph-name="tag" d="M409.6 512c19.2 0 32 12.8 32 32s-12.8 32-32 32c-19.2 0-32-12.8-32-32s12.8-32 32-32zM512 832h-384v-384l512-512 384 384-512 512zM409.6 640c51.2 0 96-44.8 96-96s-38.4-96-96-96c-51.2 0-96 44.8-96 96s44.8 96 96 96z" />
<glyph unicode="&#xea60;" glyph-name="tag-l" d="M512 832h-384v-384l512-512 384 384-512 512zM192 473.6v294.4h294.4l448-448-294.4-294.4-448 448zM409.6 640c-51.2 0-96-44.8-96-96s44.8-96 96-96 96 44.8 96 96-38.4 96-96 96zM409.6 512c-12.8 0-32 12.8-32 32s19.2 32 32 32 32-12.8 32-32-12.8-32-32-32z" />
<glyph unicode="&#xea61;" glyph-name="taiji" d="M563.2 652.8c0-28.277-22.923-51.2-51.2-51.2s-51.2 22.923-51.2 51.2c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2zM512 928c-262.4 0-480-217.6-480-480s217.6-480 480-480 480 217.6 480 480-217.6 480-480 480zM102.4 448c0 224 179.2 409.6 409.6 409.6 115.2 0 204.8-89.6 204.8-204.8s-89.6-204.8-204.8-204.8-204.8-89.6-204.8-204.8 89.6-204.8 204.8-204.8c-224 0-409.6 185.6-409.6 409.6zM563.2 243.2c0-25.6-19.2-51.2-51.2-51.2s-51.2 25.6-51.2 51.2c0 32 25.6 51.2 51.2 51.2s51.2-19.2 51.2-51.2z" />
<glyph unicode="&#xea62;" glyph-name="talk" d="M64 832v-704h512l256-192v192h128v704h-896zM256 448v64h384v-64h-384zM640 384v-64h-384v64h384zM256 576v64h512v-64h-512z" />
<glyph unicode="&#xea63;" glyph-name="talk-l" d="M64 832v-704h512l256-192v192h128v704h-896zM896 192h-128v-128l-153.6 115.2-19.2 12.8h-467.2v576h768v-576zM256 640h512v-64h-512v64zM256 512h384v-64h-384v64zM256 384h384v-64h-384v64z" />
<glyph unicode="&#xea64;" glyph-name="taobao" d="M102.4 614.4l-57.6-89.6 108.8-64c0 0 70.4-38.4 38.4-102.4s-185.6-204.8-185.6-204.8l140.8-89.6c96 211.2 89.6 179.2 115.2 256 19.2 70.4 19.2 128-19.2 172.8-57.6 51.2-64 57.6-140.8 121.6zM460.8 723.2c19.2 38.4 32 64 32 64l-128 38.4c0 0-51.2-166.4-147.2-249.6 0 0 89.6-51.2 89.6-51.2 25.6 25.6 51.2 51.2 70.4 76.8 19.2 6.4 38.4 19.2 57.6 25.6-25.6-44.8-64-108.8-102.4-147.2l51.2-44.8c0 0 38.4 38.4 76.8 76.8h51.2v-76.8h-179.2v-64h179.2v-153.6c0 0-6.4 0-6.4 0-19.2 0-51.2 6.4-64 25.6-12.8 25.6-6.4 64-6.4 89.6h-121.6c0 0-44.8-204.8 128-198.4 166.4-6.4 262.4 44.8 307.2 83.2l19.2-70.4 102.4 44.8-70.4 166.4-83.2-25.6 12.8-57.6c-19.2-12.8-44.8-25.6-70.4-38.4v134.4h172.8v64h-172.8v76.8h179.2v64h-313.6c19.2 25.6 38.4 51.2 44.8 64l-57.6 19.2c236.8 83.2 364.8 70.4 364.8-70.4v-364.8c0 0 12.8-121.6-128-115.2l-76.8 19.2-19.2-70.4c0 0 332.8-96 358.4 160s-6.4 416-6.4 416-25.6 236.8-544 89.6zM179.2 646.4c51.2 0 89.6 38.4 89.6 89.6s-38.4 89.6-89.6 89.6-96-38.4-96-89.6c0-51.2 44.8-89.6 96-89.6z" />
<glyph unicode="&#xea65;" glyph-name="t-brian" d="M448 364.8h-179.2c-6.4-38.4-38.4-64-76.8-64-44.8 0-83.2 38.4-83.2 83.2s38.4 83.2 83.2 83.2c38.4 0 70.4-25.6 76.8-64h179.2v89.6h-147.2v70.4c-38.4 6.4-64 38.4-64 76.8 0 44.8 38.4 83.2 83.2 83.2s83.2-38.4 83.2-83.2c0-38.4-25.6-70.4-64-76.8v-32h108.8v211.2c0 57.6-51.2 108.8-108.8 108.8-83.2 0-147.2-64-147.2-147.2l-12.8-6.4c-108.8-32-179.2-134.4-179.2-249.6v-115.2c0-38.4 6.4-83.2 19.2-121.6h224c6.4 38.4 38.4 64 76.8 64 44.8 0 83.2-38.4 83.2-83.2s-38.4-83.2-83.2-83.2c-38.4 0-70.4 25.6-76.8 64h-211.2c25.6-64 89.6-108.8 160-108.8 0-76.8 51.2-128 128-128 70.4 0 128 57.6 128 128v300.8zM364.8 192c0-24.742-20.058-44.8-44.8-44.8s-44.8 20.058-44.8 44.8c0 24.742 20.058 44.8 44.8 44.8s44.8-20.058 44.8-44.8zM236.8 384c0-24.742-20.058-44.8-44.8-44.8s-44.8 20.058-44.8 44.8c0 24.742 20.058 44.8 44.8 44.8s44.8-20.058 44.8-44.8zM364.8 640c0-24.742-20.058-44.8-44.8-44.8s-44.8 20.058-44.8 44.8c0 24.742 20.058 44.8 44.8 44.8s44.8-20.058 44.8-44.8zM684.8 128c0-24.742-20.058-44.8-44.8-44.8s-44.8 20.058-44.8 44.8c0 24.742 20.058 44.8 44.8 44.8s44.8-20.058 44.8-44.8zM851.2 665.6v-108.8h-134.4c-6.4-38.4-38.4-64-76.8-64-44.8 0-83.2 38.4-83.2 83.2s38.4 83.2 83.2 83.2c38.4 0 70.4-25.6 76.8-64h96v89.6c-12.8 6.4-25.6 12.8-32 12.8l-12.8 6.4c0 83.2-64 147.2-147.2 147.2-57.6 0-108.8-51.2-108.8-108.8v-339.2h179.2c6.4 38.4 38.4 64 76.8 64 44.8 0 83.2-38.4 83.2-83.2s-38.4-83.2-83.2-83.2c-38.4 0-70.4 25.6-76.8 64h-179.2v-89.6h147.2v-70.4c38.4-6.4 64-38.4 64-76.8 0-44.8-38.4-83.2-83.2-83.2s-83.2 38.4-83.2 83.2c0 38.4 25.6 70.4 64 76.8v32h-108.8v-172.8c0-70.4 57.6-128 128-128 76.8 0 128 51.2 128 128 76.8 0 147.2 51.2 166.4 121.6 12.8 44.8 25.6 96 25.6 147.2v115.2c0 89.6-44.8 166.4-108.8 217.6zM684.8 576c0-24.742-20.058-44.8-44.8-44.8s-44.8 20.058-44.8 44.8c0 24.742 20.058 44.8 44.8 44.8s44.8-20.058 44.8-44.8zM812.8 384c0-24.742-20.058-44.8-44.8-44.8s-44.8 20.058-44.8 44.8c0 24.742 20.058 44.8 44.8 44.8s44.8-20.058 44.8-44.8z" />
<glyph unicode="&#xea66;" glyph-name="telegram" d="M921.6 825.6c-6.4 0-12.8 0-19.2-6.4l-793.6-307.2c-57.6-19.2-57.6-51.2-12.8-64l204.8-64 70.4-230.4c6.4-19.2 6.4-32 12.8-32l-44.8 249.6 505.6 352-428.8-390.4-12.8-211.2c19.2 0 32 6.4 38.4 19.2l57.6 57.6-83.2 128 313.6-230.4 19.2-12.8c12.8-6.4 25.6-12.8 32-12.8 19.2 0 32 12.8 38.4 44.8l134.4 640c12.8 44.8-6.4 70.4-32 70.4z" />
<glyph unicode="&#xea67;" glyph-name="text-l" d="M64 896v-192h64v128h320v64zM512 896v-64h384v-128h64v192zM256 64h192v-64h-192v64zM512 64h192v-64h-192v64zM448 832h64v-768h-64v768z" />
<glyph unicode="&#xea68;" glyph-name="thumbs-up" d="M64 576h256v-512h-256v512zM774.4 576h-134.4v192c0 0 0 128-128 128 0-320-128-320-128-320v-512h384l128 339.2c32 83.2-32 172.8-121.6 172.8z" />
<glyph unicode="&#xea69;" glyph-name="thumbs-up-l" d="M64 64h256v512h-256v-512zM128 512h128v-384h-128v384zM774.4 576h-134.4v192c0 0 0 128-128 128-64 0-64 0-64 0 0-320-64-320-64-320v-512h384l128 339.2c32 83.2-32 172.8-121.6 172.8zM838.4 422.4l-115.2-294.4h-275.2v416c44.8 57.6 57.6 172.8 64 288v0c51.2 0 64-38.4 64-64v-256h198.4c19.2 0 38.4-12.8 51.2-25.6s19.2-38.4 12.8-64z" />
<glyph unicode="&#xea6a;" glyph-name="ticket" d="M1024 576v128h-960v-128c70.4 0 128-57.6 128-128s-57.6-128-128-128v-128h576v64h64v-64h320v128c-70.4 0-128 57.6-128 128s57.6 128 128 128zM704 320h-64v64h64v-64zM704 448h-64v64h64v-64zM704 576h-64v64h64v-64z" />
<glyph unicode="&#xea6b;" glyph-name="ticket-l" d="M1024 576v128h-960v-128c70.4 0 128-57.6 128-128s-57.6-128-128-128v-128h960v128c-70.4 0-128 57.6-128 128s57.6 128 128 128zM960 268.8v-12.8h-256v64h-64v-64h-512v12.8c76.8 25.6 128 96 128 179.2s-51.2 153.6-128 179.2v12.8h832v-12.8c-76.8-25.6-128-96-128-179.2s51.2-153.6 128-179.2zM640 576h64v-64h-64v64zM640 448h64v-64h-64v64z" />
<glyph unicode="&#xea6c;" glyph-name="time" d="M512 896c-249.6 0-448-198.4-448-448s198.4-448 448-448 448 198.4 448 448-198.4 448-448 448zM768 480v-64h-288v288h64v-224h224z" />
<glyph unicode="&#xea6d;" glyph-name="time-l" d="M512 896c-249.6 0-448-198.4-448-448s198.4-448 448-448 448 198.4 448 448c0 249.6-198.4 448-448 448zM512 64c-211.2 0-384 172.8-384 384s172.8 384 384 384 384-172.8 384-384-172.8-384-384-384zM544 704h-64v-288h288v64h-224z" />
<glyph unicode="&#xea6e;" glyph-name="tmall" d="M921.6 716.8c-12.8 6.4-19.2 6.4-25.6 6.4s-12.8 0-25.6-6.4c-6.4-6.4-12.8-6.4-19.2-12.8s-6.4-6.4-12.8-12.8c0 0-6.4-6.4-6.4-6.4-12.8-19.2-25.6-32-38.4-38.4-6.4-6.4-19.2-19.2-38.4-32s-32-25.6-51.2-25.6c-19.2-6.4-38.4-6.4-57.6-6.4h-275.2c-19.2-12.8-32-12.8-51.2-6.4s-32 12.8-44.8 19.2c-6.4 6.4-19.2 12.8-38.4 32-12.8 12.8-19.2 19.2-25.6 25.6s-19.2 19.2-32 38.4c-6.4 6.4-12.8 12.8-32 25.6-12.8 6.4-32 6.4-44.8 0-25.6-19.2-38.4-57.6-38.4-115.2v0 0-211.2c0-25.6 6.4-44.8 19.2-51.2 6.4-12.8 25.6-19.2 44.8-19.2 0 0 0 0 6.4 0h755.2c6.4 0 6.4 0 6.4 0 19.2 0 32 6.4 44.8 19.2s19.2 32 19.2 51.2v204.8c0 64-12.8 102.4-38.4 121.6zM230.4 364.8c-25.6 6.4-44.8 19.2-64 32-19.2 19.2-25.6 38.4-25.6 64s12.8 51.2 32 70.4c19.2 19.2 44.8 32 70.4 32-6.4 0-12.8-12.8-19.2-32-12.8-19.2-19.2-38.4-19.2-64 0-51.2 12.8-83.2 25.6-102.4zM313.6 396.8c-19.2-12.8-38.4-25.6-64-32 6.4 6.4 12.8 19.2 12.8 38.4 6.4 19.2 6.4 38.4 6.4 64s0 51.2-6.4 70.4c-6.4 12.8-12.8 25.6-19.2 25.6 25.6 0 51.2-12.8 70.4-32s25.6-44.8 25.6-70.4c0-19.2-6.4-44.8-25.6-64zM486.4 480c0 0 6.4 6.4 12.8 6.4h38.4c6.4 0 12.8 0 12.8-6.4 0 0 0-6.4 0-6.4l-19.2-12.8-12.8-19.2c0 0-6.4 0-6.4 0-6.4 0-6.4 0-6.4 0s0 0-6.4 6.4c0 0-6.4 6.4-6.4 6.4s-6.4 6.4-6.4 6.4l-6.4 12.8c0 0 0 6.4 6.4 6.4zM620.8 352c-6.4-6.4-12.8-12.8-25.6-12.8s-25.6 0-44.8 0c-12.8 6.4-25.6 12.8-32 25.6 0 0 0 0 0 0s-6.4 0-6.4 0c0 0-6.4 0-6.4 0s0 0 0 0c-6.4-12.8-19.2-19.2-32-25.6s-25.6-6.4-38.4 0c-12.8 0-19.2 6.4-25.6 12.8v12.8c6.4-6.4 12.8-6.4 19.2-12.8 12.8-6.4 19.2-6.4 32 0 12.8 0 25.6 6.4 32 19.2 6.4 6.4 6.4 19.2 6.4 25.6s0 12.8 0 19.2h19.2c0-6.4 0-12.8 0-19.2 0 0 0-6.4 6.4-12.8 0-6.4 0-12.8 6.4-12.8 6.4-12.8 19.2-19.2 32-19.2s25.6 0 32 0c12.8 0 19.2 6.4 19.2 12.8l6.4-12.8zM774.4 364.8c-25.6 6.4-44.8 12.8-64 32s-25.6 38.4-25.6 64c0 25.6 12.8 51.2 32 70.4s44.8 32 70.4 32c-6.4 0-19.2-12.8-19.2-32-6.4-19.2-6.4-38.4-6.4-70.4-6.4-44.8 0-76.8 12.8-96zM857.6 396.8c-19.2-19.2-38.4-32-64-32 6.4 6.4 12.8 19.2 19.2 38.4s6.4 38.4 6.4 64c0 25.6 0 51.2-6.4 70.4s-12.8 32-19.2 32c25.6 0 51.2-12.8 70.4-32s25.6-44.8 25.6-70.4c-6.4-25.6-12.8-51.2-32-70.4z" />
<glyph unicode="&#xea6f;" glyph-name="transmission-l" d="M480 76.8v563.2h-416v-384h256v64h-192v256h288v-499.2l-70.4 76.8-51.2-51.2 153.6-147.2 153.6 147.2-51.2 51.2zM896 640h-192v-64h192v-256h-288v499.2l70.4-76.8 51.2 51.2-153.6 147.2-153.6-147.2 51.2-51.2 70.4 76.8v-563.2h416v384z" />
<glyph unicode="&#xea70;" glyph-name="transport" d="M64 896v-256h896v256h-896zM768 768v64h64v-64h-64zM640 832h64v-64h-64v64zM64 320h448v-64h-128v-64h-320v-64h320v-64h320v64h256v64h-256v64h-128v64h384v256h-896v-256zM256 384h-64v64h64v-64zM384 384h-64v64h64v-64z" />
<glyph unicode="&#xea71;" glyph-name="trash" d="M576 768v128h-192v-128h-320v-64h128v-704h576v704h128v64h-320zM448 128h-64v512h64v-512zM448 832h64v-64h-64v64zM576 128h-64v512h64v-512z" />
<glyph unicode="&#xea72;" glyph-name="trash-l" d="M576 768v128h-192v-128h-320v-64h128v-704h576v704h128v64h-320zM448 832h64v-64h-64v64zM704 64h-448v640h448v-640zM384 640h64v-512h-64v512zM512 640h64v-512h-64v512z" />
<glyph unicode="&#xea73;" glyph-name="triangle" d="M512 620.8l256-448h-512l256 448zM512 876.8l-480-832h960l-480 832z" />
<glyph unicode="&#xea74;" glyph-name="triangle-l" d="M512 864l-480-832h960l-480 832zM512 736l371.2-640h-742.4l371.2 640z" />
<glyph unicode="&#xea75;" glyph-name="triangle-o" d="M512 864l-480-832h960z" />
<glyph unicode="&#xea76;" glyph-name="trophy" d="M704 832h-704l64-384 64-128h128l192-192v-64h-256v-64h576v64h-256v64l192 192h128l64 128 64 384h-256zM192 384h-25.6l-38.4 83.2-51.2 300.8h115.2v-384zM832 467.2l-38.4-83.2h-25.6v384h115.2l-51.2-300.8z" />
<glyph unicode="&#xea77;" glyph-name="trophy-l" d="M768 832h-768l64-384 64-128h128l192-192v-64h-256v-64h576v64h-256v64l192 192h128l64 128 64 384h-192zM166.4 384l-38.4 83.2-51.2 300.8h115.2v-384h-25.6zM486.4 192h-12.8l-217.6 217.6v358.4h448v-358.4l-217.6-217.6zM832 467.2l-38.4-83.2h-25.6v384h115.2l-51.2-300.8z" />
<glyph unicode="&#xea78;" glyph-name="truck" d="M704 576h-128v128h-512v-576h64c0 70.4 57.6 128 128 128s128-57.6 128-128h192c0 70.4 57.6 128 128 128s128-57.6 128-128h64v256l-192 192zM640 384v64h128l64-64h-192zM320 128c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64zM768 128c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64z" />
<glyph unicode="&#xea79;" glyph-name="truck-l" d="M896 448v0 0l-128 128h-128v128h-512v-576h96c0-51.2 44.8-96 96-96s96 44.8 96 96h256c0-51.2 44.8-96 96-96s96 44.8 96 96h96v256l-64 64zM320 96c-19.2 0-32 12.8-32 32s12.8 32 32 32 32-12.8 32-32c0-19.2-12.8-32-32-32zM576 576v-384h-185.6c-19.2 19.2-44.8 32-70.4 32s-51.2-12.8-70.4-32h-57.6v448h384v-64zM768 96c-19.2 0-32 12.8-32 32s12.8 32 32 32 32-12.8 32-32c0-19.2-12.8-32-32-32zM896 192h-57.6c-19.2 19.2-44.8 32-70.4 32s-51.2-12.8-70.4-32h-57.6v320h102.4l64-64h-102.4v-64h166.4l25.6-25.6v-166.4z" />
<glyph unicode="&#xea7a;" glyph-name="tv" d="M256 128h576v-64h-576v64zM64 768v-576h960v576h-960zM576 256h-64v64h64v-64z" />
<glyph unicode="&#xea7b;" glyph-name="tv-l" d="M64 832v-640h960v640h-960zM960 256h-832v512h832v-512zM256 128h576v-64h-576v64zM512 384h64v-64h-64v64z" />
<glyph unicode="&#xea7c;" glyph-name="twitter" d="M921.6 627.2c0-6.4 0-19.2 0-25.6 0-281.6-211.2-601.6-601.6-601.6-121.6 0-230.4 32-320 96 19.2 0 32 0 51.2 0 96 0 185.6 32 262.4 89.6-89.6 0-166.4 64-198.4 147.2 12.8 0 25.6-6.4 38.4-6.4 19.2 0 38.4 0 57.6 6.4-96 19.2-172.8 102.4-172.8 204.8 0 0 0 0 0 0 32-12.8 64-25.6 96-25.6-57.6 38.4-89.6 102.4-89.6 172.8 0 38.4 12.8 76.8 25.6 108.8 102.4-128 256-211.2 435.2-217.6-6.4 12.8-6.4 32-6.4 44.8 0 115.2 96 211.2 211.2 211.2 57.6 0 115.2-25.6 153.6-64 44.8 6.4 96 25.6 134.4 51.2-12.8-51.2-51.2-89.6-89.6-115.2 38.4 0 76.8 12.8 115.2 32-25.6-44.8-64-83.2-102.4-108.8z" />
<glyph unicode="&#xea7d;" glyph-name="upload-l" d="M832 512v-320h-640v320h-64v-384h768v384zM480 755.2v-435.2h64v435.2l134.4-140.8 51.2 51.2-217.6 211.2-217.6-211.2 51.2-51.2z" />
<glyph unicode="&#xea7e;" glyph-name="usb" d="M1024 640h-256v64h-768v-576h768v64h256v448zM960 256h-192v320h192v-320zM832 512h64v-64h-64v64zM832 384h64v-64h-64v64z" />
<glyph unicode="&#xea7f;" glyph-name="usb-l" d="M1024 640h-256v64h-768v-576h768v64h256v448zM64 192v448h640v-448h-640zM960 256h-192v320h192v-320zM832 512h64v-64h-64v64zM832 384h64v-64h-64v64z" />
<glyph unicode="&#xea80;" glyph-name="user" d="M768 640c0-141.385-114.615-256-256-256s-256 114.615-256 256c0 141.385 114.615 256 256 256s256-114.615 256-256zM512 384c-224 0-409.6-166.4-441.6-384h883.2c-32 217.6-217.6 384-441.6 384z" />
<glyph unicode="&#xea81;" glyph-name="user-l" d="M768 640c0 140.8-115.2 256-256 256s-256-115.2-256-256c0-140.8 115.2-256 256-256s256 115.2 256 256zM512 448c-108.8 0-192 83.2-192 192s83.2 192 192 192 192-83.2 192-192c0-108.8-83.2-192-192-192zM512 384c-224 0-409.6-166.4-441.6-384h64c32 179.2 185.6 320 377.6 320s345.6-140.8 377.6-320h64c-32 217.6-217.6 384-441.6 384z" />
<glyph unicode="&#xea82;" glyph-name="v2ex" d="M0 599.406v214.309c0 0.027 0 0.059 0 0.091 0 39.109 30.695 71.049 69.308 73.044l0.178 0.007h515.657c0.091 0.001 0.199 0.001 0.306 0.001 13.861 0 26.416-5.587 35.537-14.633l385.46-385.46c11.55-11.631 18.688-27.656 18.688-45.349s-7.138-33.717-18.692-45.352l0.004 0.004-372.297-371.566c-9.117-9.042-21.673-14.63-35.534-14.63-0.108 0-0.215 0-0.323 0.001h-528.806c-38.57 1.989-69.135 33.575-69.485 72.377v219.463h512l138.24 134.583c2.285 2.365 3.692 5.589 3.692 9.143s-1.408 6.778-3.696 9.147l0.004-0.004-138.24 134.583h-512z" />
<glyph unicode="&#xea83;" glyph-name="vector-design" d="M960 576h-89.6c-25.6 76.8-83.2 147.2-153.6 192h179.2v64h-288v64h-192v-64h-288v-64h172.8c-70.4-44.8-121.6-115.2-147.2-192h-89.6v-192h70.4c25.6-147.2 134.4-268.8 281.6-307.2v-76.8h192v76.8c147.2 38.4 256 153.6 281.6 307.2h70.4v192zM480 832h64v-64h-64v64zM128 448v64h64v-64h-64zM544 64h-64v64h64v-64zM608 147.2v44.8h-192v-44.8c-108.8 32-192 128-217.6 236.8h57.6v192h-38.4c38.4 83.2 108.8 147.2 198.4 172.8v-44.8h192v44.8c89.6-25.6 160-89.6 198.4-172.8h-38.4v-192h57.6c-25.6-115.2-108.8-204.8-217.6-236.8zM896 448h-64v64h64v-64z" />
<glyph unicode="&#xea84;" glyph-name="video-camera" d="M768 595.2v108.8h-704v-512h704v96l192-96v512l-192-108.8zM384 512h-192v64h192v-64z" />
<glyph unicode="&#xea85;" glyph-name="video-camera-l" d="M960 704l-192-108.8v108.8h-704v-512h704v96l192-96v512zM704 256h-576v384h576v-384zM896 294.4l-128 64v166.4l128 70.4v-300.8z" />
<glyph unicode="&#xea86;" glyph-name="video-file" d="M448 896l-256-256h256zM499.2 448v-128l89.6 64zM512 896v-320h-76.8l256-192-256-192v384h-243.2v-576h704v896z" />
<glyph unicode="&#xea87;" glyph-name="video-file-l" d="M448 896l-256-256v-640h704v896h-448zM448 806.4v-166.4h-166.4l166.4 166.4zM832 64h-576v512h256v256h320v-768zM691.2 384l-256 192v-384l256 192zM499.2 448l83.2-64-83.2-64v128z" />
<glyph unicode="&#xea88;" glyph-name="vimeo" d="M998.4 774.4c-38.4 44.8-115.2 51.2-166.4 38.4-44.8-6.4-192-70.4-243.2-230.4 89.6 6.4 134.4-6.4 128-102.4-6.4-44.8-25.6-83.2-44.8-128-25.6-51.2-76.8-147.2-140.8-76.8-57.6 64-57.6 185.6-70.4 262.4-12.8 51.2-19.2 102.4-32 153.6-12.8 38.4-44.8 83.2-76.8 96-38.4 12.8-89.6-6.4-115.2-19.2-89.6-57.6-147.2-128-236.8-192v-6.4c32-12.8 19.2-38.4 44.8-44.8 51.2-6.4 102.4 51.2 134.4-6.4 19.2-38.4 25.6-76.8 38.4-115.2 19.2-51.2 32-108.8 51.2-166.4 25.6-102.4 57.6-256 147.2-294.4 44.8-19.2 115.2 6.4 147.2 25.6 89.6 57.6 166.4 134.4 224 217.6 140.8 192 217.6 409.6 230.4 467.2 12.8 44.8 6.4 89.6-19.2 121.6z" />
<glyph unicode="&#xea89;" glyph-name="virtual" d="M544 192c140.8 0 256 76.8 313.6 192-6.4 0-19.2 0-25.6 0h-320c-83.2 0-153.6 51.2-179.2 128h-140.8c19.2-179.2 166.4-320 352-320zM512 768h300.8c-64 76.8-160 128-268.8 128-160 0-294.4-108.8-339.2-256h128c25.6 76.8 96 128 179.2 128zM832 704h-320c-70.4 0-128-57.6-128-128s57.6-128 128-128h320c70.4 0 128 57.6 128 128s-57.6 128-128 128zM896 640v-64h-64v64h64zM480 192c-172.8 0-320-108.8-384-256h768c-64 147.2-211.2 256-384 256z" />
<glyph unicode="&#xea8a;" glyph-name="virtual-l" d="M832 768h-19.2c-64 76.8-160 128-268.8 128-160 0-294.4-108.8-339.2-256-6.4-32-12.8-64-12.8-96 0-12.8 0-19.2 0-32 19.2-179.2 166.4-320 352-320 140.8 0 256 76.8 313.6 192 96 12.8 166.4 96 166.4 192 0 108.8-83.2 192-192 192zM544 832c70.4 0 128-25.6 179.2-64h-211.2c-83.2 0-153.6-51.2-179.2-128h-57.6c38.4 108.8 140.8 192 268.8 192zM544 256c-147.2 0-268.8 115.2-281.6 256h70.4c25.6-76.8 96-128 179.2-128h268.8c-51.2-76.8-134.4-128-236.8-128zM883.2 460.8c-12.8-6.4-32-12.8-51.2-12.8h-320c-70.4 0-128 57.6-128 128s57.6 128 128 128h320c6.4 0 19.2 0 25.6 0 57.6-12.8 102.4-64 102.4-128 0-51.2-32-96-76.8-115.2zM480 192c-172.8 0-320-108.8-384-256h70.4c57.6 115.2 179.2 192 313.6 192s256-76.8 313.6-192h70.4c-64 147.2-211.2 256-384 256zM832 640h64v-64h-64v64z" />
<glyph unicode="&#xea8b;" glyph-name="volume" d="M64 704v-512h256l256-256v1024l-256-256h-256zM672 684.8l-19.2-57.6c76.8-25.6 128-96 128-179.2 0-76.8-51.2-147.2-128-179.2l19.2-57.6c102.4 38.4 166.4 128 166.4 236.8s-64 198.4-166.4 236.8zM825.6 768l-38.4-51.2c83.2-64 134.4-160 134.4-268.8s-51.2-204.8-134.4-268.8l38.4-51.2c102.4 76.8 160 192 160 320s-57.6 243.2-160 320z" />
<glyph unicode="&#xea8c;" glyph-name="volume-l" d="M64 704v-512h256l256-256v1024l-256-256h-256zM364.8 659.2l147.2 147.2v-716.8l-166.4 166.4h-217.6v384h217.6l19.2 19.2zM672 684.8l-19.2-57.6c76.8-25.6 128-96 128-179.2 0-76.8-51.2-147.2-128-179.2l19.2-57.6c102.4 38.4 166.4 128 166.4 236.8s-64 198.4-166.4 236.8zM825.6 768l-38.4-51.2c83.2-64 134.4-160 134.4-268.8s-51.2-204.8-134.4-268.8l38.4-51.2c102.4 76.8 160 192 160 320s-57.6 243.2-160 320z" />
<glyph unicode="&#xea8d;" glyph-name="volume-x-l" d="M64 704v-512h256l256-256v1024l-256-256h-256zM364.8 659.2l147.2 147.2v-716.8l-166.4 166.4h-217.6v384h217.6l19.2 19.2zM985.6 614.4l-51.2 51.2-134.4-140.8-134.4 140.8-51.2-51.2 140.8-134.4-140.8-134.4 51.2-51.2 134.4 140.8 134.4-140.8 51.2 51.2-140.8 134.4z" />
<glyph unicode="&#xea8e;" glyph-name="wallet" d="M640 512v-128h320v128h-64zM576 320v256h320v128h-768v64h768v64h-832v-768h832v256z" />
<glyph unicode="&#xea8f;" glyph-name="wallet-l" d="M896 576v128h-768v64h768v64h-832v-768h832v256h128v256h-128zM832 128h-704v512h704v-64h-256v-256h256v-192zM960 384h-320v128h320v-128z" />
<glyph unicode="&#xea90;" glyph-name="warning" d="M512 896l-512-889.6h1024l-512 889.6zM544 128h-64v64h64v-64zM480 256v320h64v-320h-64z" />
<glyph unicode="&#xea91;" glyph-name="warning-l" d="M480 576h64v-320h-64v320zM480 192h64v-64h-64v64zM512 896l-512-889.6h1024l-512 889.6zM512 768l403.2-697.6h-806.4l403.2 697.6z" />
<glyph unicode="&#xea92;" glyph-name="watch" d="M768 716.8v179.2h-448v-179.2c-76.8-64-128-160-128-268.8s51.2-204.8 128-268.8v-179.2h448v179.2c76.8 64 128 160 128 268.8s-51.2 204.8-128 268.8zM384 832h320v-70.4c-51.2 25.6-102.4 38.4-160 38.4s-108.8-12.8-160-38.4v70.4zM704 64h-320v70.4c51.2-25.6 102.4-38.4 160-38.4s108.8 12.8 160 38.4v-70.4zM768 448h-256v256h64v-192h192v-64z" />
<glyph unicode="&#xea93;" glyph-name="watch-l" d="M896 448c0 108.8-51.2 204.8-128 268.8v179.2h-448v-179.2c-76.8-64-128-160-128-268.8s51.2-204.8 128-268.8v-179.2h448v179.2c76.8 64 128 160 128 268.8zM384 832h320v-70.4c-51.2 25.6-102.4 38.4-160 38.4s-108.8-12.8-160-38.4v70.4zM256 448c0 160 128 288 288 288s288-128 288-288-128-288-288-288-288 128-288 288zM704 64h-320v70.4c51.2-25.6 102.4-38.4 160-38.4s108.8 12.8 160 38.4v-70.4zM768 448v64h-192v192h-64v-256h64z" />
<glyph unicode="&#xea94;" glyph-name="webcam" d="M896 512c0 211.2-172.8 384-384 384s-384-172.8-384-384c0-198.4 153.6-364.8 352-384v-64h-160v-64h384v64h-160v64c198.4 19.2 352 185.6 352 384zM512 832c153.6 0 281.6-108.8 313.6-256h-64c-25.6 108.8-128 192-249.6 192v64zM512 640c70.4 0 128-57.6 128-128s-57.6-128-128-128-128 57.6-128 128c0 70.4 57.6 128 128 128zM192 512h128c0-108.8 83.2-192 192-192s192 83.2 192 192h128c0-179.2-140.8-320-320-320s-320 140.8-320 320z" />
<glyph unicode="&#xea95;" glyph-name="webcam-l" d="M896 512c0 211.2-172.8 384-384 384s-384-172.8-384-384c0-198.4 153.6-364.8 352-384v-64h-160v-64h384v64h-160v64c198.4 19.2 352 185.6 352 384zM512 832c166.4 0 300.8-128 313.6-288h-128c-12.8 89.6-89.6 160-185.6 160s-172.8-70.4-185.6-160h-128c12.8 160 147.2 288 313.6 288zM640 512c0-70.4-57.6-128-128-128s-128 57.6-128 128c0 70.4 57.6 128 128 128s128-57.6 128-128zM198.4 480h128c12.8-89.6 89.6-160 185.6-160s172.8 70.4 185.6 160h128c-12.8-160-147.2-288-313.6-288s-300.8 128-313.6 288z" />
<glyph unicode="&#xea96;" glyph-name="web-edit" d="M64 0h960v640h-960v-640zM768 422.4l-288-294.4h-160v160l294.4 288 153.6-153.6zM64 896v-192h960v192h-960zM704 768h-64v64h64v-64zM832 768h-64v64h64v-64zM960 768h-64v64h64v-64zM652.8 377.6l-83.2 76.8-192-192v-76.8h76.8z" />
<glyph unicode="&#xea97;" glyph-name="web-edit-l" d="M64 896v-896h960v896h-960zM960 64h-832v576h832v-576zM960 704h-64v64h-64v-64h-64v64h-64v-64h-64v64h-64v-64h-448v128h832v-128zM768 422.4l-153.6 153.6-294.4-288v-160h160l288 294.4zM377.6 185.6v76.8l198.4 192 76.8-76.8-198.4-198.4h-76.8z" />
<glyph unicode="&#xea98;" glyph-name="weibo" d="M371.2 377.6c-89.6-12.8-153.6-83.2-140.8-153.6s89.6-121.6 179.2-108.8c83.2 12.8 147.2 76.8 140.8 153.6-12.8 70.4-89.6 121.6-179.2 108.8zM345.6 172.8c-32-6.4-57.6 12.8-64 38.4s19.2 51.2 51.2 51.2c32 6.4 57.6-12.8 64-38.4 0-25.6-19.2-44.8-51.2-51.2zM422.4 256c-12.8-6.4-25.6 0-25.6 12.8s6.4 19.2 19.2 25.6 25.6 0 25.6-12.8c6.4-12.8-6.4-25.6-19.2-25.6zM832 499.2c6.4 0 6.4 0 12.8 0 12.8 0 25.6 6.4 32 19.2s12.8 32 12.8 51.2c0 70.4-57.6 128-128 128-19.2 0-32-6.4-51.2-12.8s-25.6-32-19.2-44.8c6.4-19.2 32-25.6 44.8-19.2 6.4 0 12.8 6.4 19.2 6.4 32 0 57.6-25.6 57.6-57.6 0-6.4 0-12.8-6.4-19.2-6.4-25.6 6.4-44.8 25.6-51.2zM742.4 441.6c6.4 12.8 6.4 19.2 6.4 19.2 64 121.6-102.4 160-198.4 108.8-89.6-51.2-44.8 38.4-44.8 38.4 19.2 160-153.6 89.6-153.6 89.6-390.4-217.6-352-435.2-352-435.2 0-121.6 185.6-256 428.8-256 313.6 0 492.8 185.6 460.8 320-12.8 57.6-76.8 102.4-147.2 115.2zM384 70.4c-204.8 0-275.2 108.8-275.2 185.6 0 121.6 160 211.2 313.6 211.2s262.4-64 288-153.6c32-121.6-128-243.2-326.4-243.2zM761.6 832c-25.6 0-44.8 0-64-6.4s-32-25.6-25.6-44.8c6.4-19.2 25.6-32 44.8-25.6 12.8 6.4 32 6.4 51.2 6.4 108.8 0 192-89.6 192-192 0-25.6-6.4-44.8-12.8-64s0-38.4 19.2-44.8c6.4 0 6.4 0 12.8 0 12.8 0 32 6.4 32 25.6 6.4 19.2 12.8 51.2 12.8 83.2 0 140.8-121.6 262.4-262.4 262.4z" />
<glyph unicode="&#xea99;" glyph-name="weixin" d="M691.2 601.6c12.8 0 25.6 0 32 0-32 147.2-185.6 256-364.8 256-192-6.4-358.4-140.8-358.4-313.6 0-102.4 51.2-179.2 147.2-243.2l-38.4-108.8 128 64c44.8-6.4 83.2-19.2 128-19.2 12.8 0 25.6 0 32 0-6.4 25.6-12.8 51.2-12.8 76.8 0 160 134.4 288 307.2 288zM499.2 697.6c25.6 0 44.8-19.2 44.8-44.8s-19.2-44.8-44.8-44.8c-25.6 0-57.6 19.2-57.6 44.8s32 44.8 57.6 44.8zM243.2 608c-25.6 0-51.2 19.2-51.2 44.8s25.6 44.8 57.6 44.8c25.6 0 44.8-19.2 44.8-44.8-6.4-25.6-25.6-44.8-51.2-44.8zM1024 320c0 147.2-147.2 262.4-307.2 262.4-172.8 0-307.2-115.2-307.2-262.4s134.4-262.4 307.2-262.4c38.4 0 70.4 6.4 108.8 19.2l102.4-57.6-32 89.6c76.8 51.2 128 128 128 211.2zM614.4 364.8c-19.2 0-38.4 19.2-38.4 38.4s19.2 38.4 38.4 38.4c25.6 0 44.8-19.2 44.8-38.4 0-25.6-12.8-38.4-44.8-38.4zM812.8 364.8c-19.2 0-38.4 19.2-38.4 38.4s19.2 38.4 38.4 38.4c25.6 0 44.8-19.2 44.8-38.4 6.4-25.6-12.8-38.4-44.8-38.4z" />
<glyph unicode="&#xea9a;" glyph-name="weixinzhifu" d="M371.2 326.4c0-6.4-6.4-6.4-12.8-6.4-12.8 0-25.6 6.4-32 19.2v6.4l-96 198.4c0 0 0 6.4 0 6.4 0 6.4 6.4 19.2 19.2 19.2 6.4 0 6.4 0 12.8 0l108.8-76.8c0-6.4 12.8-12.8 25.6-12.8 6.4 0 12.8 0 19.2 0l518.4 230.4c-96 115.2-249.6 185.6-422.4 185.6-281.6 0-512-192-512-428.8 0-128 70.4-243.2 179.2-320 6.4-6.4 12.8-12.8 12.8-25.6 0-6.4 0-6.4 0-12.8-6.4-32-19.2-83.2-25.6-83.2 0-6.4 0-6.4 0-12.8s6.4-19.2 19.2-19.2c6.4 0 6.4 0 12.8 0l115.2 64c0 6.4 6.4 12.8 19.2 12.8 6.4 0 12.8 0 12.8 0 51.2-12.8 108.8-25.6 166.4-25.6 281.6 0 512 192 512 428.8 0 70.4-19.2 140.8-57.6 198.4l-595.2-345.6z" />
<glyph unicode="&#xea9b;" glyph-name="wifi" d="M377.6 198.4l134.4-134.4 134.4 134.4c-32 38.4-83.2 57.6-134.4 57.6s-102.4-19.2-134.4-57.6zM198.4 377.6l89.6-89.6c57.6 57.6 134.4 96 224 96s166.4-38.4 224-96l89.6 89.6c-76.8 83.2-192 134.4-313.6 134.4s-236.8-51.2-313.6-134.4zM512 768c-192 0-371.2-76.8-499.2-204.8l89.6-89.6c108.8 102.4 249.6 166.4 409.6 166.4s300.8-64 409.6-166.4l89.6 89.6c-128 128-307.2 204.8-499.2 204.8z" />
<glyph unicode="&#xea9c;" glyph-name="wordpress" d="M1024 448c0-281.6-230.4-512-512-512s-512 230.4-512 512 230.4 512 512 512 512-230.4 512-512zM998.4 448c0 268.8-217.6 486.4-486.4 486.4s-486.4-217.6-486.4-486.4 217.6-486.4 486.4-486.4 486.4 217.6 486.4 486.4zM108.8 627.2l211.2-576c-147.2 70.4-249.6 224-249.6 396.8 0 64 12.8 121.6 38.4 179.2zM774.4 326.4l-44.8-147.2-160 473.6c0 0 25.6 0 51.2 6.4 25.6 0 19.2 38.4 0 38.4-70.4-6.4-115.2-6.4-115.2-6.4s-44.8 0-115.2 6.4c-25.6 0-25.6-32 0-38.4 19.2 0 44.8-6.4 44.8-6.4l70.4-185.6-96-288-166.4 473.6c0 0 25.6 0 51.2 6.4 25.6 0 19.2 38.4 0 38.4-76.8-6.4-121.6-6.4-121.6-6.4-6.4 0-19.2 0-25.6 0 76.8 115.2 211.2 198.4 364.8 198.4 115.2 0 217.6-44.8 294.4-115.2 0 0-6.4 0-6.4 0-44.8 0-76.8-38.4-76.8-76.8s19.2-64 44.8-102.4c19.2-32 38.4-64 38.4-121.6 0-38.4-12.8-83.2-32-147.2zM652.8 38.4c0 0 6.4 0 0 0-44.8-19.2-89.6-32-140.8-32-44.8 0-83.2 6.4-121.6 19.2l134.4 384 128-371.2zM953.6 448c0-160-89.6-300.8-217.6-377.6l134.4 390.4c19.2 64 32 115.2 32 160 0 12.8 0 32-6.4 44.8 38.4-70.4 57.6-140.8 57.6-217.6z" />
<glyph unicode="&#xea9d;" glyph-name="wrench" d="M262.4 851.2l108.8-108.8v-89.6h-89.6l-108.8 108.8-64-211.2 204.8-204.8 140.8 38.4 320-320 179.2 179.2-320 320 38.4 140.8-198.4 211.2-211.2-64zM800 268.8l-44.8-44.8-224 224 44.8 44.8 224-224z" />
<glyph unicode="&#xea9e;" glyph-name="wrench-l" d="M262.4 838.4l108.8-108.8v-89.6h-89.6l-108.8 108.8-64-217.6 204.8-204.8 140.8 38.4 320-320 179.2 179.2-320 320 38.4 140.8-198.4 211.2-211.2-57.6zM608 672l-32-102.4-12.8-38.4 300.8-300.8-89.6-89.6-300.8 300.8-32-12.8-108.8-25.6-147.2 147.2 19.2 70.4 51.2-51.2h179.2v179.2l-19.2 25.6-32 32 70.4 19.2 153.6-153.6zM531.617 430.244l45.254 45.254 226.272-226.272-45.254-45.254-226.272 226.272z" />
<glyph unicode="&#xea9f;" glyph-name="write-l" d="M832 64h-704v640h332.8l64 64h-460.8v-768h832v524.8l-64-64zM320 256h192l448 448-192 192-448-448v-192zM384 422.4l300.8 300.8 102.4-102.4-300.8-300.8h-102.4v102.4z" />
<glyph unicode="&#xeaa0;" glyph-name="x-buy-l" d="M256 704v128l63.957 64h384.043l64-64v-128h128v-704h-768v704h128zM320 704h384v128h-384v-128zM444.245 297.6l-135.765-135.764 45.255-45.255 135.765 135.764-45.255 45.255zM579.655 297.6l-45.255-45.255 135.765-135.764 45.255 45.255-135.765 135.764zM670.165 523.52l-135.765-135.765 45.255-45.255 135.765 135.765-45.255 45.255zM353.735 523.52l-45.255-45.255 135.765-135.765 45.255 45.255-135.765 135.765z" />
<glyph unicode="&#xeaa1;" glyph-name="youtube" d="M505.6 576c25.6 0 44.8 12.8 57.6 32 12.8 6.4 19.2 32 19.2 64v96c0 32-6.4 51.2-12.8 64-19.2 25.6-38.4 32-64 32s-44.8-12.8-57.6-32c-12.8-12.8-19.2-32-19.2-64v-102.4c0-32 6.4-51.2 19.2-70.4 12.8-12.8 32-19.2 57.6-19.2zM480 780.8c0 25.6 6.4 38.4 25.6 38.4s25.6-12.8 25.6-38.4v-121.6c0-25.6-6.4-38.4-25.6-38.4s-25.6 12.8-25.6 38.4v121.6zM627.2 595.2c0 6.4-6.4 19.2-6.4 44.8v224h51.2v-211.2c0-12.8 0-19.2 0-19.2 0-6.4 6.4-12.8 12.8-12.8 12.8 0 19.2 6.4 32 25.6v217.6h51.2v-288h-51.2v32c-19.2-25.6-38.4-32-57.6-32-12.8 0-25.6 6.4-32 19.2zM825.6 249.6v-25.6h-51.2v25.6c0 25.6 6.4 38.4 25.6 38.4s25.6-12.8 25.6-38.4zM268.8 851.2c-12.8 38.4-25.6 70.4-38.4 108.8h57.6l38.4-147.2 44.8 147.2h57.6l-70.4-230.4v-153.6h-57.6v153.6c-6.4 32-19.2 70.4-32 121.6zM921.6 428.8c-6.4 44.8-44.8 83.2-89.6 83.2-102.4 12.8-211.2 12.8-320 12.8s-211.2 0-313.6-12.8c-44.8 0-83.2-38.4-89.6-83.2-12.8-64-12.8-134.4-12.8-198.4s0-134.4 12.8-198.4c12.8-44.8 44.8-76.8 89.6-83.2 102.4-12.8 211.2-12.8 320-12.8s211.2 0 320 12.8c44.8 6.4 83.2 38.4 89.6 83.2 12.8 64 12.8 134.4 12.8 198.4s0 134.4-19.2 198.4zM332.8 371.2h-64v-326.4h-51.2v326.4h-64v57.6h179.2v-57.6zM486.4 44.8h-51.2v32c-19.2-25.6-38.4-32-57.6-32s-25.6 6.4-32 19.2c0 6.4-6.4 19.2-6.4 44.8v224h51.2v-204.8c0-12.8 0-19.2 0-19.2 0-6.4 6.4-12.8 12.8-12.8 12.8 0 19.2 6.4 32 25.6v211.2h51.2v-288zM684.8 134.4c0-25.6 0-44.8-6.4-57.6-6.4-19.2-19.2-32-38.4-32s-38.4 12.8-51.2 32v-25.6h-57.6v377.6h51.2v-121.6c19.2 19.2 32 32 51.2 32s32-12.8 38.4-32c6.4-12.8 6.4-32 6.4-57.6v-115.2zM876.8 179.2h-102.4v-51.2c0-25.6 6.4-38.4 25.6-38.4 12.8 0 19.2 6.4 25.6 19.2 0 0 0 12.8 0 32h51.2v-6.4c0-19.2 0-25.6 0-32 0-12.8-6.4-19.2-12.8-32-12.8-19.2-32-32-64-32-25.6 0-44.8 12.8-64 32-12.8 12.8-19.2 38.4-19.2 64v96c0 32 6.4 51.2 19.2 64 12.8 19.2 32 32 64 32 25.6 0 44.8-12.8 57.6-32 12.8-12.8 12.8-38.4 12.8-64l6.4-51.2zM633.6 249.6v-121.6c0-25.6-6.4-38.4-19.2-38.4-6.4 0-19.2 6.4-25.6 12.8v172.8c6.4 6.4 19.2 12.8 25.6 12.8s19.2-12.8 19.2-38.4z" />
<glyph unicode="&#xeaa2;" glyph-name="zhihu" d="M230.4 883.2c-44.8-19.2-51.2-32-83.2-115.2-12.8-51.2-44.8-121.6-64-160 0-12.8-6.4-25.6-6.4-25.6s38.4 6.4 57.6 12.8c6.4 6.4 19.2 12.8 32 25.6 12.8 19.2 25.6 32 32 70.4 0 6.4 6.4 6.4 51.2 6.4h44.8v-38.4c0-38.4-6.4-160-6.4-179.2v-12.8h-172.8l-6.4-6.4c-12.8-6.4-25.6-32-25.6-51.2v-12.8h204.8v-19.2c-6.4-83.2-51.2-192-115.2-262.4-19.2-19.2-70.4-70.4-89.6-89.6-19.2-12.8-19.2-12.8-12.8-12.8 12.8-6.4 70.4 0 115.2 12.8 19.2 6.4 25.6 12.8 38.4 25.6 38.4 38.4 70.4 102.4 96 166.4l6.4 38.4 12.8-12.8c6.4-6.4 19.2-19.2 25.6-25.6 64-76.8 76.8-96 96-115.2 25.6-32 32-38.4 32-38.4 6.4 0 6.4 38.4 6.4 64 0 44.8 0 44.8-51.2 102.4-44.8 57.6-76.8 83.2-76.8 83.2s-12.8-6.4-19.2-19.2c-12.8-6.4-19.2-12.8-19.2-12.8s0 6.4 0 12.8c6.4 12.8 19.2 64 19.2 89.6v12.8h185.6v19.2c0 12.8-6.4 25.6-6.4 32v19.2h-166.4v32c0 19.2 0 70.4 6.4 108.8v83.2h153.6v25.6c0 25.6-6.4 38.4-19.2 44.8-6.4 6.4-38.4 6.4-140.8 6.4h-134.4l6.4 19.2c0 12.8 12.8 38.4 19.2 57.6s12.8 38.4 12.8 38.4c-6.4 6.4-19.2 6.4-38.4 0zM588.8 774.4c-6.4-6.4 0-652.8 0-659.2s6.4-6.4 32-6.4h32l6.4-25.6c6.4-12.8 12.8-32 12.8-38.4s0-6.4 6.4-6.4 6.4 6.4 19.2 6.4c108.8 70.4 96 64 185.6 64 57.6 0 70.4 0 76.8 6.4 0 0 0 89.6 0 332.8v332.8h-185.6c-166.4-6.4-179.2-6.4-185.6-6.4v0zM883.2 441.6v-262.4h-76.8l-38.4-25.6c-19.2-12.8-38.4-25.6-44.8-32l-12.8-6.4-6.4 19.2c0 6.4-6.4 19.2-6.4 32l-6.4 19.2h-25.6v256c0 147.2 0 262.4 0 262.4s51.2 0 108.8 0h108.8v-262.4z" />
<glyph unicode="&#xeaa3;" glyph-name="zip-folder" d="M608 224c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM576 704v-64h64v-64h-64v-64h64v-64h-64v-64h64v-192c0-38.4-25.6-64-64-64s-64 25.6-64 64v128h64v64h-64v64h64v64h-64v64h64v64h-64v64l-128 128h-320v-768h896v640h-384z" />
<glyph unicode="&#xeaa4;" glyph-name="zip-folder-l" d="M576 704h-64l-128 128h-320v-768h896v640h-384zM896 128h-768v640h230.4l128-128h89.6v-64h64v64h256v-512zM512 576h64v-64h-64v64zM576 512h64v-64h-64v64zM512 448h64v-64h-64v64zM640 192v192h-64v-64h-64v-128c0-38.4 25.6-64 64-64s64 25.6 64 64zM576 192c-19.2 0-32 12.8-32 32s12.8 32 32 32 32-12.8 32-32c0-19.2-12.8-32-32-32z" />
</font></defs></svg>

Before

Width:  |  Height:  |  Size: 190 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,425 +0,0 @@
$icomoon-font-family: "StrawberryIcon-pro" !default;
$icomoon-font-path: "fonts" !default;
$czs-about: "\e900";
$czs-about-l: "\e901";
$czs-add: "\e902";
$czs-airplane: "\e903";
$czs-airplane-l: "\e904";
$czs-alipay: "\e905";
$czs-analysis: "\e906";
$czs-android: "\e907";
$czs-angle-down-l: "\e908";
$czs-angle-left-l: "\e909";
$czs-angle-right-l: "\e90a";
$czs-angle-up-l: "\e90b";
$czs-apple: "\e90c";
$czs-arrow-down-l: "\e90d";
$czs-arrow-up-l: "\e90e";
$czs-baiduwangpan: "\e90f";
$czs-bar-chart: "\e910";
$czs-bar-chart-l: "\e911";
$czs-battery: "\e912";
$czs-battery-l: "\e913";
$czs-bell: "\e914";
$czs-bell-l: "\e915";
$czs-bevel: "\e916";
$czs-bilibili: "\e917";
$czs-bitcoin: "\e918";
$czs-blackboard: "\e919";
$czs-blackboard-l: "\e91a";
$czs-block: "\e91b";
$czs-block-l: "\e91c";
$czs-bluetooth: "\e91d";
$czs-bluetooth-l: "\e91e";
$czs-board: "\e91f";
$czs-board-l: "\e920";
$czs-book: "\e921";
$czs-book-l: "\e922";
$czs-bookmark: "\e923";
$czs-bookmark-l: "\e924";
$czs-books: "\e925";
$czs-books-l: "\e926";
$czs-bot: "\e927";
$czs-bot-l: "\e928";
$czs-box: "\e929";
$czs-box-l: "\e92a";
$czs-briefcase: "\e92b";
$czs-briefcase-l: "\e92c";
$czs-brush: "\e92d";
$czs-brush-l: "\e92e";
$czs-bug: "\e92f";
$czs-bug-l: "\e930";
$czs-building: "\e931";
$czs-building-l: "\e932";
$czs-buy: "\e933";
$czs-buy-l: "\e934";
$czs-calculator: "\e935";
$czs-calculator-l: "\e936";
$czs-calendar: "\e937";
$czs-calendar-l: "\e938";
$czs-camber: "\e939";
$czs-camber-l: "\e93a";
$czs-camber-o: "\e93b";
$czs-camera: "\e93c";
$czs-camera-l: "\e93d";
$czs-car: "\e93e";
$czs-car-l: "\e93f";
$czs-category-l: "\e940";
$czs-certificate: "\e941";
$czs-certificate-l: "\e942";
$czs-chemistry: "\e943";
$czs-chemistry-l: "\e944";
$czs-choose-list-l: "\e945";
$czs-chrome: "\e946";
$czs-circle: "\e947";
$czs-circle-l: "\e948";
$czs-circle-o: "\e949";
$czs-clip-l: "\e94a";
$czs-clock: "\e94b";
$czs-clock-l: "\e94c";
$czs-close-l: "\e94d";
$czs-clothes: "\e94e";
$czs-clothes-l: "\e94f";
$czs-cloud: "\e950";
$czs-cloud-download-l: "\e951";
$czs-cloud-l: "\e952";
$czs-cloud-upload-l: "\e953";
$czs-code-branch: "\e954";
$czs-code-file: "\e955";
$czs-code-file-l: "\e956";
$czs-code-fork: "\e957";
$czs-code-l: "\e958";
$czs-coin: "\e959";
$czs-coin-l: "\e95a";
$czs-collection: "\e95b";
$czs-come-l: "\e95c";
$czs-command: "\e95d";
$czs-command-l: "\e95e";
$czs-commed2: "\e95f";
$czs-commed2-l: "\e960";
$czs-comment: "\e961";
$czs-comment-l: "\e962";
$czs-computer: "\e963";
$czs-computer-l: "\e964";
$czs-configuration: "\e965";
$czs-configuration-l: "\e966";
$czs-container: "\e967";
$czs-container-l: "\e968";
$czs-control: "\e969";
$czs-control-rank: "\e96a";
$czs-credit-card: "\e96b";
$czs-credit-card-l: "\e96c";
$czs-crown: "\e96d";
$czs-crown-l: "\e96e";
$czs-css3: "\e96f";
$czs-cube: "\e970";
$czs-cube-l: "\e971";
$czs-cup: "\e972";
$czs-cup-l: "\e973";
$czs-dashboard: "\e974";
$czs-dashboard-l: "\e975";
$czs-database: "\e976";
$czs-database-l: "\e977";
$czs-dev-board: "\e978";
$czs-dev-board-l: "\e979";
$czs-d-glasses: "\e97a";
$czs-diamond: "\e97b";
$czs-diamond-l: "\e97c";
$czs-doc-edit: "\e97d";
$czs-doc-edit-l: "\e97e";
$czs-doc-file: "\e97f";
$czs-doc-file-l: "\e980";
$czs-download-l: "\e981";
$czs-dribbble: "\e982";
$czs-dropbox: "\e983";
$czs-earth: "\e984";
$czs-earth-l: "\e985";
$czs-education: "\e986";
$czs-education-l: "\e987";
$czs-eye: "\e988";
$czs-eye-l: "\e989";
$czs-face: "\e98a";
$czs-facebook: "\e98b";
$czs-face-l: "\e98c";
$czs-file: "\e98d";
$czs-file-l: "\e98e";
$czs-film: "\e98f";
$czs-film-l: "\e990";
$czs-fingerprint: "\e991";
$czs-fingerprint-l: "\e992";
$czs-fire-l: "\e993";
$czs-firewall: "\e994";
$czs-firewall-l: "\e995";
$czs-folder: "\e996";
$czs-folder-l: "\e997";
$czs-forum: "\e998";
$czs-forum-l: "\e999";
$czs-game: "\e99a";
$czs-game-l: "\e99b";
$czs-gene: "\e99c";
$czs-gift: "\e99d";
$czs-gift-l: "\e99e";
$czs-github: "\e99f";
$czs-github-logo: "\e9a0";
$czs-Google: "\e9a1";
$czs-greatwall: "\e9a2";
$czs-hacker: "\e9a3";
$czs-hacker-l: "\e9a4";
$czs-hammer: "\e9a5";
$czs-hammer-l: "\e9a6";
$czs-hand-bevel: "\e9a7";
$czs-hand-button: "\e9a8";
$czs-hande-vertical: "\e9a9";
$czs-hand-gather: "\e9aa";
$czs-hand-grasp: "\e9ab";
$czs-hand-horizontal: "\e9ac";
$czs-hand-pointer: "\e9ad";
$czs-hand-slide: "\e9ae";
$czs-hand-stop: "\e9af";
$czs-hand-touch: "\e9b0";
$czs-hdmi: "\e9b1";
$czs-hdmi-l: "\e9b2";
$czs-headset: "\e9b3";
$czs-headset-l: "\e9b4";
$czs-heart: "\e9b5";
$czs-heart-l: "\e9b6";
$czs-home: "\e9b7";
$czs-home-l: "\e9b8";
$czs-html5: "\e9b9";
$czs-image: "\e9ba";
$czs-image-l: "\e9bb";
$czs-inbox: "\e9bc";
$czs-inbox-l: "\e9bd";
$czs-Instagram: "\e9be";
$czs-key: "\e9bf";
$czs-keyboard: "\e9c0";
$czs-keyboard-l: "\e9c1";
$czs-key-l: "\e9c2";
$czs-label-info: "\e9c3";
$czs-label-info-l: "\e9c4";
$czs-laptop: "\e9c5";
$czs-laptop-l: "\e9c6";
$czs-layers: "\e9c7";
$czs-layout-grid: "\e9c8";
$czs-layout-grids: "\e9c9";
$czs-layout-list: "\e9ca";
$czs-light: "\e9cb";
$czs-light-flash-l: "\e9cc";
$czs-light-l: "\e9cd";
$czs-lightning: "\e9ce";
$czs-lightning-l: "\e9cf";
$czs-link-l: "\e9d0";
$czs-linux: "\e9d1";
$czs-list-clipboard: "\e9d2";
$czs-list-clipboard-l: "\e9d3";
$czs-location: "\e9d4";
$czs-location-l: "\e9d5";
$czs-lock: "\e9d6";
$czs-lock-l: "\e9d7";
$czs-map: "\e9d8";
$czs-map-l: "\e9d9";
$czs-medal: "\e9da";
$czs-medal-l: "\e9db";
$czs-menu-l: "\e9dc";
$czs-message: "\e9dd";
$czs-message-l: "\e9de";
$czs-microchip: "\e9df";
$czs-microchip-l: "\e9e0";
$czs-microphone: "\e9e1";
$czs-microphone-l: "\e9e2";
$czs-microsoft: "\e9e3";
$czs-mobile: "\e9e4";
$czs-mobile-l: "\e9e5";
$czs-moments: "\e9e6";
$czs-money: "\e9e7";
$czs-moon: "\e9e8";
$czs-moon-l: "\e9e9";
$czs-more: "\e9ea";
$czs-mouse: "\e9eb";
$czs-mouse-l: "\e9ec";
$czs-music: "\e9ed";
$czs-music-file: "\e9ee";
$czs-music-file-l: "\e9ef";
$czs-music-l: "\e9f0";
$czs-music-note: "\e9f1";
$czs-music-note-l: "\e9f2";
$czs-nail: "\e9f3";
$czs-nail-l: "\e9f4";
$czs-nas: "\e9f5";
$czs-nas-l: "\e9f6";
$czs-network: "\e9f7";
$czs-network-l: "\e9f8";
$czs-new: "\e9f9";
$czs-new-l: "\e9fa";
$czs-newspaper: "\e9fb";
$czs-newspaper-l: "\e9fc";
$czs-operation: "\e9fd";
$czs-operation-l: "\e9fe";
$czs-out-l: "\e9ff";
$czs-pad: "\ea00";
$czs-pad-l: "\ea01";
$czs-paper: "\ea02";
$czs-paper-l: "\ea03";
$czs-paper-plane: "\ea04";
$czs-paper-plane-l: "\ea05";
$czs-pause-l: "\ea06";
$czs-paypal: "\ea07";
$czs-pen: "\ea08";
$czs-pen-write: "\ea09";
$czs-people: "\ea0a";
$czs-phone: "\ea0b";
$czs-phone-l: "\ea0c";
$czs-pinterest: "\ea0d";
$czs-pixel: "\ea0e";
$czs-platform: "\ea0f";
$czs-platform-l: "\ea10";
$czs-play-l: "\ea11";
$czs-plugin: "\ea12";
$czs-pokemon-ball: "\ea13";
$czs-port: "\ea14";
$czs-port-l: "\ea15";
$czs-printer: "\ea16";
$czs-printer-l: "\ea17";
$czs-product: "\ea18";
$czs-program: "\ea19";
$czs-program-framework: "\ea1a";
$czs-program-l: "\ea1b";
$czs-prototype: "\ea1c";
$czs-prototype-l: "\ea1d";
$czs-prototype-select: "\ea1e";
$czs-prototype-select-l: "\ea1f";
$czs-qq: "\ea20";
$czs-qrcode-l: "\ea21";
$czs-quadrotor: "\ea22";
$czs-quote-left: "\ea23";
$czs-quote-right: "\ea24";
$czs-qzone: "\ea25";
$czs-raspberry: "\ea26";
$czs-raspberry-l: "\ea27";
$czs-read: "\ea28";
$czs-read-l: "\ea29";
$czs-red-envelope: "\ea2a";
$czs-renew: "\ea2b";
$czs-right-clipboard: "\ea2c";
$czs-right-clipboard-l: "\ea2d";
$czs-robot: "\ea2e";
$czs-robot2: "\ea2f";
$czs-robot2-l: "\ea30";
$czs-robot-l: "\ea31";
$czs-rocket: "\ea32";
$czs-rocket-l: "\ea33";
$czs-rollerbrush: "\ea34";
$czs-rollerbrush-l: "\ea35";
$czs-router: "\ea36";
$czs-router-l: "\ea37";
$czs-rss: "\ea38";
$czs-ruler: "\ea39";
$czs-ruler-l: "\ea3a";
$czs-save: "\ea3b";
$czs-save-l: "\ea3c";
$czs-scan-l: "\ea3d";
$czs-scissors: "\ea3e";
$czs-sdcard: "\ea3f";
$czs-sdcard-l: "\ea40";
$czs-search-l: "\ea41";
$czs-server: "\ea42";
$czs-server-l: "\ea43";
$czs-servers: "\ea44";
$czs-setting: "\ea45";
$czs-setting-l: "\ea46";
$czs-share: "\ea47";
$czs-shield: "\ea48";
$czs-shield-l: "\ea49";
$czs-shop: "\ea4a";
$czs-shop-l: "\ea4b";
$czs-shopping-cart: "\ea4c";
$czs-shopping-cart-l: "\ea4d";
$czs-site-folder: "\ea4e";
$czs-site-folder-l: "\ea4f";
$czs-slider-l: "\ea50";
$czs-square: "\ea51";
$czs-square-l: "\ea52";
$czs-square-o: "\ea53";
$czs-star: "\ea54";
$czs-star-l: "\ea55";
$czs-steam: "\ea56";
$czs-storage: "\ea57";
$czs-storage-l: "\ea58";
$czs-sun: "\ea59";
$czs-sun-l: "\ea5a";
$czs-sword: "\ea5b";
$czs-sword-l: "\ea5c";
$czs-tab: "\ea5d";
$czs-tab-l: "\ea5e";
$czs-tag: "\ea5f";
$czs-tag-l: "\ea60";
$czs-taiji: "\ea61";
$czs-talk: "\ea62";
$czs-talk-l: "\ea63";
$czs-taobao: "\ea64";
$czs-t-brian: "\ea65";
$czs-telegram: "\ea66";
$czs-text-l: "\ea67";
$czs-thumbs-up: "\ea68";
$czs-thumbs-up-l: "\ea69";
$czs-ticket: "\ea6a";
$czs-ticket-l: "\ea6b";
$czs-time: "\ea6c";
$czs-time-l: "\ea6d";
$czs-tmall: "\ea6e";
$czs-transmission-l: "\ea6f";
$czs-transport: "\ea70";
$czs-trash: "\ea71";
$czs-trash-l: "\ea72";
$czs-triangle: "\ea73";
$czs-triangle-l: "\ea74";
$czs-triangle-o: "\ea75";
$czs-trophy: "\ea76";
$czs-trophy-l: "\ea77";
$czs-truck: "\ea78";
$czs-truck-l: "\ea79";
$czs-tv: "\ea7a";
$czs-tv-l: "\ea7b";
$czs-twitter: "\ea7c";
$czs-upload-l: "\ea7d";
$czs-usb: "\ea7e";
$czs-usb-l: "\ea7f";
$czs-user: "\ea80";
$czs-user-l: "\ea81";
$czs-v2ex: "\ea82";
$czs-vector-design: "\ea83";
$czs-video-camera: "\ea84";
$czs-video-camera-l: "\ea85";
$czs-video-file: "\ea86";
$czs-video-file-l: "\ea87";
$czs-vimeo: "\ea88";
$czs-virtual: "\ea89";
$czs-virtual-l: "\ea8a";
$czs-volume: "\ea8b";
$czs-volume-l: "\ea8c";
$czs-volume-x-l: "\ea8d";
$czs-wallet: "\ea8e";
$czs-wallet-l: "\ea8f";
$czs-warning: "\ea90";
$czs-warning-l: "\ea91";
$czs-watch: "\ea92";
$czs-watch-l: "\ea93";
$czs-webcam: "\ea94";
$czs-webcam-l: "\ea95";
$czs-web-edit: "\ea96";
$czs-web-edit-l: "\ea97";
$czs-weibo: "\ea98";
$czs-weixin: "\ea99";
$czs-weixinzhifu: "\ea9a";
$czs-wifi: "\ea9b";
$czs-wordpress: "\ea9c";
$czs-wrench: "\ea9d";
$czs-wrench-l: "\ea9e";
$czs-write-l: "\ea9f";
$czs-x-buy-l: "\eaa0";
$czs-youtube: "\eaa1";
$czs-zhihu: "\eaa2";
$czs-zip-folder: "\eaa3";
$czs-zip-folder-l: "\eaa4";

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,41 +0,0 @@
window.$message = () => {
ElMessage.closeAll()
return ElMessage
}
window.$box = ElMessageBox
let loading = null
window.$loading = () => {
return {
open: (text = '加载中...') => {
loading = ElLoading.service({
lock: true,
text: text,
})
},
close: () => {
loading.close()
},
}
}
window.$open = (url, obj = {}, type = 'href') => {
let urlString = url;
if (Object.keys(obj).length > 0) {
urlString += "?" + Object.entries(obj)
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
.join("&");
}
switch (type) {
case "href":
window.location.href = urlString;
break;
case "open":
window.open(urlString);
}
}
window.$response = (res, then) => {
if (res) {
if (res.code !== 200) return window.$message().error(res.message)
then()
}
}

@ -1,144 +0,0 @@
/*! Element Plus v2.7.8 */
var zhCn = {
name: "zh-cn",
el: {
breadcrumb: {
label: "\u9762\u5305\u5C51"
},
colorpicker: {
confirm: "\u786E\u5B9A",
clear: "\u6E05\u7A7A"
},
datepicker: {
now: "\u6B64\u523B",
today: "\u4ECA\u5929",
cancel: "\u53D6\u6D88",
clear: "\u6E05\u7A7A",
confirm: "\u786E\u5B9A",
selectDate: "\u9009\u62E9\u65E5\u671F",
selectTime: "\u9009\u62E9\u65F6\u95F4",
startDate: "\u5F00\u59CB\u65E5\u671F",
startTime: "\u5F00\u59CB\u65F6\u95F4",
endDate: "\u7ED3\u675F\u65E5\u671F",
endTime: "\u7ED3\u675F\u65F6\u95F4",
prevYear: "\u524D\u4E00\u5E74",
nextYear: "\u540E\u4E00\u5E74",
prevMonth: "\u4E0A\u4E2A\u6708",
nextMonth: "\u4E0B\u4E2A\u6708",
year: "\u5E74",
month1: "1 \u6708",
month2: "2 \u6708",
month3: "3 \u6708",
month4: "4 \u6708",
month5: "5 \u6708",
month6: "6 \u6708",
month7: "7 \u6708",
month8: "8 \u6708",
month9: "9 \u6708",
month10: "10 \u6708",
month11: "11 \u6708",
month12: "12 \u6708",
weeks: {
sun: "\u65E5",
mon: "\u4E00",
tue: "\u4E8C",
wed: "\u4E09",
thu: "\u56DB",
fri: "\u4E94",
sat: "\u516D"
},
months: {
jan: "\u4E00\u6708",
feb: "\u4E8C\u6708",
mar: "\u4E09\u6708",
apr: "\u56DB\u6708",
may: "\u4E94\u6708",
jun: "\u516D\u6708",
jul: "\u4E03\u6708",
aug: "\u516B\u6708",
sep: "\u4E5D\u6708",
oct: "\u5341\u6708",
nov: "\u5341\u4E00\u6708",
dec: "\u5341\u4E8C\u6708"
}
},
select: {
loading: "\u52A0\u8F7D\u4E2D",
noMatch: "\u65E0\u5339\u914D\u6570\u636E",
noData: "\u65E0\u6570\u636E",
placeholder: "\u8BF7\u9009\u62E9"
},
cascader: {
noMatch: "\u65E0\u5339\u914D\u6570\u636E",
loading: "\u52A0\u8F7D\u4E2D",
placeholder: "\u8BF7\u9009\u62E9",
noData: "\u6682\u65E0\u6570\u636E"
},
pagination: {
goto: "\u524D\u5F80",
pagesize: "\u6761/\u9875",
total: "\u5171 {total} \u6761",
pageClassifier: "\u9875",
page: "\u9875",
prev: "\u4E0A\u4E00\u9875",
next: "\u4E0B\u4E00\u9875",
currentPage: "\u7B2C {pager} \u9875",
prevPages: "\u5411\u524D {pager} \u9875",
nextPages: "\u5411\u540E {pager} \u9875",
deprecationWarning: "\u4F60\u4F7F\u7528\u4E86\u4E00\u4E9B\u5DF2\u88AB\u5E9F\u5F03\u7684\u7528\u6CD5\uFF0C\u8BF7\u53C2\u8003 el-pagination \u7684\u5B98\u65B9\u6587\u6863"
},
messagebox: {
title: "\u63D0\u793A",
confirm: "\u786E\u5B9A",
cancel: "\u53D6\u6D88",
error: "\u8F93\u5165\u7684\u6570\u636E\u4E0D\u5408\u6CD5!"
},
upload: {
deleteTip: "\u6309 delete \u952E\u53EF\u5220\u9664",
delete: "\u5220\u9664",
preview: "\u67E5\u770B\u56FE\u7247",
continue: "\u7EE7\u7EED\u4E0A\u4F20"
},
table: {
emptyText: "\u6682\u65E0\u6570\u636E",
confirmFilter: "\u7B5B\u9009",
resetFilter: "\u91CD\u7F6E",
clearFilter: "\u5168\u90E8",
sumText: "\u5408\u8BA1"
},
tour: {
next: "\u4E0B\u4E00\u6B65",
previous: "\u4E0A\u4E00\u6B65",
finish: "\u7ED3\u675F\u5BFC\u89C8"
},
tree: {
emptyText: "\u6682\u65E0\u6570\u636E"
},
transfer: {
noMatch: "\u65E0\u5339\u914D\u6570\u636E",
noData: "\u65E0\u6570\u636E",
titles: ["\u5217\u8868 1", "\u5217\u8868 2"],
filterPlaceholder: "\u8BF7\u8F93\u5165\u641C\u7D22\u5185\u5BB9",
noCheckedFormat: "\u5171 {total} \u9879",
hasCheckedFormat: "\u5DF2\u9009 {checked}/{total} \u9879"
},
image: {
error: "\u52A0\u8F7D\u5931\u8D25"
},
pageHeader: {
title: "\u8FD4\u56DE"
},
popconfirm: {
confirmButtonText: "\u786E\u5B9A",
cancelButtonText: "\u53D6\u6D88"
},
carousel: {
leftArrow: "\u4E0A\u4E00\u5F20\u5E7B\u706F\u7247",
rightArrow: "\u4E0B\u4E00\u5F20\u5E7B\u706F\u7247",
indicator: "\u5E7B\u706F\u7247\u5207\u6362\u81F3\u7D22\u5F15 {index}"
}
}
};
export { zhCn as default };

@ -2,17 +2,17 @@
<html lang="zh">
<head>
<meta charset="UTF-8" />
<meta charset="UTF-8"/>
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<link type="image/x-icon" rel="shortcut icon" href="./favicon.png" />
<link rel="stylesheet" href="./assets/import/element-plus.css" />
<link rel="stylesheet" href="./assets/import/element.css" />
<link href="./assets/import/tailwind.min.css" rel="stylesheet" />
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<link type="image/x-icon" rel="shortcut icon" href="./favicon.png"/>
<link rel="stylesheet" href="./assets/import/element-plus.css"/>
<link rel="stylesheet" href="./assets/import/element.css"/>
<link href="./assets/import/tailwind.min.css" rel="stylesheet"/>
<script src="./assets/import/vue.js"></script>
<script src="./assets/import/element-plus.js"></script>
<link rel="stylesheet" href="./assets/import/icon/style.css" />
<link rel="stylesheet" href="./assets/import/icon/style.css"/>
<script src="./assets/import/axios.js"></script>
<title>体检登记</title>
<style>
@ -107,345 +107,176 @@
align-items: center;
justify-content: center;
}
.item_active {
background: #cccccc50 !important;
}
.table_title_wrapper {
background: var(--el-fill-color-light);
border: #ebeef5 1px solid;
border-bottom: 0px;
padding: 8px 12px;
line-height: 23px;
font-size: 14px;
color: #909399;
font-weight: bold;
}
</style>
<script></script>
</head>
<body>
<div id="app">
<el-config-provider :button="button_config" :locale="elZh">
<el-dialog v-model="combo_dialog_show" title="选择套餐" width="800">
<div>
<div>
<div class="select_flex_wrapper">
<el-form label-width="40px" inline>
<el-form-item label="简拼">
<el-input v-model="combo_search_input" placeholder="" />
</el-form-item>
</el-form>
<el-button type="primary" @click="comboSearchClick()">搜索</el-button>
</div>
</div>
<el-table border :data="combo_list_show" style="width: 100%" height="calc(50vh - 45px)" show-overflow-tooltip
ref="combo_table_ref" @row-click="comboRowClick" :row-class-name="comboRowClassName">
<el-table-column property="combo_id" label="套餐ID" width="120"></el-table-column>
<el-table-column property="name" label="套餐名称"></el-table-column>
<el-table-column label="性别" width="60">
<template #default="scope">
{{ ['全部', '男', '女'][scope.row.sex] }}
</template>
</el-table-column>
<el-table-column property="pinyin" label="套餐简拼" width="120"></el-table-column>
<el-table-column property="price" label="价格" width="120"></el-table-column>
</el-table>
<div id="app">
<el-config-provider :button="button_config">
<el-dialog v-model="combo_dialog_show" title="选择套餐" width="800">
<div>
<el-table border :data="combo_list" style="width: 100%" height="calc(50vh - 45px)" show-overflow-tooltip
ref="combo_table_ref" @row-click="comboRowClick" :row-class-name="comboRowClassName">
<el-table-column property="combo_id" label="套餐ID" width="120"></el-table-column>
<el-table-column property="name" label="套餐名称"></el-table-column>
<el-table-column label="性别" width="60">
<template #default="scope">
{{ ['全部', '男', '女'][scope.row.sex] }}
</template>
</el-table-column>
<el-table-column property="pinyin" label="套餐简拼" width="120"></el-table-column>
</el-table>
</div>
</el-dialog>
<el-dialog v-model="plan_dialog_show" title="号源" width="800">
<div>
<div class="select_flex_wrapper">
<el-form label-width="40px" inline>
<el-form-item label="日期">
<el-date-picker v-model="plan_data.date" type="date" placeholder="请选择号源日期" format="YYYY-MM-DD"
value-format="YYYY-MM-DD"></el-date-picker>
</el-form-item>
</el-form>
<el-button @click="getPlanList()" type="primary">查看号源</el-button>
</div>
</el-dialog>
<el-dialog v-model="plan_dialog_show" title="号源" width="800">
<div>
<div class="select_flex_wrapper">
<el-form label-width="40px" inline>
<el-form-item label="日期">
<el-date-picker v-model="plan_data.date" type="date" placeholder="请选择号源日期" format="YYYY-MM-DD"
value-format="YYYY-MM-DD"></el-date-picker>
</el-form-item>
</el-form>
<el-button @click="getPlanList()" type="primary">查看号源</el-button>
</div>
<div class="plan_show_wrapper">
<div @click="selectPlanClick(i)" class="plan_item_wrapper" v-for="(i,k) in plan_list" :key="k" :class="[
<div class="plan_show_wrapper">
<div @click="selectPlanClick(i)" class="plan_item_wrapper" v-for="(i,k) in plan_list" :key="k" :class="[
i.is_vip === 1 ? 'plan_item_vip_wrapper' : '',
(i.sex !== Number(input_data.gender) && i.sex !== 0) ? 'plan_item_error_wrapper' : '',
i.status === 2 ? 'plan_item_error_wrapper' : '',
(i.is_vip === 1 && input_data.vip !== '1') ? 'plan_item_error_wrapper' : '',
(i.id === plan_data.active) ? 'plan_item_active_wrapper' : '',
]">
{{ i.plan_number }}
</div>
<div class="plan_item_blank_wrapper" v-for="(i,k) in 6" :key="k"></div>
</div>
<div class="select_flex_center_wrapper">
<el-button @click="plan_dialog_show = false">取消</el-button>
<el-button @click="createOrderClick()" type="primary">预约</el-button>
{{ i.plan_number }}
</div>
<div class="plan_item_blank_wrapper" v-for="(i,k) in 6" :key="k"></div>
</div>
</el-dialog>
<div class="page_wrapper">
<div class="input_box_wrapper">
<el-form label-width="80px">
<el-form-item label="院区">
<el-select v-model="input_data.hospital" placeholder="请选择院区">
<el-option label="秀英院区" value="1"></el-option>
<el-option label="府城院区" value="4"></el-option>
</el-select>
</el-form-item>
<el-form-item label="姓名">
<el-input v-model="input_data.name" placeholder="请输入姓名" />
</el-form-item>
<el-form-item label="证件号">
<el-input @change="idNumberUpdate" v-model="input_data.id_number" placeholder="请输入证件号" />
</el-form-item>
<el-form-item label="手机号">
<el-input v-model="input_data.phone" placeholder="请输入手机号" />
</el-form-item>
<el-form-item label="性别">
<el-select v-model="input_data.gender" placeholder="请选择性别">
<el-option label="男" value="1"></el-option>
<el-option label="女" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="婚否">
<el-select v-model="input_data.married" placeholder="请选择婚否">
<el-option v-for="(i,k) in married_array" :label="i.label" :value="i.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="VIP">
<el-select v-model="input_data.vip" placeholder="请选择VIP类型">
<el-option label="是" value="1"></el-option>
<el-option label="否" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="出生日期">
<el-date-picker v-model="input_data.birthday" type="date" placeholder="请选择出生日期" format="YYYY-MM-DD"
value-format="YYYY-MM-DD"></el-date-picker>
</el-form-item>
<el-form-item label="登记人">
<el-input v-model="input_data.doctor" placeholder="请输入登记人" />
</el-form-item>
</el-form>
<div class="select_flex_center_wrapper">
<el-button @click="plan_dialog_show = false">取消</el-button>
<el-button @click="createOrderClick()" type="primary">预约</el-button>
</div>
<div class="select_box_wrapper">
<div class="select_input_wrapper">
<div class="select_flex_wrapper">
<el-form label-width="40px" inline>
<el-form-item label="简拼">
<el-input v-model="search_input" placeholder="" />
</el-form-item>
</el-form>
<el-button type="primary" @click="searchClick()">搜索</el-button>
</div>
<div class="select_flex_wrapper">
<el-form v-if="combo_list.length > 0" label-width="40px" inline>
<el-form-item label="套餐">
<div class="combo_show_wrapper">
{{ !!combo_show ? combo_show.name : '无' }}
</div>
</el-form-item>
</el-form>
<el-button @click="selectComboFunc()" type="primary">选择套餐</el-button>
</div>
</div>
</el-dialog>
<div class="page_wrapper">
<div class="input_box_wrapper">
<el-form label-width="80px">
<el-form-item label="院区">
<el-select v-model="input_data.hospital" placeholder="请选择院区">
<el-option label="秀英院区" value="1"></el-option>
<el-option label="府城院区" value="4"></el-option>
</el-select>
</el-form-item>
<el-form-item label="姓名">
<el-input v-model="input_data.name" placeholder="请输入姓名"/>
</el-form-item>
<el-form-item label="身份证号">
<el-input @change="idNumberUpdate" v-model="input_data.id_number" placeholder="请输入身份证号"/>
</el-form-item>
<el-form-item label="手机号">
<el-input v-model="input_data.phone" placeholder="请输入手机号"/>
</el-form-item>
<el-form-item label="性别">
<el-select v-model="input_data.gender" placeholder="请选择性别">
<el-option label="男" value="1"></el-option>
<el-option label="女" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="婚否">
<el-select v-model="input_data.married" placeholder="请选择婚否">
<el-option v-for="(i,k) in married_array" :label="i.label" :value="i.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="VIP">
<el-select v-model="input_data.vip" placeholder="请选择VIP类型">
<el-option label="是" value="1"></el-option>
<el-option label="否" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="出生日期">
<el-date-picker v-model="input_data.birthday" type="date" placeholder="请选择出生日期" format="YYYY-MM-DD"
value-format="YYYY-MM-DD"></el-date-picker>
</el-form-item>
<el-form-item label="登记人">
<el-input v-model="input_data.doctor" placeholder="请输入登记人"/>
</el-form-item>
</el-form>
</div>
<div class="select_box_wrapper">
<div class="select_input_wrapper">
<div class="select_flex_wrapper">
<el-form label-width="40px" inline>
<el-form-item label="简拼">
<el-input v-model="search_input" placeholder=""/>
</el-form-item>
</el-form>
<el-button type="primary" @click="searchClick()">搜索</el-button>
</div>
<div>
<div class="table_title_wrapper">待选项目</div>
<el-table border @selection-change="itemSelectionChange" highlight-current-row @row-click="tableRowClick"
ref="item_table_ref" show-overflow-tooltip :data="item_list_show" style="width: 100%"
height="calc(50vh - 100px)" :row-class-name="itemTableRowClassName">
<el-table-column type="selection" width="38"></el-table-column>
<el-table-column property="title" label="项目名称" width="120"></el-table-column>
<el-table-column property="price" label="价格" width="80"></el-table-column>
<el-table-column property="group" label="科室" width="80"></el-table-column>
<el-table-column label="性别" width="60">
<template #default="scope">
{{ ['全部', '男', '女'][scope.row.sex] }}
</template>
</el-table-column>
<el-table-column property="desc" label="备注"></el-table-column>
<el-table-column property="id" label="项目ID" width="120"></el-table-column>
<el-table-column property="can_qian_hou" label="餐前/餐后" width="90"></el-table-column>
</el-table>
<div class="select_flex_wrapper">
<el-form v-if="combo_list.length > 0" label-width="40px" inline>
<el-form-item label="套餐">
<div class="combo_show_wrapper">
{{ !!combo_show ? combo_show.name : '无' }}
</div>
</el-form-item>
</el-form>
<el-button @click="combo_dialog_show = true" type="primary">选择套餐</el-button>
</div>
<div class="mt-3">
<div class="table_title_wrapper">已选项目</div>
<el-table border :data="select_table_computed" style="width: 100%" height="calc(50vh - 45px - 79px)"
show-overflow-tooltip ref="select_table_ref" row-class-name="cursor-pointer" highlight-current-row
@row-click="itemRowClick">
<el-table-column type="selection" width="38"></el-table-column>
<el-table-column property="name" label="项目名称" width="120"></el-table-column>
<el-table-column property="group" label="科室" width="100"></el-table-column>
<el-table-column property="desc" label="备注"></el-table-column>
<el-table-column property="type" label="类型" width="80"></el-table-column>
<el-table-column property="id" label="项目ID" width="120"></el-table-column>
</el-table>
</div>
<div>
<el-table border @selection-change="itemSelectionChange" row-class-name="cursor-pointer"
highlight-current-row @row-click="tableRowClick" ref="item_table_ref" show-overflow-tooltip
:data="item_list_show" style="width: 100%" height="calc(50vh - 100px)">
<el-table-column type="selection" width="38"></el-table-column>
<el-table-column property="title" label="项目名称" width="120"></el-table-column>
<el-table-column property="price" label="价格" width="80"></el-table-column>
<el-table-column property="group" label="科室" width="80"></el-table-column>
<el-table-column label="性别" width="60">
<template #default="scope">
{{ ['全部', '男', '女'][scope.row.sex] }}
</template>
</el-table-column>
<el-table-column property="desc" label="备注"></el-table-column>
<el-table-column property="id" label="项目ID" width="120"></el-table-column>
<el-table-column property="can_qian_hou" label="餐前/餐后" width="90"></el-table-column>
</el-table>
</div>
<div class="mt-3">
<el-table border :data="select_table_computed" style="width: 100%" height="calc(50vh - 45px)"
show-overflow-tooltip ref="select_table_ref" row-class-name="cursor-pointer" highlight-current-row
@row-click="itemRowClick">
<el-table-column type="selection" width="38"></el-table-column>
<el-table-column property="name" label="项目名称" width="120"></el-table-column>
<el-table-column property="group" label="科室" width="100"></el-table-column>
<el-table-column property="desc" label="备注"></el-table-column>
<el-table-column property="type" label="类型" width="80"></el-table-column>
<el-table-column property="id" label="项目ID" width="120"></el-table-column>
</el-table>
</div>
<div class="price_wrapper">
<div class="price_value_wrapper">
<span v-if="!!pay_info">合计价格:¥ {{ pay_info.true_price }}</span>
</div>
<div class="price_wrapper">
<div class="price_value_wrapper">
<span v-if="!!pay_info">合计价格:¥ {{ pay_info.true_price }}</span>
</div>
<div>
<el-button @click="removeItemClick()" type="danger">移除项目</el-button>
<el-button @click="planDialogShowClick()" type="primary">预约登记</el-button>
</div>
<div>
<el-button @click="removeItemClick()" type="danger">移除项目</el-button>
<el-button @click="planDialogShowClick()" type="primary">预约登记</el-button>
</div>
</div>
</div>
</el-config-provider>
</div>
</div>
</el-config-provider>
</div>
</body>
<script>
const { createApp, onMounted, ref, nextTick, computed } = Vue;
const { ElLoading, ElMessage, ElMessageBox } = ElementPlus;
const {createApp, onMounted, ref, nextTick, computed} = Vue;
const {ElLoading, ElMessage, ElMessageBox} = ElementPlus;
</script>
<script src="./assets/mounting.js"></script>
<script>
const App = {
setup() {
var zhCn = {
name: "zh-cn",
el: {
breadcrumb: {
label: "\u9762\u5305\u5C51"
},
colorpicker: {
confirm: "\u786E\u5B9A",
clear: "\u6E05\u7A7A"
},
datepicker: {
now: "\u6B64\u523B",
today: "\u4ECA\u5929",
cancel: "\u53D6\u6D88",
clear: "\u6E05\u7A7A",
confirm: "\u786E\u5B9A",
selectDate: "\u9009\u62E9\u65E5\u671F",
selectTime: "\u9009\u62E9\u65F6\u95F4",
startDate: "\u5F00\u59CB\u65E5\u671F",
startTime: "\u5F00\u59CB\u65F6\u95F4",
endDate: "\u7ED3\u675F\u65E5\u671F",
endTime: "\u7ED3\u675F\u65F6\u95F4",
prevYear: "\u524D\u4E00\u5E74",
nextYear: "\u540E\u4E00\u5E74",
prevMonth: "\u4E0A\u4E2A\u6708",
nextMonth: "\u4E0B\u4E2A\u6708",
year: "\u5E74",
month1: "1 \u6708",
month2: "2 \u6708",
month3: "3 \u6708",
month4: "4 \u6708",
month5: "5 \u6708",
month6: "6 \u6708",
month7: "7 \u6708",
month8: "8 \u6708",
month9: "9 \u6708",
month10: "10 \u6708",
month11: "11 \u6708",
month12: "12 \u6708",
weeks: {
sun: "\u65E5",
mon: "\u4E00",
tue: "\u4E8C",
wed: "\u4E09",
thu: "\u56DB",
fri: "\u4E94",
sat: "\u516D"
},
months: {
jan: "\u4E00\u6708",
feb: "\u4E8C\u6708",
mar: "\u4E09\u6708",
apr: "\u56DB\u6708",
may: "\u4E94\u6708",
jun: "\u516D\u6708",
jul: "\u4E03\u6708",
aug: "\u516B\u6708",
sep: "\u4E5D\u6708",
oct: "\u5341\u6708",
nov: "\u5341\u4E00\u6708",
dec: "\u5341\u4E8C\u6708"
}
},
select: {
loading: "\u52A0\u8F7D\u4E2D",
noMatch: "\u65E0\u5339\u914D\u6570\u636E",
noData: "\u65E0\u6570\u636E",
placeholder: "\u8BF7\u9009\u62E9"
},
cascader: {
noMatch: "\u65E0\u5339\u914D\u6570\u636E",
loading: "\u52A0\u8F7D\u4E2D",
placeholder: "\u8BF7\u9009\u62E9",
noData: "\u6682\u65E0\u6570\u636E"
},
pagination: {
goto: "\u524D\u5F80",
pagesize: "\u6761/\u9875",
total: "\u5171 {total} \u6761",
pageClassifier: "\u9875",
page: "\u9875",
prev: "\u4E0A\u4E00\u9875",
next: "\u4E0B\u4E00\u9875",
currentPage: "\u7B2C {pager} \u9875",
prevPages: "\u5411\u524D {pager} \u9875",
nextPages: "\u5411\u540E {pager} \u9875",
deprecationWarning: "\u4F60\u4F7F\u7528\u4E86\u4E00\u4E9B\u5DF2\u88AB\u5E9F\u5F03\u7684\u7528\u6CD5\uFF0C\u8BF7\u53C2\u8003 el-pagination \u7684\u5B98\u65B9\u6587\u6863"
},
messagebox: {
title: "\u63D0\u793A",
confirm: "\u786E\u5B9A",
cancel: "\u53D6\u6D88",
error: "\u8F93\u5165\u7684\u6570\u636E\u4E0D\u5408\u6CD5!"
},
upload: {
deleteTip: "\u6309 delete \u952E\u53EF\u5220\u9664",
delete: "\u5220\u9664",
preview: "\u67E5\u770B\u56FE\u7247",
continue: "\u7EE7\u7EED\u4E0A\u4F20"
},
table: {
emptyText: "\u6682\u65E0\u6570\u636E",
confirmFilter: "\u7B5B\u9009",
resetFilter: "\u91CD\u7F6E",
clearFilter: "\u5168\u90E8",
sumText: "\u5408\u8BA1"
},
tour: {
next: "\u4E0B\u4E00\u6B65",
previous: "\u4E0A\u4E00\u6B65",
finish: "\u7ED3\u675F\u5BFC\u89C8"
},
tree: {
emptyText: "\u6682\u65E0\u6570\u636E"
},
transfer: {
noMatch: "\u65E0\u5339\u914D\u6570\u636E",
noData: "\u65E0\u6570\u636E",
titles: ["\u5217\u8868 1", "\u5217\u8868 2"],
filterPlaceholder: "\u8BF7\u8F93\u5165\u641C\u7D22\u5185\u5BB9",
noCheckedFormat: "\u5171 {total} \u9879",
hasCheckedFormat: "\u5DF2\u9009 {checked}/{total} \u9879"
},
image: {
error: "\u52A0\u8F7D\u5931\u8D25"
},
pageHeader: {
title: "\u8FD4\u56DE"
},
popconfirm: {
confirmButtonText: "\u786E\u5B9A",
cancelButtonText: "\u53D6\u6D88"
},
carousel: {
leftArrow: "\u4E0A\u4E00\u5F20\u5E7B\u706F\u7247",
rightArrow: "\u4E0B\u4E00\u5F20\u5E7B\u706F\u7247",
indicator: "\u5E7B\u706F\u7247\u5207\u6362\u81F3\u7D22\u5F15 {index}"
}
}
};
let elZh = zhCn
const button_config = {
autoInsertSpace: true,
};
@ -518,8 +349,7 @@
ComboGetList: "/api/Web/ComboGetList",
BuyInfo: "/api/Web/BuyInfo",
Create: "/api/Web/Create",
GetDayPlanList: "/api/H5/GetDayPlanList",
CreateYuYueOrder: "/api/Web/CreateYuYueOrder"
GetDayPlanList: "/api/H5/GetDayPlanList"
};
const $api = (key) => {
return api_map[key];
@ -551,14 +381,6 @@
select_items_deep.value = ids.join(',');
};
const search_input_deep = ref('search_input_deep')
const combo_search_input = ref('')
const combo_search_input_deep = ref('')
const comboSearchClick = () => {
if (combo_search_input.value === combo_search_input_deep.value) {
return
}
combo_search_input_deep.value = combo_search_input.value
}
const searchClick = () => {
if (search_input_deep.value === search_input.value) {
return
@ -626,7 +448,6 @@
let item_ids = getSelectItemIds();
let combo_id = select_data.value.combo;
if (item_ids.length === 0 && !combo_id && type !== '3') {
pay_info.value = false
return
}
const response = await await axios.post($api('BuyInfo'), {
@ -658,20 +479,6 @@
});
};
const combo_list = ref([])
const combo_list_show = computed(() => {
if (!!combo_search_input_deep.value) {
let search_str = combo_search_input_deep.value.toUpperCase();
let il = []
for (let i in combo_list.value) {
if (!!combo_list.value[i].pinyin.includes(search_str)) {
il.push(combo_list.value[i])
}
}
return il
} else {
return combo_list.value
}
})
const getComboGetList = async () => {
const response = await axios.post($api("ComboGetList"), {
hospital: input_data.value.hospital,
@ -850,16 +657,9 @@
}
getBuyInfo('3');
}
const selectComboFunc = ()=>{
combo_dialog_show.value = true
ComboisClickDisabled.value = false;
}
const combo_table_ref = ref(null)
const combo_dialog_show = ref(false)
let ComboisClickDisabled =ref(false) ;
const comboRowClick = (e, index) => {
if (ComboisClickDisabled.value) return;
ComboisClickDisabled.value = true;
if (select_data.value.combo === e.combo_id) {
select_data.value.combo = ''
} else {
@ -869,7 +669,7 @@
combo_dialog_show.value = false
}
const comboRowClassName = ({ row }) => {
const comboRowClassName = ({row}) => {
if (select_data.value.combo === row.combo_id) {
return 'combo_active cursor-pointer'
} else {
@ -901,6 +701,10 @@
window.$message().error('请输入手机号')
return false
}
if (input_data.value.id_number === '') {
window.$message().error('请输入身份证号')
return false
}
return true
}
const planDialogShowClick = () => {
@ -917,7 +721,7 @@
if (plan.status === 2) {
return window.$message().error('号源不可用')
}
if (plan.sex !== Number(input_data.value.gender) && plan.sex !== 0) {
if (plan.sex === Number(input_data.value.gender) && plan.sex !== 0) {
return window.$message().error('号源性别不符')
}
if (plan.is_vip === 1 && input_data.value.vip !== '1') {
@ -928,13 +732,10 @@
}
const plan_list = ref([])
const getPlanList = async () => {
if(input_data.value.gender==='男') input_data.value.gender="1"
if(input_data.value.gender==='女') input_data.value.gender="2"
const response = await axios.post($api("GetDayPlanList"), {
hospital: input_data.value.hospital,
openid: "",
person_id: "",
person_sex:input_data.value.gender,
date: plan_data.value.date,
use_type: 1,
checkup_type_id: 1,
@ -943,18 +744,14 @@
window.$response(response.data, () => {
plan_list.value = response.data.data.list;
plan_dialog_show.value = true
if(plan_list.value.length===0){
alert("当前日期暂无号源");
}
});
}
const createOrderClick = async () => {
let item_ids = getSelectItemIds();
let combo_id = select_data.value.combo;
let create_type = true
if (item_ids.length === 0 && !combo_id) {
create_type = false
return window.$message().error('预约内容为空')
}
if (!plan_data.value.active) {
return window.$message().error('请选择预约号源')
@ -963,10 +760,7 @@
if (!check) {
return
}
if (input_data.value.id_number === '') {
create_type = false
}
const response = await axios.post($api(!!create_type ? "Create" : 'CreateYuYueOrder'), {
const response = await axios.post($api("Create"), {
type: 1,
hospital: input_data.value.hospital,
combo_id: combo_id,
@ -987,25 +781,11 @@
window.$message().success('预约完成')
plan_dialog_show.value = false
setTimeout(() => {
window.location.reload();
// window.location.reload();
}, 2000);
});
}
const itemTableRowClassName = (e) => {
const select_rows = item_table_ref.value.getSelectionRows();
let select_ids = [];
for (let i in select_rows) {
select_ids.push(select_rows[i].id)
}
if (select_ids.includes(e.row.id)) {
console.log('select_ids', select_ids, e.row.id)
return 'item_active cursor-pointer'
} else {
return 'cursor-pointer'
}
}
onMounted(() => {
getQueryData();
getItemGetList();
@ -1013,8 +793,6 @@
});
return {
elZh,
itemTableRowClassName,
createOrderClick,
selectPlanClick,
getPlanList,
@ -1027,9 +805,6 @@
idNumberUpdate,
tableRowClick,
planDialogShowClick,
comboSearchClick,
selectComboFunc,
combo_search_input,
married_array,
plan_list,
plan_data,
@ -1038,7 +813,6 @@
combo_table_ref,
combo_dialog_show,
combo_list,
combo_list_show,
select_table_ref,
pay_info,
item_list_show,

@ -1,181 +0,0 @@
<!doctype html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link type="image/x-icon" rel="shortcut icon" href="./favicon.ico"/>
<link rel="stylesheet" href="./assets/import/element-plus.css"/>
<link rel="stylesheet" href="./assets/import/element.css"/>
<link href="./assets/import/tailwind.min.css" rel="stylesheet">
<script src="./assets/import/vue.js"></script>
<script src="./assets/import/element-plus.js"></script>
<link rel="stylesheet" href="./assets/import/icon/style.css">
<script src="./assets/import/axios.js"></script>
<title>分诊自助登记</title>
<style>
[v-cloak] {
display: none;
}
body {
margin: 0;
padding: 0;
}
.title_wrapper {
margin-top: 50px;
line-height: 1;
font-size: 30px;
font-weight: bold;
text-align: center;
}
.search_wrapper {
width: calc(100% - 60px);
margin: 30px auto 0;
}
.search_button_wrapper {
width: 100%;
}
.no_queue_wrapper {
color: #999999;
text-align: center;
padding: 30px 0;
height: 60px;
line-height: 60px;
}
.queue_wrapper {
margin: 20px auto 0;
padding: 20px;
background: #37A0FB30;
}
.queue_button_wrapper {
width: 100%;
margin: 20px auto 0;
}
.queue_box_wrapper {
width: calc(100% - 60px);
margin: 0 auto;
}
</style>
<script>
</script>
</head>
<body>
<div id="app" v-cloak>
<el-config-provider :button="button_config">
<div>
<div class="title_wrapper">分诊自助登记</div>
<div class="search_wrapper">
<el-form label-position="top">
<el-form-item label="证件号">
<el-input v-model="id_number" placeholder="请输入证件号"></el-input>
</el-form-item>
</el-form>
<el-button @click="searchClick()" class="search_button_wrapper" type="primary">查询</el-button>
</div>
@if($id_number != '')
<div class="queue_box_wrapper">
@if(count($queue) != 0)
<div class="queue_wrapper">
<el-form label-width="auto">
<el-form-item label="姓名">{{ $queue[0]['name'] }}</el-form-item>
<el-form-item label="诊室">{{ $queue[0]['clinic'] }}</el-form-item>
<el-form-item label="项目">{{ $queue[0]['item'] }}</el-form-item>
</el-form>
</div>
<el-button @click="doneClick(`{{ $queue[0]['id'] }}`)" class="queue_button_wrapper" type="primary">确认并登记</el-button>
@else
<div class="no_queue_wrapper">未查询到排队信息</div>
@endif
</div>
@endif
</div>
</el-config-provider>
</div>
</body>
<script>
const {createApp, onMounted, ref, nextTick, computed} = Vue
const {ElLoading, ElMessage, ElMessageBox} = ElementPlus
</script>
<script src="./assets/mounting.js"></script>
<script>
const App = {
setup() {
const button_config = {
autoInsertSpace: true,
}
const id_number = ref('{{ $id_number }}')
const searchClick = () => {
if (id_number.value !== '{{ $id_number }}') {
window.location.href = '/fz?id_number=' + id_number.value
}
}
const searchCountZero = () => {
window.$box.alert(`未查询到排队信息`, '提示', {
confirmButtonText: '确定',
callback: () => {
},
})
}
const doneClick = async (id) => {
const idn = '{{ $id_number }}'
if (!!idn && id) {
const response = await axios.post('/api/Fz/change', {
id: id,
id_number: idn,
});
if (response.data.status) {
if (response.data.data.queue.length > 0) {
const clinic = response.data.data.queue[0].clinic
window.$box.alert(`登记成功,请前往${clinic}排队`, '提示', {
confirmButtonText: '确定',
callback: () => {
window.location.reload()
},
})
} else {
window.$box.alert(`登记失败,未查询到相关记录`, '提示', {
confirmButtonText: '确定',
callback: () => {
window.location.reload()
},
})
}
} else {
window.$message().error(response.data.msg)
}
}
}
onMounted(() => {
@if($id_number != '' && count($queue) == 0)
searchCountZero()
@endif
})
return {
id_number,
button_config,
doneClick,
searchClick
}
}
}
const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')
</script>
</html>

@ -24,25 +24,16 @@ Route::post('/tokenRefresh', 'App\Http\Controllers\API\TokenController@TokenRefr
Route::group(['middleware' => ['checktoken', 'log'], 'prefix' => 'v1'], function () { //路由分组
// 问卷调查 开始
Route::post('admin/questionList/create', 'App\Http\Controllers\API\Admin\QuestionListController@create');
Route::post('admin/questionList/update', 'App\Http\Controllers\API\Admin\QuestionListController@update');
Route::post('admin/questionList/delete', 'App\Http\Controllers\API\Admin\QuestionListController@delete');
Route::post('admin/questionList/list', 'App\Http\Controllers\API\Admin\QuestionListController@list');
Route::post('admin/question/create', 'App\Http\Controllers\API\Admin\QuestionnaireController@create');
Route::post('admin/question/update', 'App\Http\Controllers\API\Admin\QuestionnaireController@update');
Route::post('admin/question/delete', 'App\Http\Controllers\API\Admin\QuestionnaireController@delete');
Route::post('admin/question/list', 'App\Http\Controllers\API\Admin\QuestionnaireController@list');
Route::post('admin/question/select', 'App\Http\Controllers\API\Admin\QuestionnaireController@select');
Route::post('admin/questionQuestion/select', 'App\Http\Controllers\API\Admin\QuestionQuestionController@select');
Route::post('admin/questionQuestion/create', 'App\Http\Controllers\API\Admin\QuestionQuestionController@create');
Route::post('admin/questionQuestion/update', 'App\Http\Controllers\API\Admin\QuestionQuestionController@update');
Route::post('admin/questionQuestion/delete', 'App\Http\Controllers\API\Admin\QuestionQuestionController@delete');
Route::post('admin/questionQuestion/list', 'App\Http\Controllers\API\Admin\QuestionQuestionController@list');
Route::post('admin/questionItem/select', 'App\Http\Controllers\API\Admin\QuestionItemController@select');
Route::post('admin/questionItem/combo', 'App\Http\Controllers\API\Admin\QuestionItemController@combo');
Route::post('admin/questionItem/item', 'App\Http\Controllers\API\Admin\QuestionItemController@item');
Route::post('admin/questionItem/create', 'App\Http\Controllers\API\Admin\QuestionItemController@create');
Route::post('admin/questionItem/update', 'App\Http\Controllers\API\Admin\QuestionItemController@update');
@ -90,16 +81,10 @@ Route::group(['middleware' => ['checktoken', 'log'], 'prefix' => 'v1'], function
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/PlanDel', 'App\Http\Controllers\API\Admin\YeWu\PlanController@Del');//
Route::post('admin/PlanBatchUpdatePlanType', 'App\Http\Controllers\API\Admin\YeWu\PlanController@BatchUpdatePlanType');//保存号源详情
Route::post('admin/PlanListGetList', 'App\Http\Controllers\API\Admin\YeWu\PlanListController@GetList');//号源列表的列表
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/ComboGetAllList', 'App\Http\Controllers\API\Admin\YeWu\ComboController@GetAllList');//获取全部套餐
Route::post('admin/ComboSave', 'App\Http\Controllers\API\Admin\YeWu\ComboController@Save');//获取全部套餐
Route::post('admin/ComboSaveOrder', 'App\Http\Controllers\API\Admin\YeWu\ComboController@SaveOrder');//保存排序
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');
@ -107,15 +92,8 @@ Route::group(['middleware' => ['checktoken', 'log'], 'prefix' => 'v1'], function
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/ComboTypeGetList', 'App\Http\Controllers\API\Admin\YeWu\ComboTypeController@GetList');//套餐类型列表
Route::post('admin/ComboTypeSave', 'App\Http\Controllers\API\Admin\YeWu\ComboTypeController@Save');//套餐类型列表
Route::post('admin/ComboTypeDel', 'App\Http\Controllers\API\Admin\YeWu\ComboTypeController@Del');//套餐类型列表
Route::post('admin/ComboCrowdGetList', 'App\Http\Controllers\API\Admin\YeWu\ComboCrowdController@GetList');//套餐适应人群
Route::post('admin/ComboCrowdSave', 'App\Http\Controllers\API\Admin\YeWu\ComboCrowdController@Save');//套餐适应人群保存
Route::post('admin/ComboCrowdDel', 'App\Http\Controllers\API\Admin\YeWu\ComboCrowdController@Del');//套餐适应人群删除
Route::post('admin/OrderGetList', 'App\Http\Controllers\API\Admin\YeWu\OrderController@GetList');//订单列表
Route::post('admin/OrderGetDetail', 'App\Http\Controllers\API\Admin\YeWu\OrderController@GetDetail');//订单详情
Route::post('admin/OrderSave', 'App\Http\Controllers\API\Admin\YeWu\OrderController@Save');//订单保存
Route::post('admin/OrderRefund', 'App\Http\Controllers\API\Admin\YeWu\OrderController@Refund');//订单退款
Route::post('admin/QuestionGetList', 'App\Http\Controllers\API\Admin\YeWu\QuestionController@GetList');//问答列表
Route::post('admin/QuestionSave', 'App\Http\Controllers\API\Admin\YeWu\QuestionController@Save');//保存题目
Route::post('admin/QuestionGetDetail', 'App\Http\Controllers\API\Admin\YeWu\QuestionController@GetDetail');//题目详情
@ -124,19 +102,6 @@ Route::group(['middleware' => ['checktoken', 'log'], 'prefix' => 'v1'], function
Route::post('admin/ArticleSave', 'App\Http\Controllers\API\Admin\YeWu\ArticleController@Save');//文章保存
Route::post('admin/ArticleGetDetail', 'App\Http\Controllers\API\Admin\YeWu\ArticleController@GetDetail');//文章详情
Route::post('admin/ArticleGetDel', 'App\Http\Controllers\API\Admin\YeWu\ArticleController@Del');//文章详情
Route::post('admin/AnalysisTypeGetList', 'App\Http\Controllers\API\Admin\YeWu\AnalysisTypeController@GetList');//趋势项目
Route::post('admin/AnalysisTypeGetDetail', 'App\Http\Controllers\API\Admin\YeWu\AnalysisTypeController@GetDetail');//趋势项目
Route::post('admin/AnalysisTypeSave', 'App\Http\Controllers\API\Admin\YeWu\AnalysisTypeController@Save');//趋势项目
Route::post('admin/YuYueOrderGetList', 'App\Http\Controllers\API\Admin\YeWu\YuYueOrderController@GetList');//客服订单列表
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');
Route::post('admin/QuestionExport', 'App\Http\Controllers\API\Admin\YeWu\QuestionLogController@Export');//导出回答

@ -4,17 +4,6 @@ use Illuminate\Support\Facades\Route;
Route::any('/api/test', 'App\Http\Controllers\TestController@ApiTest');
Route::post("/api/Fz/change", [\App\Http\Controllers\H5\FenzhenController::class, 'check_in_action']);
Route::get("/fz", [\App\Http\Controllers\H5\FenzhenController::class, 'check_in']);
Route::any("/api/H5/User/hunjian", [\App\Http\Controllers\API\H5\UserController::class, 'hunjian']);
Route::any("/api/H5/Question/choose", [\App\Http\Controllers\API\H5\QuestionnaireController::class, 'list']);
Route::any("/api/H5/QuestionLog/push", [\App\Http\Controllers\API\H5\QuestionnairesLogsController::class, 'push']);
Route::any("/api/H5/QuestionLog/delete", [\App\Http\Controllers\API\H5\QuestionnairesLogsController::class, 'delete']);
Route::any("/api/H5/QuestionLog/list", [\App\Http\Controllers\API\H5\QuestionnairesLogsController::class, 'list']);
Route::any("/api/H5/QuestionLog/info", [\App\Http\Controllers\API\H5\QuestionnairesLogsController::class, 'info']);
Route::any("/api/H5/Question/submit", [\App\Http\Controllers\API\H5\QuestionnairesLogsController::class, 'submit']);
Route::any("/api/H5/Question/get", [\App\Http\Controllers\API\H5\QuestionnaireController::class, 'get']);
Route::any("/api/H5/Fenzhen/check", [\App\Http\Controllers\API\H5\FenzhenController::class, 'check']);
Route::any("/api/H5/Fenzhen/abandon", [\App\Http\Controllers\API\H5\FenzhenController::class, 'abandon']);
Route::any("/api/H5/Fenzhen/info", [\App\Http\Controllers\API\H5\FenzhenController::class, 'info']);
@ -30,6 +19,5 @@ Route::any("/api/H5/Config/config", [\App\Http\Controllers\API\H5\HomeController
Route::any("/api/Demo/pay_back", [\App\Http\Controllers\API\DemoController::class, 'pay_back']);
Route::any("/api/Demo/pay", [\App\Http\Controllers\API\DemoController::class, 'pay']);
Route::post("/api/H5/Address/data", [\App\Http\Controllers\API\ApiMapController::class, 'address']);
Route::any("/api/ApiMap/test", [\App\Http\Controllers\API\ApiMapController::class, 'test']);
Route::post("/api/ApiMap/{type}", [\App\Http\Controllers\API\ApiMapController::class, 'list']);

@ -29,8 +29,6 @@ Route::get('/wxLogin/{env}', function ($env) {
Route::get('/wxGetCode', 'App\Http\Controllers\API\mH5\LoginController@wxGetCode');
Route::get('/test', 'App\Http\Controllers\TestController@DBtest');
Route::any('/payNotify', 'App\Http\Controllers\API\H5\PayController@Notify')->middleware('log');//支付回调
Route::group(['middleware' => ['log'],'prefix' => 'api/H5'], function () {
Route::post('/CheckUpTypeGetList', 'App\Http\Controllers\API\H5\CheckUpTypeController@GetList');//获取体检类型分类
@ -51,8 +49,7 @@ Route::group(['middleware' => ['log'],'prefix' => 'api/H5'], function () {
Route::post('/GetPersonInfo', 'App\Http\Controllers\API\H5\UserController@GetPersonInfo');//获取体检人基本信息
Route::post('/UpdatePersonList', 'App\Http\Controllers\API\H5\UserController@UpdatePersonList');//远程获取小程序端用户列表
Route::post('/GetGeJianButtonList', 'App\Http\Controllers\API\H5\HomeController@GetGeJianButtonList');//点击个检获取页面按钮
Route::post('/GetPersonIntegralSaveMoneyCouponInfo', 'App\Http\Controllers\API\H5\IntegralSaveMoneyCouponController@GetInfo');
Route::post('/UsableIntegralSaveMoney', 'App\Http\Controllers\API\H5\IntegralSaveMoneyCouponController@UsableIntegralSaveMoney'); //获取本单可用金额和积分
Route::post('/GetPersonIntegralSaveMoneyCouponInfo', 'App\Http\Controllers\API\H5\IntegralSaveMoneyCouponController@GetInfo');//点击个检获取页面按钮
Route::post('/DoctorGetList', 'App\Http\Controllers\API\H5\DoctorController@GetList');//获取体检医生列表
Route::post('/ComboRecommend', 'App\Http\Controllers\API\H5\ComboController@ComboRecommend');//推荐套餐
Route::post('/NMRGetMonthPlanCount', 'App\Http\Controllers\API\H5\NMRController@GetMonthPlanCount');//核磁每日号源总数
@ -72,11 +69,7 @@ Route::group(['middleware' => ['log'],'prefix' => 'api/H5'], function () {
Route::post('/ReportAnalysis', 'App\Http\Controllers\API\H5\ReportController@Analysis');//报告趋势
Route::post('/AnalysisTypeGetList', 'App\Http\Controllers\API\H5\AnalysisTypeController@GetList');//趋势分析项目列表
Route::post('/HunQianQuestionSubmit', 'App\Http\Controllers\API\H5\QuestionController@HunQianQuestionSubmit');//婚前问卷提交
Route::post('/hunjianBySFZ', 'App\Http\Controllers\API\H5\UserController@hunjianBySFZ');//根据身份证查询建档信息
Route::post('/CheckedSignIn', 'App\Http\Controllers\API\H5\OrderController@CheckedSignIn');//检后签到
Route::post('/SendMsgCode', 'App\Http\Controllers\API\SendMsgCodeController@SendMsgCode');//发送验证码
Route::post('/CheckMsgCode', 'App\Http\Controllers\API\SendMsgCodeController@CheckMsgCode');//验证验证码
Route::post('/CheckEnableNmrTime', 'App\Http\Controllers\API\H5\NMRController@CheckEnableNmrTime');//查询是否有可用核磁号源
@ -86,30 +79,13 @@ Route::group(['middleware' => ['log'],'prefix' => 'api/H5'], function () {
});
Route::group(['middleware' => ['log'],'prefix' => 'api/Web'], function () {
Route::group(['prefix' => 'api/Web'], function () {
Route::post('/ComboGetList', 'App\Http\Controllers\API\Web\ComboController@GetList');//Web套餐列表
Route::post('/BuyInfo', 'App\Http\Controllers\API\Web\ComboController@BuyInfo');//Web购买详情
Route::post('/ItemGetList', 'App\Http\Controllers\API\Web\ItemController@GetList');//Web套餐列表
Route::post('/Create', 'App\Http\Controllers\API\Web\OrderController@Create');//Web套餐列表
Route::post('/CreateYuYueOrder', 'App\Http\Controllers\API\Web\OrderController@CreateYuYueOrder');//客服预约
});
//对外------
Route::any('/TJPushInfo', 'App\Http\Controllers\API\Internal\SiXinPushController@PushInfo');//接收思信推送
Route::any('/TJCheck', 'App\Http\Controllers\API\Internal\OrderController@TJCheck')->middleware('log');//到检
Route::any('/OrderBatchCancel', 'App\Http\Controllers\API\H5\OrderController@BatchCancel');//批量取消
Route::any('/GetH5Order', 'App\Http\Controllers\API\Internal\OrderController@GetH5Order')->middleware('log');//获取已经预约未到检订单
Route::any('/PlanList', 'App\Http\Controllers\API\Internal\PlanController@PlanList')->middleware('log');//获取可用号源列表
Route::any('/UsePlan', 'App\Http\Controllers\API\Internal\PlanController@UsePlan')->middleware('log');//占用号源
Route::any('/CancelUsePlan', 'App\Http\Controllers\API\Internal\PlanController@CancelUsePlan')->middleware('log');//取消占用号源
Route::post('/RoundPayCheck', 'App\Http\Controllers\API\H5\OrderController@RoundPayCheck');//轮询支付检查
Route::post('/Day1WXSend', 'App\Http\Controllers\API\H5\OrderController@Day1WXSend');//提前1天微信通知
Route::post('/AutoRefund', 'App\Http\Controllers\API\H5\PayController@AutoRefund')->middleware('log');//对外退款接口
Route::any('api/FenzhenInfoExport', 'App\Http\Controllers\H5\FenzhenController@export')->middleware('log');//导出报表
Route::any('api/FenzhenInfoExport2', 'App\Http\Controllers\H5\FenzhenController@export2')->middleware('log');//导出报表
Route::any('/GetTransferCode', 'App\Http\Controllers\API\Internal\TransferCodeController@GetTransferCode')->middleware('log');//查询转赠码
Route::any('/HandleTransferCode', 'App\Http\Controllers\API\Internal\TransferCodeController@HandleTransferCode')->middleware('log');//查询转赠码
Route::any('/TJCheck', 'App\Http\Controllers\API\Internal\OrderController@TJCheck');//到检

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>海南现代妇女儿童医院体检平台</title>
<title>体检平台</title>
</head>
<body>
<div id="app"></div>

@ -4,7 +4,6 @@
RouterView
} from 'vue-router'
import HelloWorld from './components/HelloWorld.vue'
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
</script>
<template>
@ -20,9 +19,10 @@
</nav>
</div>
</header> -->
<el-config-provider :locale="zhCn">
<RouterView />
</el-config-provider>
<RouterView />
</template>
<style scoped>

@ -1,447 +1,251 @@
import axios from '@/tools/axios.js'
import axios from "@/tools/axios.js";
//登录
export const Login = (data) => {
return axios({ url: import.meta.env.VITE_APP_API + 'admin/login', data: data })
export const Login = (data) => {
return axios({url:import.meta.env.VITE_APP_API+'admin/login',data:data})
}
//admin后台获取当前用户菜单
export const GetAdminBaseMenuList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/getBaseMenuList', data: data })
export const GetAdminBaseMenuList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/getBaseMenuList',data:data})
}
//Token刷新
export const TokenRefresh = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'tokenRefresh', data: data })
export const TokenRefresh = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'tokenRefresh',data:data})
}
//获取admin后台用户list
export const getAdminUserList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/getUserList', data: data })
export const getAdminUserList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/getUserList',data:data})
}
//admin后台获取所有菜单列表
export const GetAdminMenuList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/getMenuList', data: data })
export const GetAdminMenuList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/getMenuList',data:data})
}
//admin后台获取一级菜单
export const GetFatherMenuList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/GetFatherMenuList', data: data })
export const GetFatherMenuList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetFatherMenuList',data:data})
}
//admin后台添加菜单
export const AddMenu = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/AddMenu', data: data })
export const AddMenu = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/AddMenu',data:data})
}
//admin后台编辑菜单
export const EditMenu = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/EditMenu', data: data })
export const EditMenu = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/EditMenu',data:data})
}
//admin后台组列表
export const getGroupList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/getGroupList', data: data })
export const getGroupList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/getGroupList',data:data})
}
//admin后台修改组菜单
export const GroupChangeMenu = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/GroupChangeMenu', data: data })
export const GroupChangeMenu = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GroupChangeMenu',data:data})
}
//admin后台添加组
export const SaveGroup = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/SaveGroup', data: data })
export const SaveGroup = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/SaveGroup',data:data})
}
//admin后台保存用户信息
export const SaveSystemUserInfo = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/SaveSystemUserInfo', data: data })
export const SaveSystemUserInfo = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/SaveSystemUserInfo',data:data})
}
//admin后台获取用户详细信息
export const GetSystemUserDetail = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/GetSystemUserDetail', data: data })
export const GetSystemUserDetail = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetSystemUserDetail',data:data})
}
//admin后台修改密码
export const adminChangePwd = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/adminChangePwd', data: data })
export const adminChangePwd = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/adminChangePwd',data:data})
}
//admin后台获取登录用户基本信息
export const GetBaseAdminUserInfo = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/GetBaseUserInfo', data: data })
export const GetBaseAdminUserInfo = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetBaseUserInfo',data:data})
}
//admin后台管理员查询分组使用的菜单
export const AdminGetGroupMenuList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/GetGroupMenuList', data: data })
export const AdminGetGroupMenuList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetGroupMenuList',data:data})
}
//admin后台创建体检日历
export const CreateCalendar = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/CreateCalendar', data: data })
export const CreateCalendar = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/CreateCalendar',data:data})
}
//admin后台获取日历列表
export const CalendarGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/CalendarGetList', data: data })
export const CalendarGetList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/CalendarGetList',data:data})
}
//admin后台删除日历列表
export const CalendarDel = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/CalendarListDel', data: data })
export const CalendarDel = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/CalendarListDel',data:data})
}
//admin后台更新日历
export const CalendarChangeInfo = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/CalendarChangeInfo', data: data })
export const CalendarChangeInfo = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/CalendarChangeInfo',data:data})
}
//admin后台更新日历
export const CheckMenuAuth = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/CheckMenuAuth', data: data })
export const CheckMenuAuth = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/CheckMenuAuth',data:data})
}
//上传图片
// export const UpFile = (data={}) => {
// return axios({url:import.meta.env.VITE_APP_API+'v1/UpFile',data:data})
// }
export const UpFileUrl = () => {
return import.meta.env.VITE_APP_API + 'v1/UpFile'
export const UpFileUrl= () => {
return import.meta.env.VITE_APP_API+'v1/UpFile'
}
//admin后台修改自身用户信息
export const ChangInfo = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/ChangInfo', data: data })
export const ChangInfo = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/ChangInfo',data:data})
}
//admin后台获取站点配置信息
export const GetConfigInfo = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/GetConfigInfo', data: data })
export const GetConfigInfo = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetConfigInfo',data:data})
}
//admin后台保存站点配置信息
export const SaveConfigInfo = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/SaveConfigInfo', data: data })
export const SaveConfigInfo = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/SaveConfigInfo',data:data})
}
//获取日志列表
export const SystemLogGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/SystemLogGetList', data: data })
export const SystemLogGetList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/SystemLogGetList',data:data})
}
//获取日志表名
export const GetLogTableName = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/GetLogTableName', data: data })
export const GetLogTableName = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetLogTableName',data:data})
}
//获取号源类型列表
export const PlanTypeGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/PlanTypeGetList', data: data })
export const PlanTypeGetList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/PlanTypeGetList',data:data})
}
//可用体检类型列表
export const CheckUpTypeGetEnableList = (data = {}) => {
return axios({
url: import.meta.env.VITE_APP_API + 'v1/admin/CheckUpTypeGetEnableList',
data: data
})
export const CheckUpTypeGetEnableList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/CheckUpTypeGetEnableList',data:data})
}
//号源类型保存
export const PlanTypeSave = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/PlanTypeSave', data: data })
export const PlanTypeSave = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/PlanTypeSave',data:data})
}
//号源类型详情
export const PlanTypeGetDetail = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/PlanTypeGetDetail', data: data })
export const PlanTypeGetDetail = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/PlanTypeGetDetail',data:data})
}
//删除号源类型
export const PlanTypeDel = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/PlanTypeDel', data: data })
export const PlanTypeDel = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/PlanTypeDel',data:data})
}
//号源模板获取时间段列表
export const PlanModelTimeList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/PlanModelTimeList', data: data })
export const PlanModelTimeList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/PlanModelTimeList',data:data})
}
//保存号源模板
export const PlanModelSave = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/PlanModelSave', data: data })
export const PlanModelSave = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/PlanModelSave',data:data})
}
//号源模板列表
export const PlanModelGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/PlanModelGetList', data: data })
export const PlanModelGetList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/PlanModelGetList',data:data})
}
//号源模板详情
export const PlanModelGetDetail = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/PlanModelGetDetail', data: data })
export const PlanModelGetDetail = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/PlanModelGetDetail',data:data})
}
//删除号源模板
export const PlanModelDel = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/PlanModelDel', data: data })
export const PlanModelDel = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/PlanModelDel',data:data})
}
//生成号源
export const PlanCreate = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/CreatePlan', data: data })
export const PlanCreate = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/CreatePlan',data:data})
}
//号源列表
export const PlanGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/PlanGetList', data: data })
export const PlanGetList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/PlanGetList',data:data})
}
//号源详情
export const PlanGetDetail = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/PlanGetDetail', data: 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 })
}
//号源del
export const PlanDel = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/PlanDel', data: data })
}
//号源批量更新
export const PlanBatchUpdatePlanType = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/PlanBatchUpdatePlanType', 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 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 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 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 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 HospitalGetList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/HospitalGetList',data:data})
}
//获取可用的医院列表
export const HospitalGetEnableList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/HospitalGetEnableList', data: data })
export const HospitalGetEnableList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/HospitalGetEnableList',data:data})
}
//获取医院基本信息
export const GetBaseInfoDetail = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/GetBaseInfoDetail', 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 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 })
export const SaveCacheInfo = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/SaveCacheInfo',data:data})
}
//获取套餐类型
export const ComboTypeGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/ComboTypeGetList', data: data })
}
export const ComboTypeSave = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/ComboTypeSave', data: data })
}
export const ComboTypeDel = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/ComboTypeDel', data: data })
export const ComboTypeGetList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/ComboTypeGetList',data:data})
}
//获取套餐适用人群
export const ComboCrowdGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/ComboCrowdGetList', data: data })
}
//获取套餐适用人群save
export const ComboCrowdSave = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/ComboCrowdSave', data: data })
}
//获取套餐适用人群del
export const ComboCrowdDel = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/ComboCrowdDel', data: data })
export const ComboCrowdGetList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/ComboCrowdGetList',data:data})
}
//获取订单列表
export const OrderGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/OrderGetList', data: data })
}
//获取订单详情
export const OrderGetDetail = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/OrderGetDetail', data: data })
}
//保存订单信息
export const OrderSave = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/OrderSave', data: data })
}
//获取订单列表
export const YuYueOrderGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/YuYueOrderGetList', data: data })
}
//获取订单详情
export const YuYueOrderGetDetail = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/YuYueOrderGetDetail', data: data })
}
//保存订单信息
export const YuYueOrderSave = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/YuYueOrderSave', data: data })
}
//订单退款
export const OrderRefund = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/OrderRefund', data: data })
export const OrderGetList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/OrderGetList',data:data})
}
//获取问答列表
export const QuestionGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/QuestionGetList', data: data })
export const QuestionGetList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/QuestionGetList',data:data})
}
//保存题目
export const QuestionSave = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/QuestionSave', data: data })
export const QuestionSave = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/QuestionSave',data:data})
}
//获取题目详情
export const QuestionGetDetail = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/QuestionGetDetail', data: data })
export const QuestionGetDetail = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/QuestionGetDetail',data:data})
}
//删除题目
export const QuestionDel = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/QuestionDel', data: data })
export const QuestionDel = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/QuestionDel',data:data})
}
//获取文章列表
export const ArticleGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/ArticleGetList', data: data })
export const ArticleGetList = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/ArticleGetList',data:data})
}
//保存文章
export const ArticleSave = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/ArticleSave', data: data })
export const ArticleSave = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/ArticleSave',data:data})
}
//文章详情
export const ArticleGetDetail = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/ArticleGetDetail', data: data })
export const ArticleGetDetail = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/ArticleGetDetail',data:data})
}
//删除文章
export const ArticleGetDel = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/ArticleGetDel', data: data })
}
// 问卷调查
export const QuestionCreateAction = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/question/create', data: data })
}
export const QuestionUpdateAction = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/question/update', data: data })
}
export const QuestionDeleteAction = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/question/delete', data: data })
}
export const QuestionListAction = (data = {}) => {
return axios({
url: import.meta.env.VITE_APP_API + `v1/admin/question/list?page=${data.page}`,
data: data
})
}
export const QuestionQuestionCreateAction = (data = {}) => {
return axios({
url: import.meta.env.VITE_APP_API + 'v1/admin/questionQuestion/create',
data: data
})
}
export const QuestionQuestionUpdateAction = (data = {}) => {
return axios({
url: import.meta.env.VITE_APP_API + 'v1/admin/questionQuestion/update',
data: data
})
}
export const QuestionQuestionDeleteAction = (data = {}) => {
return axios({
url: import.meta.env.VITE_APP_API + 'v1/admin/questionQuestion/delete',
data: data
})
}
export const QuestionQuestionListAction = (data = {}) => {
return axios({
url: import.meta.env.VITE_APP_API + `v1/admin/questionQuestion/list?page=${data.page}`,
data: data
})
}
// 题目列表[全部]
export const QuestionQuestionSelectAction = (data = {}) => {
return axios({
url: import.meta.env.VITE_APP_API + `v1/admin/questionQuestion/select`,
data: data
})
}
export const QuestionItemCreateAction = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/questionItem/create', data: data })
}
export const QuestionItemUpdateAction = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/questionItem/update', data: data })
}
export const QuestionItemDeleteAction = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/questionItem/delete', data: data })
}
export const QuestionItemListAction = (data = {}) => {
return axios({
url: import.meta.env.VITE_APP_API + `v1/admin/questionItem/list?page=${data.page}`,
data: data
})
}
// 问卷调查 获取 检测项目列表
export const QuestionItemItemAction = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/questionItem/item`, data: data })
}
// 问卷调查 获取 套餐列表
export const QuestionItemComboAction = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/questionItem/combo`, data: data })
}
// 项目列表[全部]
export const QuestionItemSelectAction = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/questionItem/select`, data: data })
}
export const QuestionListCreateAction = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/questionList/create', data: data })
}
export const QuestionListUpdateAction = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/questionList/update', data: data })
}
export const QuestionListDeleteAction = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + 'v1/admin/questionList/delete', data: data })
}
export const QuestionListListAction = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/questionList/list`, data: data })
}
export const QuestionSelectAction = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/question/select`, data: data })
}
//趋势项目列表
export const AnalysisTypeGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/AnalysisTypeGetList`, data: data })
}
//趋势项目详情
export const AnalysisTypeGetDetail = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/AnalysisTypeGetDetail`, data: 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 })
}
//获取号源列表的列表
export const PlanListGetList = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/PlanListGetList`, data: data })
}
//导出分诊数据
export const FenzhenInfoExport = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `FenzhenInfoExport`, data: data })
}
//导出分诊范围数据
export const FenzhenInfoExport2 = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `FenzhenInfoExport2`, data: data })
}
//导出问卷
export const QuestionExport = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/QuestionExport`, data: data })
}
//套餐保存排序
export const ComboSaveOrder = (data = {}) => {
return axios({ url: import.meta.env.VITE_APP_API + `v1/admin/ComboSaveOrder`, data: data })
export const ArticleGetDel = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/ArticleGetDel',data:data})
}

@ -120,13 +120,6 @@ const router = createRouter({
meta: {
title: '号源模板'
}
},{
path: '/planMngr/planlist',
name: 'PlanMngrPlanlist',
component: () => import('../views/PlanMngr/PlanList.vue'),
meta: {
title: '号源列表'
}
},{
path: '/planMngr/plan',
name: 'PlanMngrPlan',
@ -197,55 +190,6 @@ const router = createRouter({
meta: {
title: '问卷项目'
}
},{
path: '/Question/QuestionList',
name: 'QuestionList',
component: () => import('../views/Question/QuestionList.vue'),
meta: {
title: '健康问卷'
}
},{
path: '/comboMngr/crowd',
name: 'ComboMngrCrowd',
component: () => import('../views/ComboMngr/Crowd.vue'),
meta: {
title: '套餐适用人群'
}
},{
path: '/h5mngr/analysistypes',
name: 'H5MngrAnalysisTypes',
component: () => import('../views/H5Mngr/AnalysisTypes.vue'),
meta: {
title: '趋势分析项目'
}
},{
path: '/combomngr/type',
name: 'ComboMngrType',
component: () => import('../views/ComboMngr/Type.vue'),
meta: {
title: '套餐类型'
}
},{
path: '/orderMngr/yuyueorder',
name: 'OrderMngrYuYueOrder',
component: () => import('../views/OrderMngr/OrderYuYue.vue'),
meta: {
title: '预约订单'
}
},{
path: '/CouponsMngr/Coupons',
name: 'CouponsMngrCoupons',
component: () => import('../views/CouponsMngr/Coupons.vue'),
meta: {
title: '代金券管理'
}
},{
path: '/reportforms/tijiantime',
name: 'ReportFormsTiJianTime',
component: () => import('../views/ReportForms/TiJianTime.vue'),
meta: {
title: '体检报表时间监控'
}
}]
},

@ -14,8 +14,8 @@
color: #00aeb7;
}
.el-switch__core{
/* background:#00aeb7;
background-color: #00aeb7; */
background:#00aeb7;
background-color: #00aeb7;
}
.el-menu-item.is-active{
color: #00aeb7;

@ -2,21 +2,12 @@
<div>
<div class="head">
<el-row>
<div style="display: flex;width: 100%; justify-content: space-between;">
<div style="display: flex;">
<el-form-item>
<el-input v-model="searchInfo.name" />
</el-form-item>
<el-form-item>
<el-button type="primary" style="margin-left: 10px;" @click="GetList()"></el-button>
</el-form-item>
</div>
<div>
<el-button v-if="!Is_PaiXv" type="success" style="margin-left: 10px;" @click="GetList('all')"></el-button>
<el-button v-if="Is_PaiXv" type="warning" style="margin-left: 10px;" @click="SaveOrder()"></el-button>
</div>
</div>
<el-form-item>
<el-input v-model="searchInfo.name" />
</el-form-item>
<el-form-item>
<el-button type="primary" style="margin-left: 10px;" @click="GetList()"></el-button>
</el-form-item>
</el-row>
<el-table :data="tableData" style="width: 100%;" row-key="id" v-loading="loading">
<el-table-column prop="hospital_name" label="医院" />
@ -31,19 +22,6 @@
<el-tag v-if="scope.row.sex==2" class="ml-2" type="success"></el-tag>
</template>
</el-table-column>
<el-table-column prop="order" label="排序">
<template #default="scope">
<div v-if="!Is_PaiXv">{{scope.row.order}}</div>
<div v-else>
<el-button type="primary" plain style="margin-left: 10px;" :disabled="scope.$index==0" @click="OptionUp(scope.$index)"
:icon="Top" />
<el-button type="primary" plain style="margin-left: 10px;" :disabled="scope.$index==tableData.length-1" @click="OptionDown(scope.$index)"
:icon="Bottom" />
</div>
</template>
</el-table-column>
<el-table-column prop="sale_count" label="销量(手输)" />
<el-table-column prop="updated_at" label="更新时间" />
<el-table-column label="操作" width="100">
<template #default="scope">
@ -52,7 +30,7 @@
</el-table-column>
</el-table>
<div class="page" v-if="!Is_PaiXv">
<div class="page">
<el-pagination v-model:current-page="currentPage" v-model:page-size="pageSize"
:page-sizes="[15, 50, 100, 200]" layout="total,sizes, prev, pager, next" :total="total"
@size-change="PageSizeChange" @current-change="PageCurrentChange" />
@ -91,22 +69,12 @@
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="是否热门">
<el-switch v-model="Info.is_hot" size="large" active-text="" inactive-text=""
:active-value="1" :inactive-value="0" />
</el-form-item>
<el-form-item label="标签">
<el-input v-model="Info.tags" type="textarea" />
</el-form-item>
<el-form-item label="标签2">
<el-input v-model="Info.tags2" type="textarea" />
</el-form-item>
<el-form-item label="排序">
<el-input v-model="Info.order" type="number" />
</el-form-item>
<el-form-item label="销量">
<el-input v-model="Info.sale_count" type="number" />
</el-form-item>
<el-form-item label="简介">
<el-input v-model="Info.intro" type="textarea" />
</el-form-item>
@ -157,12 +125,10 @@
ComboSave,
ComboTypeGetList,
ComboCrowdGetList,
CheckUpTypeGetEnableList,
ComboSaveOrder
CheckUpTypeGetEnableList
} from '@/api/api.js'
import {
Edit,Top,
Bottom
Edit
} from '@element-plus/icons-vue'
let loading = ref(false)
let tableData = ref([])
@ -191,17 +157,12 @@
}
let searchInfo = ref({});
let Info = ref({});
let Is_PaiXv=ref(false);
const GetList = (type='') => {
if(type=='all'){
Is_PaiXv.value=true;
}
const GetList = () => {
loading.value = true
ComboGetList({
page: currentPage.value,
pageSize: pageSize.value,
searchInfo: searchInfo.value,
type:type
searchInfo: searchInfo.value
}).then(res => {
loading.value = false
if (res.status) {
@ -336,39 +297,6 @@
}
})
}
const OptionUp=(index)=>{
let temp = tableData.value[index-1];
tableData.value[index-1]=tableData.value[index]
tableData.value[index]=temp
}
const OptionDown=(index)=>{
let temp = tableData.value[index+1];
tableData.value[index+1]=tableData.value[index]
tableData.value[index]=temp
}
//
const SaveOrder=()=>{
let ldate=[];
tableData.value.forEach((v,i)=>{
ldate.push({id:v.id,order:i})
})
loading.value = true
ComboSaveOrder({
order_list:ldate
}).then(res => {
loading.value = false
if (res.status) {
Is_PaiXv.value=false;
ElMessage({
type: 'success',
message: '排序完成',
})
GetList()
} else {
ElMessage.error(res.msg)
}
})
}
onMounted(() => {
GetList()
GetCheckUpTypeEnableList_Func()

@ -1,155 +0,0 @@
<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="" 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="适应人群设置">
<div class="chuansuokuang" v-loading="loading">
<el-form :model="Info" label-width="80" style="max-width: 600px">
<el-form-item label="名称">
<el-input v-model="Info.name" />
</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 {
ComboCrowdGetList,
ComboCrowdSave,
ComboCrowdDel
} 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
ComboCrowdGetList({
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
ComboCrowdSave({
Info: Info.value
}).then(res => {
loading.value = false
if (res.status) {
dialogVisible.value = false
GetList()
} else {
ElMessage.error(res.msg)
}
})
}
const Edit=(row)=>{
dialogVisible.value = true
Info.value.name =row.name
Info.value.id = row.id
}
//
const GetDetailFunc=(id)=>{
loading.value = true
PlanTypeGetDetail({
id: id
}).then(res => {
loading.value = false
if (res.status) {
Info.value=res.data
} else {
ElMessage.error(res.msg)
}
})
}
const Del=(id)=>{
loading.value = true
ComboCrowdDel({
id: id
}).then(res => {
loading.value = false
if (res.status) {
GetList()
} else {
ElMessage.error(res.msg)
}
})
}
onMounted(() => {
GetList()
})
</script>
<style scoped>
.head{
margin: 10px auto;
}
</style>

@ -1,155 +0,0 @@
<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="" 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="适应人群设置">
<div class="chuansuokuang" v-loading="loading">
<el-form :model="Info" label-width="80" style="max-width: 600px">
<el-form-item label="名称">
<el-input v-model="Info.name" />
</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 {
ComboTypeGetList,
ComboTypeSave,
ComboTypeDel
} 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
ComboTypeGetList({
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
ComboTypeSave({
Info: Info.value
}).then(res => {
loading.value = false
if (res.status) {
dialogVisible.value = false
GetList()
} else {
ElMessage.error(res.msg)
}
})
}
const Edit=(row)=>{
dialogVisible.value = true
Info.value.name =row.name
Info.value.id = row.id
}
//
const GetDetailFunc=(id)=>{
loading.value = true
PlanTypeGetDetail({
id: id
}).then(res => {
loading.value = false
if (res.status) {
Info.value=res.data
} else {
ElMessage.error(res.msg)
}
})
}
const Del=(id)=>{
loading.value = true
ComboTypeDel({
id: id
}).then(res => {
loading.value = false
if (res.status) {
GetList()
} else {
ElMessage.error(res.msg)
}
})
}
onMounted(() => {
GetList()
})
</script>
<style scoped>
.head{
margin: 10px auto;
}
</style>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save