24 files modified
12 files added
121 files deleted
| | |
| | | |
| | | namespace app\admin\controller; |
| | | |
| | | use think\facade\Db; |
| | | use think\Exception; |
| | | use think\exception\ValidateException; |
| | | use think\facade\Filesystem; |
| | |
| | | return View::fetch('index'); |
| | | } |
| | | |
| | | public function add(): string { |
| | | public function get_blog_list() { |
| | | try { |
| | | $page = input('page', 1); |
| | | $limit = input('limit', 10); |
| | | $where = []; |
| | | $total = Db::name('blog')->where($where)->count(); |
| | | $list = Db::name('blog')->where($where)->order('id desc')->page($page, $limit)->select()->toArray(); |
| | | $result = [ |
| | | 'code' => 200, |
| | | 'message' => '获取成功', |
| | | 'data' => [ |
| | | 'list' => $list, |
| | | 'total' => $total, |
| | | ], |
| | | ]; |
| | | } catch (Exception $exc) { |
| | | $result = [ |
| | | 'code' => $exc->getCode(), |
| | | 'message' => $exc->getMessage(), |
| | | ]; |
| | | } |
| | | return json($result); |
| | | |
| | | } |
| | | |
| | | public function add($id = 0): string { |
| | | header('Content-Type:text/html;charset=utf-8'); |
| | | View::assign('menuitem', strtolower('Blog-index')); |
| | | View::assign('id', $id); |
| | | return View::fetch('add'); |
| | | } |
| | | |
| | | /** |
| | | * 获取博客信息 |
| | | * @return Json |
| | | */ |
| | | public function get_blog_info(): Json { |
| | | try { |
| | | $id = input('id'); |
| | | if (!is_numeric($id)) { |
| | | throw new Exception('参数错误'); |
| | | } |
| | | $info = Db::name('blog')->field('id,title,en_title,desc,en_desc,cover_img,content,en_content')->where('id', $id)->find(); |
| | | if (empty($info)) { |
| | | throw new Exception('信息不存在'); |
| | | } |
| | | $result = [ |
| | | 'code' => 200, |
| | | 'message' => '获取成功', |
| | | 'data' => $info, |
| | | ]; |
| | | } catch (Exception $exc) { |
| | | $result = [ |
| | | 'code' => $exc->getCode(), |
| | | 'message' => $exc->getMessage(), |
| | | ]; |
| | | } |
| | | return json($result); |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | $file = request()->file('image'); |
| | | $files[] = $file; |
| | | validate(['image' => 'fileSize:10240|fileExt:jpg'])->check($files); |
| | | validate(['image' => 'fileSize:10240|fileExt:jpg,jpeg,png'])->check($files); |
| | | // 上传到本地服务器 |
| | | $savename = (new Filesystem)::disk('public')->putFile('/images', $file); |
| | | $savename = (new Filesystem)::disk('public')->url($savename); // 获取上传后的文件路径 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 上传图片 |
| | | * 上传封面图片 |
| | | * @return Json |
| | | */ |
| | | public function upload_cover_img(): Json { |
| | |
| | | |
| | | $file = request()->file('file'); |
| | | $files[] = $file; |
| | | validate(['image' => 'fileSize:10240|fileExt:jpg'])->check($files); |
| | | validate(['image' => 'fileSize:10240|fileExt:jpg,jpeg,png'])->check($files); |
| | | // 上传到本地服务器 |
| | | $savename = (new Filesystem)::disk('public')->putFile('/images', $file); |
| | | $savename = (new Filesystem)::disk('public')->url($savename); // 获取上传后的文件路径 |
| | |
| | | } |
| | | return json($result); |
| | | } |
| | | |
| | | /** |
| | | * 保存博客 |
| | | * @return Json |
| | | */ |
| | | public function save_blog(): Json { |
| | | try { |
| | | if (!request()->isPost()) { |
| | | throw new Exception('请求方式错误'); |
| | | } |
| | | $data = request()->post(); |
| | | |
| | | ///////验证//////////// |
| | | $validate = new \app\admin\validate\Blog(); |
| | | $validate_result = $validate->scene('save_blog')->check($data); |
| | | if (!$validate_result) { |
| | | throw new Exception($validate->getError()); |
| | | } |
| | | |
| | | if ($data['id'] && is_numeric($data['id'])) { |
| | | /////////更新//////////// |
| | | $info = Db::name('blog')->field('id')->where('id', $data['id'])->find(); |
| | | if (empty($info)) { |
| | | throw new Exception('信息不存在'); |
| | | } |
| | | unset($data['create_time']); |
| | | $update_result = Db::name('blog')->where('id', $data['id'])->save($data); |
| | | if (!$update_result) { |
| | | throw new Exception('更新失败'); |
| | | } |
| | | } else { |
| | | //////////添加//////////// |
| | | $data['create_time'] = time(); |
| | | $data['admin_id'] = $this->admin_id; |
| | | |
| | | $new_id = Db::name('blog')->insertGetId($data); |
| | | if (!$new_id) { |
| | | throw new Exception('保存失败'); |
| | | } |
| | | } |
| | | |
| | | $result = [ |
| | | 'code' => 200, |
| | | 'message' => '保存成功', |
| | | ]; |
| | | |
| | | } catch (Exception $exc) { |
| | | $result = [ |
| | | 'code' => $exc->getCode(), |
| | | 'message' => $exc->getMessage(), |
| | | ]; |
| | | } |
| | | return json($result); |
| | | } |
| | | |
| | | /** |
| | | * 修改博客状态 |
| | | * @return Json |
| | | */ |
| | | public function change_blog_status() { |
| | | try { |
| | | $id = input('id'); |
| | | if (!is_numeric($id)) { |
| | | throw new Exception('参数错误'); |
| | | } |
| | | $info = Db::name('blog')->field('id,status')->where('id', $id)->find(); |
| | | if (empty($info)) { |
| | | throw new Exception('信息不存在'); |
| | | } |
| | | $status = $info['status'] == 1 ? 0 : 1; |
| | | $update_result = Db::name('blog')->where('id', $id)->save(['status' => $status]); |
| | | if (!$update_result) { |
| | | throw new Exception('更新失败'); |
| | | } |
| | | $result = [ |
| | | 'code' => 200, |
| | | 'message' => '更新成功', |
| | | ]; |
| | | } catch (Exception $exc) { |
| | | $result = [ |
| | | 'code' => $exc->getCode(), |
| | | 'message' => $exc->getMessage(), |
| | | ]; |
| | | } |
| | | return json($result); |
| | | |
| | | } |
| | | } |
| | |
| | | } catch (Exception $exc) { |
| | | $result = [ |
| | | 'code' => $exc->getCode(), |
| | | 'des' => $exc->getMessage(), |
| | | 'message' => $exc->getMessage(), |
| | | ]; |
| | | } |
| | | return $result; |
| New file |
| | |
| | | <?php |
| | | |
| | | namespace app\admin\controller; |
| | | |
| | | use think\Exception; |
| | | use think\facade\Db; |
| | | use think\facade\Request; |
| | | use think\facade\View; |
| | | use think\response\Json; |
| | | |
| | | class OnlineMessage extends Common { |
| | | public function index() { |
| | | View::assign('menuitem', strtolower('onlineMessage-index')); |
| | | return View::fetch(); |
| | | } |
| | | |
| | | /** |
| | | * 获取在线留言列表 |
| | | * @return Json |
| | | */ |
| | | public function get_online_message_list(): Json { |
| | | try { |
| | | if (!Request::isPost()) { |
| | | throw new Exception('请求方式错误'); |
| | | } |
| | | $page = input('page', 1); |
| | | $limit = input('limit', 10); |
| | | $kw = input('kw', ''); |
| | | $status = input('status', ''); |
| | | $where = []; |
| | | if ($kw) { |
| | | $where[] = ['name|phone|email|subject|message', 'like', "%{$kw}%"]; |
| | | } |
| | | |
| | | if (in_array($status, [0, 1])) { |
| | | $where[] = ['status', '=', $status]; |
| | | } |
| | | $total = Db::name('online_message')->where($where)->count(); |
| | | $list = Db::name('online_message')->where($where)->order('id desc')->page($page, $limit)->select()->toArray(); |
| | | $result = [ |
| | | 'code' => 200, |
| | | 'message' => '获取成功', |
| | | 'data' => [ |
| | | 'list' => $list, |
| | | 'total' => $total, |
| | | ], |
| | | ]; |
| | | } catch (Exception $exc) { |
| | | $result = [ |
| | | 'code' => $exc->getCode(), |
| | | 'message' => $exc->getMessage(), |
| | | ]; |
| | | } |
| | | return json($result); |
| | | } |
| | | |
| | | /** |
| | | * 修改留言状态 |
| | | * @return Json |
| | | */ |
| | | public function change_message_status(): Json { |
| | | try { |
| | | if (!Request::isPost()) { |
| | | throw new Exception('请求方式错误'); |
| | | } |
| | | $id = input('id', 0); |
| | | if (!$id || !is_numeric($id)) { |
| | | throw new Exception('参数错误'); |
| | | } |
| | | $info = Db::name('online_message')->where('id', $id)->find(); |
| | | if (!$info) { |
| | | throw new Exception('留言不存在'); |
| | | } |
| | | $status = $info['status'] ? 0 : 1; |
| | | $update_result = Db::name('online_message')->where('id', $id)->save(['status' => $status]); |
| | | if (!$update_result) { |
| | | throw new Exception('操作失败'); |
| | | } |
| | | $result = [ |
| | | 'code' => 200, |
| | | 'message' => '操作成功', |
| | | ]; |
| | | } catch (Exception $exc) { |
| | | $result = [ |
| | | 'code' => $exc->getCode(), |
| | | 'message' => $exc->getMessage(), |
| | | ]; |
| | | } |
| | | return json($result); |
| | | } |
| | | } |
| New file |
| | |
| | | <?php |
| | | |
| | | namespace app\admin\validate; |
| | | |
| | | use think\Validate; |
| | | |
| | | class Blog extends Validate { |
| | | |
| | | protected $rule = [ |
| | | 'title' => 'require', |
| | | 'en_title' => 'require', |
| | | 'desc' => 'require', |
| | | 'en_desc' => 'require', |
| | | 'cover_img' => 'require', |
| | | 'content' => 'require', |
| | | 'en_content' => 'require', |
| | | ]; |
| | | protected $message = [ |
| | | 'title.require' => '请填写标题名称', |
| | | 'en_title.require' => '请填写英文标题名称', |
| | | 'desc.require' => '请填写标题描述', |
| | | 'en_desc.require' => '请填写英文标题描述', |
| | | 'cover_img.require' => '请上传封面图片', |
| | | 'content.require' => '请填写内容', |
| | | 'en_content.require' => '请填写英文内容', |
| | | ]; |
| | | |
| | | protected $scene = [ |
| | | 'save_blog' => ['title', 'en_title', 'desc', 'en_desc', 'cover_img', 'content', 'en_content'], //保存博客 |
| | | ]; |
| | | } |
| | |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> |
| | | <include file="common:element-plus" /> |
| | | <link rel="stylesheet" href="/static/admin/css/blog/add.css"> |
| | | <!-- 富文本编辑器 --> |
| | | <link rel="stylesheet" href="/static/plugin/wangeditor/style.css" media="all"> |
| | | <script type="text/javascript" src="/static/plugin/wangeditor/index.js"></script> |
| | |
| | | </head> |
| | | |
| | | <body> |
| | | <input type="hidden" id="id" value="{$id}"> |
| | | <div id="vue_item" v-cloak> |
| | | <el-container> |
| | | <el-aside class="el-menu-container" :width="el_aside_width"> |
| | |
| | | <div id="toolbar-container"><!-- 工具栏 --></div> |
| | | <div id="editor-container" style="height: calc(100% - 40px);"><!-- 编辑器 --></div> |
| | | </div> |
| | | <!-- <div id="editer_data" style="width: 100%;">{{addBlogForm.content}}</div> |
| | | <textarea name="content" id="content" style="display:none;" v-model="addBlogForm.content"></textarea> --> |
| | | <!-- <div id="editer_data" style="width: 100%;" v-html="addBlogForm.content"></div> --> |
| | | <!-- <textarea id="editer_data" style="display:none;" v-model="addBlogForm.content"></textarea> --> |
| | | </el-form-item> |
| | | <el-form-item label="内容(英文)"> |
| | | <div id="editor—wrapper-en" class="editor—wrapper" style="height: 500px;"> |
| | | <div id="toolbar-container-en"><!-- 工具栏 --></div> |
| | | <div id="editor-container-en" style="height: calc(100% - 40px);"><!-- 编辑器 --></div> |
| | | </div> |
| | | <!-- <div id="editer_data_en" style="width: 100%;" v-html="addBlogForm.en_content"></div> --> |
| | | </el-form-item> |
| | | <el-form-item label="封面图"> |
| | | <el-upload class="avatar-uploader" action="/admin/blog/upload_cover_img.html" :show-file-list="false" :on-success="handleCoverImgSuccess" :before-upload="beforeCoverImgUpload"> |
| | | <template v-if="addBlogForm.cover_img"> |
| | | <div> |
| | | <img :src="addBlogForm.cover_img" class="avatar" /> |
| | | <el-button type="danger" icon="Delete"></el-button> |
| | | <!-- <el-button type="danger" icon="Delete"></el-button> --> |
| | | </div> |
| | | </template> |
| | | <el-icon v-else class="avatar-uploader-icon"> |
| | |
| | | placeholder: '请输入中文内容...', |
| | | onChange(editor) { |
| | | const html = editor.getHtml(); |
| | | setHtmlValue(html); |
| | | getHtmlValue(html); |
| | | }, |
| | | MENU_CONF: {}, |
| | | } |
| | |
| | | }, |
| | | } |
| | | |
| | | var editor_data = $("#editer_data").html(); |
| | | if (editor_data == '') { |
| | | editor_data = '<p><br></p>'; |
| | | } |
| | | const editor = createEditor({ |
| | | selector: '#editor-container', |
| | | html: '<p><br></p>', |
| | |
| | | placeholder: '请输入英文内容...', |
| | | onChange(editor) { |
| | | const html = editor.getHtml(); |
| | | setHtmlValue(html, 2); |
| | | getHtmlValue(html, 2); |
| | | }, |
| | | MENU_CONF: {}, |
| | | } |
| | |
| | | }, |
| | | } |
| | | |
| | | |
| | | var editor_data_en = document.getElementById('editer_data_en'); |
| | | if (editor_data_en == '') { |
| | | editor_data_en = '<p><br></p>'; |
| | | } |
| | | const editor_en = createEditor({ |
| | | selector: '#editor-container-en', |
| | | html: '<p><br></p>', |
| | |
| | | selector: '#toolbar-container-en', |
| | | config: toolbarConfigEn, |
| | | mode: 'default', // or 'simple' |
| | | }) |
| | | </script> |
| | | <script> |
| | | /** |
| | | * 富文本编辑器 |
| | | */ |
| | | // var E = window.wangEditor |
| | | // const editor = new E('#editer_data') |
| | | // var textarea = $('#content') |
| | | }); |
| | | |
| | | // editor.config.onchange = function (html) { |
| | | // // 监控变化,同步更新到 textarea |
| | | // textarea.val(html) |
| | | // } |
| | | |
| | | // // editor.config.onblur = function (html) { |
| | | // // // 编辑区域失去焦点后的操作,保存内容 |
| | | // // save_reading_data(); |
| | | // // } |
| | | |
| | | // //设置提示文字 |
| | | // editor.config.placeholder = '请输入文章内容...' |
| | | |
| | | // //设置编辑区域z-index |
| | | // editor.config.zIndex = 100 |
| | | |
| | | // // 自定义菜单配置 |
| | | // editor.config.menus = [ |
| | | // 'bold', |
| | | // 'fontSize', |
| | | // 'italic', |
| | | // 'underline', |
| | | // 'strikeThrough', |
| | | // 'indent', |
| | | // 'lineHeight', |
| | | // 'foreColor', |
| | | // 'backColor', |
| | | // 'link', |
| | | // 'list', |
| | | // 'justify', |
| | | // 'image', |
| | | // ] |
| | | |
| | | // //粘贴内容去掉图片 |
| | | // editor.config.pasteIgnoreImg = true |
| | | |
| | | // // 配置粘贴文本的内容处理 |
| | | // editor.config.pasteTextHandle = function (pasteStr) { |
| | | // // 对粘贴的文本进行处理,然后返回处理后的结果 |
| | | // return pasteStr.replace(/<[^>]+>/g, ""); |
| | | // } |
| | | |
| | | // //上传图片服务端地址 |
| | | // editor.config.uploadImgServer = "/admin/upload/index_v1.html" |
| | | |
| | | // // 隐藏“网络图片”tab |
| | | // editor.config.showLinkImg = false |
| | | |
| | | // // 将图片大小限制为 10M |
| | | // editor.config.uploadImgMaxSize = 20 * 1024 * 1024 |
| | | |
| | | // // 限制一次最多上传 20 张图片 |
| | | // editor.config.uploadImgMaxLength = 20 |
| | | |
| | | // //编辑器初始化 |
| | | // editor.create() |
| | | |
| | | // // 初始化 textarea 的值 |
| | | // textarea.val(editor.txt.html()) |
| | | ////////////////////////////////////////富文本编辑器-end////////////////////////////////// |
| | | function setHtmlValue(html, type = 1) { |
| | | if (type == 1) { |
| | | editor.setHtml(html); |
| | | } else { |
| | | editor_en.setHtml(html); |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | </html> |
| | |
| | | <el-card> |
| | | <template #header> |
| | | <div class="card-header"> |
| | | <span>文章列表</span> |
| | | <span>文章列表({{listCount}})</span> |
| | |   |
| | | <el-link href="/admin/blog/add.html" type="primary" class="header_add_btn" icon="CirclePlusFilled" :underline="false">添加</el-link> |
| | | </div> |
| | | </template> |
| | | <el-table :data="list" :tree-props="{children: 'children'}" row-key="id" default-expand-all border style="width: 100%" ref="tableRef"> |
| | | <el-table :data="blogList" :tree-props="{children: 'children'}" row-key="id" default-expand-all border style="width: 100%" ref="tableRef"> |
| | | <el-table-column label="名称" prop="title"></el-table-column> |
| | | <!-- <el-table-column label="菜单索引" prop="menu_index"></el-table-column> --> |
| | | <el-table-column label="添加时间" prop="create_time" width="150"> |
| | | <template #default="scope"> |
| | | {{formatDate(scope.row['create_time'])}} |
| | | {{formatDate(scope.row['create_time'])}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="状态" width="150" align="center"> |
| | | <template #default="scope"> |
| | | <el-switch v-model="scope.row.show_menu" style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ccc" :active-value="1" :inactive-value="0" inline-prompt active-text="发布" inactive-text="下架" @change="updateShowMenu(scope.row)" /> |
| | | <el-switch v-model="scope.row.status" style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ccc" :active-value="1" :inactive-value="0" inline-prompt active-text="发布" inactive-text="未发布" @change="changeBlogStatus(scope.row.id)" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作选项" fixed="right" width="150" :align="alignValue(200)"> |
| | | <template #default="scope"> |
| | | <el-button icon="edit" type="primary" @click="Edit(scope.row)"></el-button> |
| | | <el-button icon="edit" type="primary" @click="editBlog(scope.row.id)" circle></el-button> |
| | | <el-button icon="Delete" type="danger" @click="deleteBlog(scope.row.id)" circle></el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div style="text-align: right;margin-top: 15px"> |
| | | <el-pagination background @current-change="getBlogList" layout="prev, pager, next" :page-size="searchForm.limit" hide-on-single-page="true" :total="listCount"></el-pagination> |
| | | </div> |
| | | </el-card> |
| | | </el-main> |
| | | <el-footer></el-footer> |
| | |
| | | <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> |
| | | <link rel="stylesheet" href="/static/supplier/css/reset.css?t=20180921-1" media="all"> |
| | | <!-- <link rel="stylesheet" href="/static/supplier/css/reset.css?t=20180921-1" media="all"> |
| | | <link id="layuicss-layuiAdmin" rel="stylesheet" href="/static/admin/css/admin.css?v=1.1.0 pro-1" media="all"> |
| | | <link rel="stylesheet" href="/static/admin/css/layui.css?t=20180921-3" media="all"> |
| | | <script type="text/javascript" src="/static/jquery/jquery-3.7.1.min.js"></script> |
| | | <link rel="stylesheet" href="/static/admin/css/layui.css?t=20180921-3" media="all"> --> |
| | | <!-- <script type="text/javascript" src="/static/jquery/jquery-3.7.1.min.js"></script> |
| | | <script type="text/javascript" src="/static/admin/js/jquery.config.js"></script> |
| | | <script type="text/javascript" src="/static/admin/js/function.js"></script> |
| | | <script type="text/javascript" src="/static/admin/js/function.js"></script> --> |
| New file |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="zh-cn"> |
| | | |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <include file="common:title" /> |
| | | <meta name="renderer" content="webkit"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> |
| | | <include file="common:element-plus" /> |
| | | </head> |
| | | |
| | | <body> |
| | | <div id="vue_item" v-cloak> |
| | | <el-container> |
| | | <el-aside class="el-menu-container" :width="el_aside_width"> |
| | | <!-- 侧边菜单 --> |
| | | <include file="common:side_menu" /> |
| | | </el-aside> |
| | | <el-container> |
| | | <el-header> |
| | | <include file="common:guide" one_word="在线留言" two_word="官网留言 " /> |
| | | </el-header> |
| | | <el-main> |
| | | <el-card style="width: 100%"> |
| | | <template #header> |
| | | <div class="card-header">官网留言({{count}})</div> |
| | | </template> |
| | | <el-form :model="searchForm" label-width="auto" size="default"> |
| | | <el-input v-model="searchForm.kw" placeholder="请输入关键词" style="width: 300px;" clearable></el-input> |
| | | |
| | | <el-select v-model="searchForm.status" placeholder="请选择处理状态" style="width: 150px;"> |
| | | <el-option label="全部" value=""></el-option> |
| | | <el-option label="已处理" value="1"></el-option> |
| | | <el-option label="未处理" value="0"></el-option> |
| | | </el-select> |
| | | |
| | | <el-button type="success" icon="Search" @click="getOnlineMessageList()">搜索</el-button> |
| | | </el-form> |
| | | <br /> |
| | | <el-table :data="list" border style="width: 100%;position: relative;z-index: 0 !important;" ref="tableRef"> |
| | | <el-table-column prop="name" label="姓名" width="180" show-overflow-tooltip align="center"></el-table-column> |
| | | <el-table-column prop="phone" label="电话" show-overflow-tooltip width="180" align="center"></el-table-column> |
| | | <el-table-column prop="email" label="邮箱" width="180" align="center"></el-table-column> |
| | | <el-table-column prop="subject" label="主题" width="180" align="center"></el-table-column> |
| | | <el-table-column prop="message" label="内容" align="left"></el-table-column> |
| | | <el-table-column prop="create_time" label="提交时间" width="180" align="center"> |
| | | <template #default="scope"> |
| | | {{formatDate(scope.row.create_time)}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="状态" width="150" align="center"> |
| | | <template #default="scope"> |
| | | <el-switch @change="changeMessageStatus(scope.row.id)" v-model="scope.row.status" style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ccc" :active-value="1" :inactive-value="0" inline-prompt active-text="已处理" inactive-text="未处理" /> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="searchForm.page" :page-sizes="[20, 30, 40, 50]" :page-size="searchForm.limit" layout="total, sizes, prev, pager, next" :total="count"> |
| | | </el-pagination> |
| | | </el-card> |
| | | </el-main> |
| | | </el-container> |
| | | </el-container> |
| | | </div> |
| | | </body> |
| | | <!-- 共用的方法 --> |
| | | <script language="JavaScript"> |
| | | const viewPath = '{$viewPath}'; |
| | | </script> |
| | | <script src="/static/vue/mixin_admin.js"></script> |
| | | <script src="/static/admin/js/online_message/index.js?v=<?php echo rand(1000,9999)?>"></script> |
| | | |
| | | |
| | | </html> |
| | |
| | | |
| | | namespace app\home\controller; |
| | | |
| | | use think\db\exception\DataNotFoundException; |
| | | use think\db\exception\DbException; |
| | | use think\db\exception\ModelNotFoundException; |
| | | use think\Exception; |
| | | use think\facade\Db; |
| | | use think\facade\View; |
| | | use think\facade\Request; |
| | | use app\BaseController; |
| | | use think\response\Json; |
| | | |
| | | class Blog extends BaseController { |
| | | public function index() { |
| | | $list = Db::name('blog')->where('status', 1)->limit(10)->order('id desc')->select()->toArray(); |
| | | View::assign('list', $list); |
| | | return View::fetch('index'); |
| | | } |
| | | |
| | | /** |
| | | * 获取博客列表 |
| | | * @return Json |
| | | */ |
| | | public function get_blog_list(): Json { |
| | | try { |
| | | if (!Request::isPost()) { |
| | | throw new Exception('请求方式错误'); |
| | | } |
| | | $list = Db::name('blog')->where('status', 1)->limit(10)->order('id desc')->select()->toArray(); |
| | | $result = [ |
| | | 'code' => 200, |
| | | 'message' => '获取成功', |
| | | 'data' => $list, |
| | | ]; |
| | | } catch (Exception $exc) { |
| | | $result = [ |
| | | 'code' => $exc->getCode(), |
| | | 'message' => $exc->getMessage(), |
| | | ]; |
| | | } |
| | | return json($result); |
| | | } |
| | | |
| | | /** |
| | | * 博客详情页 |
| | | * @param int $id |
| | | * @return string |
| | | */ |
| | | public function detail(int $id = 0): string { |
| | | if (!$id || !is_numeric($id)) { |
| | | $this->error('参数错误'); |
| | | } |
| | | // $info = Db::name('blog')->where('id', $id)->find(); |
| | | // if (!$info) { |
| | | // $this->error('数据不存在'); |
| | | // } |
| | | // View::assign('info', $info); |
| | | View::assign('id', $id); |
| | | return View::fetch('detail'); |
| | | } |
| | | |
| | | /** |
| | | * 获取博客内容 |
| | | * @return Json |
| | | */ |
| | | public function get_blog_info(): Json { |
| | | try { |
| | | $id = input('id', 0); |
| | | if (!$id || !is_numeric($id)) { |
| | | throw new Exception('参数错误'); |
| | | } |
| | | $info = Db::name('blog')->where('id', $id)->find(); |
| | | if (!$info) { |
| | | throw new Exception('数据不存在'); |
| | | } |
| | | $result = [ |
| | | 'code' => 200, |
| | | 'message' => '获取成功', |
| | | 'data' => $info, |
| | | ]; |
| | | } catch (Exception $exc) { |
| | | $result = [ |
| | | 'code' => $exc->getCode(), |
| | | 'message' => $exc->getMessage(), |
| | | ]; |
| | | } |
| | | return json($result); |
| | | } |
| | | } |
| | |
| | | |
| | | namespace app\home\controller; |
| | | |
| | | use think\Exception; |
| | | use think\facade\Db; |
| | | use think\facade\View; |
| | | use think\facade\Request; |
| | | use app\BaseController; |
| | | use think\response\Json; |
| | | |
| | | class Contact extends BaseController { |
| | | public function index() { |
| | | return View::fetch('index'); |
| | | } |
| | | |
| | | /** |
| | | * 保存留言 |
| | | * @return Json |
| | | */ |
| | | public function save_message(): Json { |
| | | try { |
| | | if (!Request::isPost()) { |
| | | throw new Exception('请求方式错误'); |
| | | } |
| | | $data = Request::post(); |
| | | $validate = new \app\home\validate\Contact(); |
| | | $validate_result = $validate->check($data); |
| | | if (!$validate_result) { |
| | | throw new Exception($validate->getError()); |
| | | } |
| | | $data['create_time'] = time(); |
| | | $new_id = Db::name('online_message')->insertGetId($data); |
| | | if (!$new_id) { |
| | | throw new Exception('保存失败'); |
| | | } |
| | | $result = [ |
| | | 'code' => 200, |
| | | 'message' => '保存成功', |
| | | ]; |
| | | } catch (Exception $exc) { |
| | | $result = [ |
| | | 'code' => $exc->getCode(), |
| | | 'message' => $exc->getMessage(), |
| | | ]; |
| | | } |
| | | return json($result); |
| | | } |
| | | } |
| | |
| | | |
| | | class Index extends BaseController { |
| | | public function index() { |
| | | $list = Db::name('blog')->where('status', 1)->limit(10)->order('id desc')->select()->toArray(); |
| | | View::assign('list', $list); |
| | | return View::fetch('index'); |
| | | } |
| | | |
| New file |
| | |
| | | <?php |
| | | |
| | | namespace app\home\validate; |
| | | |
| | | use think\Validate; |
| | | |
| | | class Contact extends Validate { |
| | | protected $rule = [ |
| | | 'name' => 'require', |
| | | 'phone' => 'require', |
| | | 'email' => 'require', |
| | | 'subject' => 'require', |
| | | 'message' => 'require', |
| | | ]; |
| | | protected $message = [ |
| | | 'name.require' => '请填写姓名', |
| | | 'phone.require' => '请填写联系方式', |
| | | 'email.require' => '请填写邮箱', |
| | | 'subject.require' => '请填写主题', |
| | | 'message.require' => '请填写内容', |
| | | ]; |
| | | |
| | | protected $scene = [ |
| | | 'save_message' => ['name', 'phone', 'message'], //保存博客 |
| | | ]; |
| | | } |
| New file |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="zh-CN"> |
| | | |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <include file="common:header" /> |
| | | <include file="common:title" /> |
| | | <include file="common:element-plus" /> |
| | | <include file="common:html-header" /> |
| | | <style> |
| | | .blog-container { |
| | | padding: 50px 0; |
| | | } |
| | | |
| | | .blog-title { |
| | | text-align: center; |
| | | font-size: 24px; |
| | | font-weight: bold; |
| | | } |
| | | |
| | | .blog-time { |
| | | text-align: center; |
| | | font-size: 14px; |
| | | margin-top: 10px; |
| | | } |
| | | |
| | | .blog-content { |
| | | margin: 20px 0; |
| | | } |
| | | </style> |
| | | </head> |
| | | |
| | | <body> |
| | | <div class="main-container" id="vue_item" v-cloak> |
| | | <!-- 顶部 导航栏 --> |
| | | <include file="common:top-header" /> |
| | | |
| | | <!-- 背景图--> |
| | | <div class="breadcumb-area"> |
| | | <div class="container"> |
| | | <div class="row"> |
| | | <div class="col-md-12 txtc text-center ccase"> |
| | | <div class="brpt"> |
| | | <h2>{{ $t('message.header.blog') }}</h2> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 内容 --> |
| | | <div class="blog-container"> |
| | | <div class="container" v-if="language=='zh-cn'"> |
| | | <el-page-header @back="goBack"> |
| | | <template #content> |
| | | <span class="text-large font-600 mr-3"> {{ $t('message.header.blog') }} </span> |
| | | </template> |
| | | </el-page-header> |
| | | <div class="blog-title" v-if="language=='zh-cn'">{{info.title}}</div> |
| | | <div class="blog-time">{{formatDate(info.create_time)}}</div> |
| | | <div class="blog-content" v-html="info.content"></div> |
| | | </div> |
| | | <div class="container" v-else> |
| | | <el-page-header @back="goBack"> |
| | | <template #content> |
| | | <span class="text-large font-600 mr-3"> {{ $t('message.header.blog') }} </span> |
| | | </template> |
| | | </el-page-header> |
| | | <div class="blog-title">{{info.en_title}}</div> |
| | | <div class="blog-time">{{formatDate(info.create_time)}}</div> |
| | | <div class="blog-content" v-html="info.en_content"></div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- 底部 --> |
| | | <include file="common:footer" /> |
| | | </div> |
| | | |
| | | <input type="hidden" id="id" value="{$id}"> |
| | | <!-- Vue App --> |
| | | <script src="/static/vue/mixin.js"></script> |
| | | <script> |
| | | var language = localStorage.getItem('changjiang-park-lang') || 'zh-cn'; |
| | | var blog_id = $('#id').val(); |
| | | const App = { |
| | | mixins: [sharedMixin], |
| | | data() { |
| | | return { |
| | | blog_id: blog_id, |
| | | language: language, |
| | | info: [], |
| | | }; |
| | | }, |
| | | computed: { |
| | | |
| | | }, |
| | | mounted() { |
| | | this.getBlogInfo(); |
| | | }, |
| | | created() { |
| | | }, |
| | | methods: { |
| | | formatDate(time) { |
| | | return moment(time * 1000).format("YYYY-MM-DD"); |
| | | }, |
| | | |
| | | goBack() { |
| | | window.history.back(); |
| | | }, |
| | | |
| | | /////进入博客详情///// |
| | | gotoBlogDetail(id) { |
| | | window.location.href = '/home/blog/detail/id/' + id + '.html'; |
| | | }, |
| | | |
| | | // 获取公告列表 |
| | | getBlogInfo() { |
| | | let that = this; |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: '获取中', |
| | | spinner: 'el-icon-loading', |
| | | background: 'rgba(0, 0, 0, 0.2)' |
| | | }); |
| | | let url = "/home/blog/get_blog_info.html" |
| | | postRequest(url, { id: that.blog_id }).then(res => { |
| | | loading.close(); |
| | | if (res.data.code == 200) { |
| | | that.info = res.data.data; |
| | | } |
| | | }).catch(() => { |
| | | //取消,不做处理 |
| | | }); |
| | | }, |
| | | }, |
| | | }; |
| | | const app = Vue.createApp(App); |
| | | for (const [key, component] of Object.entries(ElementPlusIconsVue)) { |
| | | app.component(key, component) |
| | | } |
| | | app.use(ElementPlus, { |
| | | locale: ElementPlusLocaleZhCn, |
| | | }); |
| | | app.use(i18n); |
| | | app.mount("#vue_item"); |
| | | </script> |
| | | </body> |
| | | |
| | | <include file="common:html-css-js" /> |
| | | |
| | | </html> |
| | |
| | | <include file="common:title" /> |
| | | <include file="common:element-plus" /> |
| | | <include file="common:html-header" /> |
| | | <style> |
| | | .cover_img { |
| | | width: 360px; |
| | | height: 240px; |
| | | vertical-align: middle; |
| | | object-fit: cover; |
| | | } |
| | | |
| | | .blog-title { |
| | | height: 53px; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .blog-desc { |
| | | height: 77px; |
| | | margin: 15px 0; |
| | | padding: 0 0 0 0 !important; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 3; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | </style> |
| | | </head> |
| | | |
| | | <body> |
| | |
| | | <!-- 顶部 导航栏 --> |
| | | <include file="common:top-header" /> |
| | | |
| | | <!-- breadcumb area --> |
| | | <!-- 背景图--> |
| | | <div class="breadcumb-area"> |
| | | <div class="container"> |
| | | <div class="row"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- End breadcumb area --> |
| | | |
| | | <!-- itpart blog area --> |
| | | |
| | | <!-- 内容 --> |
| | | <div class="itpart_blog_area blog_grid_area"> |
| | | <div class="container"> |
| | | <div class="row"> |
| | |
| | | <div class="witr_section_title"> |
| | | <div class="witr_section_title_inner text-center"> |
| | | <!-- title top --> |
| | | <h2>News & blog</h2> |
| | | <h3>You Can Check Out Our Work. </h3> |
| | | <h2>{{ $t('message.header.blog') }}</h2> |
| | | <h3>{{ $t('message.blog.text-1') }}</h3> |
| | | <!-- title bottom --> |
| | | <h1>News & Articles</h1> |
| | | <!-- <h1>News & Articles</h1> --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-12"> |
| | | <!-- Blog Section --> |
| | | <div class="witr_blog_area12"> |
| | | <div class="blog_active "> |
| | | <div class="blog_active"> |
| | | <!-- single blog --> |
| | | <div class="witr_all_mb_30 col-md-12 col-xs-12 col-sm-12"> |
| | | <div class="busi_singleBlog"> |
| | | <!-- image --> |
| | | <div class="witr_sb_thumb"> |
| | | <a href="#"> <img src="/static/home/assets/images/blog1.jpg" alt="image" /> </a> |
| | | <div class="witr_top_category category_blog_grid"> |
| | | <!-- category --> |
| | | <ul class="post-categories"> |
| | | <volist name="list" id="item"> |
| | | <div class="witr_all_mb_30 col-md-12 col-xs-12 col-sm-12"> |
| | | <div class="busi_singleBlog"> |
| | | <!-- image --> |
| | | <div class="witr_sb_thumb "> |
| | | <a href="#"> <img src="{$item.cover_img}" alt="image" class="cover_img" /> </a> |
| | | <div class="witr_top_category category_blog_grid"> |
| | | <!-- category --> |
| | | <!-- <ul class="post-categories"> |
| | | <li><a href="#">Developer</a></li> |
| | | </ul> |
| | | </ul> --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="all_blog_color"> |
| | | <div class="witr_blog_con bs5"> |
| | | <!-- title --> |
| | | <h2><a href="single-blog.html">How investing in depended increasing to business.</a></h2> |
| | | <!-- post meta --> |
| | | <span><a href="#"><i class="icofont-user-alt-3"></i> Itpa</a></span> |
| | | <span><a href="#"><i class="icofont-ui-clock"></i></a> 24 Aug 2021</span> |
| | | <!-- content --> |
| | | <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do</p> |
| | | <div class="learn_more_adn"> |
| | | <a class="learn_btn adnbtn2" href="#">Read More</a> |
| | | <div class="all_blog_color"> |
| | | <div class="witr_blog_con bs5"> |
| | | <!-- title --> |
| | | <h2> |
| | | <a href="javascript:void(0)" @click="gotoBlogDetail({$item.id})" class="blog-title"> |
| | | <template v-if="language=='zh-cn'">{$item.title}</template> |
| | | <template v-else>{$item.en_title}</template> |
| | | </a> |
| | | </h2> |
| | | <!-- post meta --> |
| | | <!-- <span><a href="#"><i class="icofont-user-alt-3"></i> Itpa</a></span> --> |
| | | <span><a href="#"><i class="icofont-ui-clock"></i></a>{{formatDate({$item.create_time})}}</span> |
| | | <!-- content --> |
| | | <p class="blog-desc"> |
| | | <template v-if="language=='zh-cn'">{$item.desc}</template> |
| | | <template v-else>{$item.en_desc}</template> |
| | | </p> |
| | | <!-- <div class="learn_more_adn"> |
| | | <a class="learn_btn adnbtn2" href="javascript:void(0)" @click="gotoBlogDetail({$item.id})">Read More</a> |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 02 single blog --> |
| | | <div class="witr_all_mb_30 col-md-12 col-xs-12 col-sm-12"> |
| | | <div class="busi_singleBlog"> |
| | | <!-- image --> |
| | | <div class="witr_sb_thumb"> |
| | | <a href="#"> <img src="/static/home/assets/images/blog2.jpg" alt="image" /> </a> |
| | | <div class="witr_top_category category_blog_grid"> |
| | | <!-- category --> |
| | | <ul class="post-categories"> |
| | | <li><a href="#">It Service</a></li> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | <div class="all_blog_color"> |
| | | <div class="witr_blog_con bs5"> |
| | | <!-- title --> |
| | | <h2><a href="single-blog.html">Email marketing tips that will increase your sales.</a></h2> |
| | | <!-- post meta --> |
| | | <span><a href="#"><i class="icofont-user-alt-3"></i> Itpa</a></span> |
| | | <span><a href="#"><i class="icofont-ui-clock"></i></a> 29 Aug 2021</span> |
| | | <!-- content --> |
| | | <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do</p> |
| | | <div class="learn_more_adn"> |
| | | <a class="learn_btn adnbtn2" href="#">Read More</a> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 03 single blog --> |
| | | <div class="witr_all_mb_30 col-md-12 col-xs-12 col-sm-12"> |
| | | <div class="busi_singleBlog"> |
| | | <!-- image --> |
| | | <div class="witr_sb_thumb"> |
| | | <a href="#"> <img src="/static/home/assets/images/blog3.jpg" alt="image" /> </a> |
| | | <div class="witr_top_category category_blog_grid"> |
| | | <!-- category --> |
| | | <ul class="post-categories"> |
| | | <li><a href="#">Management</a></li> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | <div class="all_blog_color"> |
| | | <div class="witr_blog_con bs5"> |
| | | <!-- title --> |
| | | <h2><a href="single-blog.html">Productivity tips to avoid burn out when working.</a></h2> |
| | | <!-- post meta --> |
| | | <span><a href="#"><i class="icofont-user-alt-3"></i> Itpa</a></span> |
| | | <span><a href="#"><i class="icofont-ui-clock"></i></a>24 Jun 2021</span> |
| | | <!-- content --> |
| | | <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do</p> |
| | | <div class="learn_more_adn"> |
| | | <a class="learn_btn adnbtn2" href="#">Read More</a> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 04 single blog --> |
| | | <div class="witr_all_mb_30 col-md-12 col-xs-12 col-sm-12"> |
| | | <div class="busi_singleBlog"> |
| | | <!-- image --> |
| | | <div class="witr_sb_thumb"> |
| | | <a href="#"> <img src="/static/home/assets/images/blog11.jpg" alt="image" /> </a> |
| | | <div class="witr_top_category category_blog_grid"> |
| | | <!-- category --> |
| | | <ul class="post-categories"> |
| | | <li><a href="#">Marketing</a></li> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | <div class="all_blog_color"> |
| | | <div class="witr_blog_con bs5"> |
| | | <!-- title --> |
| | | <h2><a href="single-blog.html">How investing in depended increasing to business.</a></h2> |
| | | <!-- post meta --> |
| | | <span><a href="#"><i class="icofont-user-alt-3"></i> Itpa</a></span> |
| | | <span><a href="#"><i class="icofont-ui-clock"></i></a> 24 Aug 2021</span> |
| | | <!-- content --> |
| | | <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do</p> |
| | | <div class="learn_more_adn"> |
| | | <a class="learn_btn adnbtn2" href="#">Read More</a> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </volist> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <!-- Vue App --> |
| | | <script src="/static/vue/mixin.js"></script> |
| | | <script> |
| | | var language = localStorage.getItem('changjiang-park-lang') || 'zh-cn'; |
| | | const App = { |
| | | mixins: [sharedMixin], |
| | | data() { |
| | | return { |
| | | |
| | | language: language, |
| | | list: [], |
| | | }; |
| | | }, |
| | | computed: { |
| | | |
| | | }, |
| | | mounted() { |
| | | // this.getBlogList(); |
| | | }, |
| | | created() { |
| | | }, |
| | | methods: { |
| | | formatDate(time) { |
| | | return moment(time * 1000).format("YYYY-MM-DD"); |
| | | }, |
| | | |
| | | /////进入博客详情///// |
| | | gotoBlogDetail(id) { |
| | | window.location.href = '/home/blog/detail/id/' + id + '.html'; |
| | | }, |
| | | |
| | | // 获取公告列表 |
| | | getBlogList() { |
| | | let that = this; |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: '获取中', |
| | | spinner: 'el-icon-loading', |
| | | background: 'rgba(0, 0, 0, 0.2)' |
| | | }); |
| | | let url = "/home/blog/get_blog_list.html" |
| | | postRequest(url, {}).then(res => { |
| | | loading.close(); |
| | | if (res.data.code == 200) { |
| | | that.list = res.data.data; |
| | | } |
| | | }).catch(() => { |
| | | //取消,不做处理 |
| | | }); |
| | | }, |
| | | }, |
| | | }; |
| | | const app = Vue.createApp(App); |
| | |
| | | app.use(i18n); |
| | | app.mount("#vue_item"); |
| | | </script> |
| | | <include file="common:html-css-js" /> |
| | | </body> |
| | | |
| | | <include file="common:html-css-js" /> |
| | | |
| | | </html> |
| | |
| | | </div> |
| | | </div> |
| | | <!-- END FOOTER MIDDLE AREA --> |
| | | |
| | | <!-- FOOTER BOTTOM AREA --> |
| | | <div class="footer-bottom"> |
| | | <div class="container"> |
| | | <div class="row"> |
| | | <!-- FOOTER COPYRIGHT STYLE 1 --> |
| | | <div class="col-lg-12 col-md-12 col-sm-12"> |
| | | <div class="copy-right-text"> |
| | | <!-- FOOTER COPYRIGHT TEXT --> |
| | | <p>Copyright © All rights reserved. <a target="_blank" href="https://www.mobanwang.com/" title="网站模板" class="text-white">网站模板</a></p> |
| | | <p>Copyright © All rights reserved</p> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="col-lg-6 col-md-6 col-sm-12"> |
| | | <div class="footer-menu"> |
| | | <ul class="text-right"> |
| | | <li><a href="#">Service</a></li> |
| | | <li><a href="#">Contact</a></li> |
| | | </ul> |
| | | </div> |
| | | </div> --> |
| | | <!-- FOOTER COPYRIGHT STYLE 3 --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <title>长江国贸南非电商产业园</title> |
| | | <title>Cpark-长江国贸(南非)跨境电商产业园</title> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-select v-model="currentLang" size="small" @change="(val) => changeLanguage(val, false)" style="width: 100px" class="language_select_item"> |
| | | <el-option v-for="item in languageList" :key="item.symbol" :label="item.name_loc" :value="item.symbol" /> |
| | | </el-select> |
| | | <div class="language_select_item"> |
| | | <img src="/static/images/language.png" alt=""> |
| | | <el-select v-model="currentLang" size="small" @change="(val) => changeLanguage(val, false)" style="width: 100px" class=""> |
| | | <el-option v-for="item in languageList" :key="item.symbol" :label="item.name_loc" :value="item.symbol" /> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <!-- END HEADER TOP AREA --> |
| | | <div class="itpart-main-menu one_page hidden-xs hidden-sm witr_h_h10"> |
| | | <div class="itpart_nav_area scroll_fixed postfix"> |
| | | <div class="container"> |
| | | <div class="row logo-left"> |
| | | <div class="col-md-3 col-sm-3 col-xs-4"> |
| | | <div class="col-md-4 col-sm-4 col-xs-4 logo-title-item"> |
| | | <div class="logo"> |
| | | <a class="main_sticky_main_l" href="/home/index/index.html" title="itpart"> |
| | | <img src="/static/home/images/logo.png" alt="itpart"> |
| | |
| | | <img src="/static/home/images/logo.png" alt="itpart"> |
| | | </a> |
| | | </div> |
| | | <div class="logo-title">{{ $t('message.common.cpark') }}</div> |
| | | </div> |
| | | <!-- MAIN MENU --> |
| | | <div class="col-md-9 col-sm-9 col-xs-8"> |
| | | <div class="col-md-8 col-sm-8 col-xs-8"> |
| | | <div class="tx_mmenu_together"> |
| | | <nav class="itpart_menu"> |
| | | <ul class="sub-menu"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | <!-- 手机访问的菜单 --> |
| | | <div class="mobile_logo_area hidden-md hidden-lg"> |
| | | <div class="container"> |
| | | <div class="row"> |
| | | <div class="col-sm-12"> |
| | | <div class="mobile_menu_logo text-center"> |
| | | <a href="/home/index/index.html" title="lowgo"> |
| | | <img src="/static/home/images/logo.png" alt="lowgo"> |
| | | </a> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- MOBILE MENU AREA --> |
| | | <div class="home-2 mbm hidden-md hidden-lg header_area main-menu-area"> |
| | | <div class="menu_area mobile-menu"> |
| | | <nav class="itpart_menu"> |
| | | <ul class="sub-menu"> |
| | | <li><a href="/home/index/index.html">{{ $t('message.header.home') }}</a></li> |
| | | <li><a href="/home/about/index.html">{{ $t('message.header.about') }}</a></li> |
| | | <li><a href="/home/service/index.html">{{ $t('message.header.service') }}</a></li> |
| | | <li><a href="/home/blog/index.html">{{ $t('message.header.blog') }}</a></li> |
| | | <li><a href="/home/partners/index.html">{{ $t('message.header.partners') }}</a></li> |
| | | <li><a href="/home/contact/index.html">{{ $t('message.header.contact') }}</a></li> |
| | | </ul> |
| | | </nav> |
| | | </div> |
| | | </div> |
| | | <!-- END MOBILE MENU AREA --> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- contact area2 --> |
| | | |
| | | <!-- 提交在线咨询 --> |
| | | <div class="contact_area2"> |
| | | <div class="container"> |
| | | <div class="row"> |
| | |
| | | <h2>{{ $t('message.common.submit-contact-information') }}</h2> |
| | | </div> |
| | | <div class="witr_apartment_form"> |
| | | <form action="mail.php" method="post" id="contact-form"> |
| | | <form method="post" id="contact-form"> |
| | | <div class="row"> |
| | | <div class="col-lg-6 col-md-6"> |
| | | <div class="twr_form_box"> |
| | | <input type="text" name="name" :placeholder="$t('message.common.name')"> |
| | | <input type="text" name="name" :placeholder="$t('message.common.name')" v-model="form.name"> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-6 col-md-6"> |
| | | <div class="twr_form_box"> |
| | | <input type="email" name="email" :placeholder="$t('message.common.email')"> |
| | | <input type="email" name="email" :placeholder="$t('message.common.email')" v-model="form.email"> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-6 col-md-6"> |
| | | <div class="twr_form_box"> |
| | | <input type="number" name="number" :placeholder="$t('message.common.phone')"> |
| | | <input type="number" name="number" :placeholder="$t('message.common.phone')" v-model="form.phone"> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-6 col-md-6"> |
| | | <div class="twr_form_box"> |
| | | <input type="text" name="subject" :placeholder="$t('message.common.subject')"> |
| | | <input type="text" name="subject" :placeholder="$t('message.common.subject')" v-model="form.subject"> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-12 col-md-12"> |
| | | <div class="twr_form_box "> |
| | | <textarea name="textarea" :placeholder="$t('message.common.message')"></textarea> |
| | | <textarea name="textarea" :placeholder="$t('message.common.message')" v-model="form.message"></textarea> |
| | | </div> |
| | | <button type="submit" name="ok" class="btn ">{{ $t('message.common.submit') }}</button> |
| | | <button type="button" name="ok" class="btn" @click="submitForm" :disabled="submitDisabled">{{ $t('message.common.submit') }}</button> |
| | | </div> |
| | | <div class="col-lg-12 text-center"> |
| | | <p class="form-messege"></p> |
| | |
| | | mixins: [sharedMixin], |
| | | data() { |
| | | return { |
| | | |
| | | form: { |
| | | name: '', |
| | | email: '', |
| | | phone: '', |
| | | subject: '', |
| | | message: '', |
| | | } |
| | | }; |
| | | }, |
| | | computed: { |
| | |
| | | created() { |
| | | }, |
| | | methods: { |
| | | submitForm() { |
| | | var that = this; |
| | | that.submitDisabled = true; |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: '提交中', |
| | | spinner: 'el-icon-loading', |
| | | background: 'rgba(0, 0, 0, 0.2)' |
| | | }); |
| | | let url = "/home/contact/save_message.html"; |
| | | postRequest(url, that.form).then(res => { |
| | | loading.close(); |
| | | if (res.data.code == 200) { |
| | | that.$message({ |
| | | message: res.data.message, |
| | | type: 'success', |
| | | duration: 1000, |
| | | center: true, |
| | | onClose: function () { |
| | | that.form = { |
| | | name: '', |
| | | email: '', |
| | | phone: '', |
| | | subject: '', |
| | | message: '', |
| | | } |
| | | } |
| | | }); |
| | | } else { |
| | | that.submitDisabled = false; |
| | | that.$message({ |
| | | message: res.data.message, |
| | | type: 'error', |
| | | duration: 1500, |
| | | center: true |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | }, |
| | | }; |
| | |
| | | <include file="common:element-plus" /> |
| | | <link rel="stylesheet" href="/static/home/css/index/index.css?x=3"> |
| | | <include file="common:html-header" /> |
| | | <style> |
| | | .cover_img { |
| | | width: 360px; |
| | | height: 240px; |
| | | vertical-align: middle; |
| | | object-fit: cover; |
| | | } |
| | | |
| | | .blog-title { |
| | | height: 53px; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .blog-desc { |
| | | height: 77px; |
| | | margin: 15px 0; |
| | | padding: 0 0 0 0 !important; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 3; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | .witr_pslide_image img{ |
| | | width: 100%; |
| | | } |
| | | </style> |
| | | </head> |
| | | |
| | | <body> |
| | |
| | | <!-- 顶部 导航栏 --> |
| | | <include file="common:top-header" /> |
| | | |
| | | <!-- MOBILE MENU Logo AREA --> |
| | | <div class="mobile_logo_area hidden-md hidden-lg"> |
| | | <div class="container"> |
| | | <div class="row"> |
| | | <div class="col-sm-12"> |
| | | <div class="mobile_menu_logo text-center"> |
| | | <a href="index.html" title="lowgo"> |
| | | <img src="/static/home/images/logo.png" alt="lowgo"> |
| | | </a> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- MOBILE MENU AREA --> |
| | | <div class="home-2 mbm hidden-md hidden-lg header_area main-menu-area"> |
| | | <div class="menu_area mobile-menu"> |
| | | <nav class="itpart_menu"> |
| | | <ul class="sub-menu"> |
| | | <li class="menu-item-has-children"><a href="#">Home</a> |
| | | <ul class="sub-menu"> |
| | | <li><a href="index.html">Home Page</a></li> |
| | | <li><a href="home-two.html">Home Two Page</a></li> |
| | | <li><a href="home-video.html">Home Video Page</a></li> |
| | | <li><a href="landing-page.html">Landing Page</a></li> |
| | | </ul> |
| | | </li> |
| | | <li><a href="about.html">About</a></li> |
| | | <li><a href="service.html">Service</a></li> |
| | | <li class="menu-item-has-children"><a href="blog.html">Blog</a> |
| | | <ul class="sub-menu"> |
| | | <li><a href="blog-left-sidebar.html">Blog Left Sidebar</a></li> |
| | | <li><a href="blog-right-sidebar.html">Blog Right Sidebar</a></li> |
| | | <li><a href="blog.html">Blog Gird</a></li> |
| | | </ul> |
| | | </li> |
| | | <li class="menu-item-has-children"><a href="#">Pages</a> |
| | | <ul class="sub-menu"> |
| | | <li class="menu-item-has-children"><a href="">Portfolio</a> |
| | | <ul class="sub-menu"> |
| | | <li><a href="portfolio-grid.html">Portfolio Grid</a></li> |
| | | <li><a href="portfolio-3column.html">Portfolio 3Column</a></li> |
| | | <li><a href="portfolio-4column.html">Portfolio 4Column</a></li> |
| | | </ul> |
| | | </li> |
| | | <li><a href="testimonial.html">Testimonial</a></li> |
| | | <li><a href="pricing-table.html">Pricing Table</a></li> |
| | | <li><a href="team.html">Team</a></li> |
| | | <li><a href="faq-page.html">Faq Page</a></li> |
| | | <li><a href="single-service.html">Single Service</a></li> |
| | | </ul> |
| | | </li> |
| | | <li><a href="contact.html">Contact</a></li> |
| | | </ul> |
| | | |
| | | </nav> |
| | | </div> |
| | | </div> |
| | | <!-- END MOBILE MENU AREA --> |
| | | |
| | | <!-- 轮播图 --> |
| | | <div class="witr_swiper_area"> |
| | | <div class="swiper-container swiper_active"> |
| | | <div class="swiper-wrapper"> |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- about area --> |
| | | <!-- 关于我们 --> |
| | | <div class="itpart_about_area"> |
| | | <div class="container"> |
| | | <div class="row"> |
| | |
| | | <!-- btn default style --> |
| | | <div class="witr_btn_style mr"> |
| | | <div class="witr_btn_sinner"> |
| | | <a href="#" class="witr_btn">{{ $t('message.common.aboutUs')}}</a> |
| | | <a href="/home/about/index.html" class="witr_btn">{{ $t('message.common.aboutUs')}}</a> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | <!-- button --> |
| | | <div class="witr_btnp_color"> |
| | | <a class="btn" href="#">{{ $t('message.home.text-61') }}</a> |
| | | <a class="btn" href="/home/contact/index.html">{{ $t('message.home.text-61') }}</a> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | <!-- button --> |
| | | <div class="witr_btnp_color"> |
| | | <a class="btn" href="#">{{ $t('message.home.text-61') }}</a> |
| | | <a class="btn" href="/home/contact/index.html">{{ $t('message.home.text-61') }}</a> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | <!-- button --> |
| | | <div class="witr_btnp_color"> |
| | | <a class="btn" href="#">{{ $t('message.home.text-61') }}</a> |
| | | <a class="btn" href="/home/contact/index.html">{{ $t('message.home.text-61') }}</a> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="testimonial_active"> |
| | | <!-- single testimonial --> |
| | | <div class="witr_testi_itemt testi-width all_color_testimonial"> |
| | | <div class=""> |
| | | <img src="/static/home/images/parent-1.png" alt="image" /> |
| | | </div> |
| | | </div> |
| | | <div class="witr_testi_itemt testi-width all_color_testimonial"> |
| | | <div class=""> |
| | | <img src="/static/home/images/parent-2.png" alt="image" /> |
| | | </div> |
| | | </div> |
| | | <div class="witr_testi_itemt testi-width all_color_testimonial"> |
| | | <div class=""> |
| | | <img src="/static/home/images/parent-3.png" alt="image" /> |
| | | </div> |
| | | </div> |
| | | <div class="witr_testi_itemt testi-width all_color_testimonial"> |
| | | <div class=""> |
| | | <img src="/static/home/images/parent-4.png" alt="image" /> |
| | | </div> |
| | | </div> |
| | | <div class="witr_testi_itemt testi-width all_color_testimonial"> |
| | | <div class=""> |
| | | <img src="/static/home/images/parent-5.png" alt="image" /> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="witr_testi_itemt testi-width all_color_testimonial"> |
| | | <div class="em_single_testimonial"> |
| | | <div class="em_test_thumb test-part"> |
| | | <img src="/static/home/assets/images/t1.png" alt="image" /> |
| | |
| | | </div> |
| | | <div class="em_testi_content"> |
| | | <div class="em_testi_text"> |
| | | <!-- content --> |
| | | <p>Through gaining experience in various economic periods, our team are able to identify the best opportunities hether we are in good times or bad times.</p> |
| | | </div> |
| | | </div> |
| | |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 02 single testimonial --> |
| | | <div class="witr_testi_itemt testi-width all_color_testimonial"> |
| | | <div class="em_single_testimonial"> |
| | | <div class="em_test_thumb test-part"> |
| | | <img src="/static/home/assets/images/t2.png" alt="image" /> |
| | | </div> |
| | | <div class="em_testi_title"> |
| | | <h2>Chicana males <span>Manager</span></h2> |
| | | </div> |
| | | <div class="em_testi_logo"> |
| | | <div class="em_testilogo_inner"> |
| | | </div> |
| | | </div> |
| | | <div class="em_testi_content"> |
| | | <div class="em_testi_text"> |
| | | <!-- content --> |
| | | <p>Through gaining experience in various economic periods, our team are able to identify the best opportunities hether we are in good times or bad times.</p> |
| | | </div> |
| | | </div> |
| | | <div class="test-part"> |
| | | <ul> |
| | | <li> |
| | | <div class="execllent_toggol"> |
| | | <div class="em_crating"> |
| | | <i class="icofont-star active"></i> |
| | | <i class="icofont-star active"></i> |
| | | <i class="icofont-star active"></i> |
| | | <i class="icofont-star active"></i> |
| | | <i class="icofont-star active"></i> |
| | | </div> |
| | | </div> |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 03 single testimonial --> |
| | | <div class="witr_testi_itemt testi-width all_color_testimonial"> |
| | | <div class="em_single_testimonial"> |
| | | <div class="em_test_thumb test-part"> |
| | | <img src="/static/home/assets/images/t1.png" alt="image" /> |
| | | </div> |
| | | <div class="em_testi_title"> |
| | | <h2>David Markers <span>Co- Of Officer</span></h2> |
| | | </div> |
| | | <div class="em_testi_logo"> |
| | | <div class="em_testilogo_inner"> |
| | | </div> |
| | | </div> |
| | | <div class="em_testi_content"> |
| | | <div class="em_testi_text"> |
| | | <!-- content --> |
| | | <p>Through gaining experience in various economic periods, our team are able to identify the best opportunities hether we are in good times or bad times.</p> |
| | | </div> |
| | | </div> |
| | | <div class="test-part"> |
| | | <ul> |
| | | <li> |
| | | <div class="execllent_toggol"> |
| | | <div class="em_crating"> |
| | | <i class="icofont-star active"></i> |
| | | <i class="icofont-star active"></i> |
| | | <i class="icofont-star active"></i> |
| | | <i class="icofont-star active"></i> |
| | | <i class="icofont-star active"></i> |
| | | </div> |
| | | </div> |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | |
| | | </div> |
| | | </div> |
| | |
| | | <div class="witr_blog_area12"> |
| | | <div class="blog_active "> |
| | | <!-- single blog --> |
| | | <div class="witr_all_mb_30 col-md-12 col-xs-12 col-sm-12"> |
| | | <div class="busi_singleBlog"> |
| | | <!-- image --> |
| | | <div class="witr_sb_thumb"> |
| | | <a href="#"> <img src="/static/home/assets/images/blog1.jpg" alt="image" /> </a> |
| | | <div class="witr_top_category"> |
| | | <!-- category --> |
| | | <ul class="post-categories"> |
| | | <volist name="list" id="item"> |
| | | <div class="witr_all_mb_30 col-md-12 col-xs-12 col-sm-12"> |
| | | <div class="busi_singleBlog"> |
| | | <!-- image --> |
| | | <div class="witr_sb_thumb "> |
| | | <a href="#"> <img src="{$item.cover_img}" alt="image" class="cover_img" /> </a> |
| | | <div class="witr_top_category category_blog_grid"> |
| | | <!-- category --> |
| | | <!-- <ul class="post-categories"> |
| | | <li><a href="#">Developer</a></li> |
| | | </ul> |
| | | </ul> --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="all_blog_color"> |
| | | <div class="witr_blog_con bs5"> |
| | | <!-- post meta --> |
| | | <span><a href="#"><i class="icofont-user-alt-3"></i> Itpa</a></span> |
| | | <span><a href="#"><i class="icofont-ui-clock"></i></a> 24 Aug 2021</span> |
| | | <!-- title --> |
| | | <h2><a href="single-blog.html">How investing in depended increasing to business.</a></h2> |
| | | <!-- content --> |
| | | <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore</p> |
| | | <div class="wbutton_right_icon"> |
| | | <a href="#"><i class="ti-arrow-right"></i></a> |
| | | <div class="all_blog_color"> |
| | | <div class="witr_blog_con bs5"> |
| | | <!-- title --> |
| | | <h2> |
| | | <a href="javascript:void(0)" @click="gotoBlogDetail(item.id)" class="blog-title"> |
| | | <template v-if="language=='zh-cn'">{$item.title}</template> |
| | | <template v-else>{$item.en_title}</template> |
| | | </a> |
| | | </h2> |
| | | <!-- post meta --> |
| | | <!-- <span><a href="#"><i class="icofont-user-alt-3"></i> Itpa</a></span> --> |
| | | <span><a href="#"><i class="icofont-ui-clock"></i></a>{{formatDate({$item.create_time})}}</span> |
| | | <!-- content --> |
| | | <p class="blog-desc"> |
| | | <template v-if="language=='zh-cn'">{$item.desc}</template> |
| | | <template v-else>{$item.en_desc}</template> |
| | | </p> |
| | | <!-- <div class="learn_more_adn"> |
| | | <a class="learn_btn adnbtn2" href="javascript:void(0)" @click="gotoBlogDetail({$item.id})">Read More</a> |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 02 single blog --> |
| | | <div class="witr_all_mb_30 col-md-12 col-xs-12 col-sm-12"> |
| | | <div class="busi_singleBlog"> |
| | | <!-- image --> |
| | | <div class="witr_sb_thumb"> |
| | | <a href="#"> <img src="/static/home/assets/images/blog2.jpg" alt="image" /> </a> |
| | | <div class="witr_top_category"> |
| | | <!-- category --> |
| | | <ul class="post-categories"> |
| | | <li><a href="#">Support</a></li> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | <div class="all_blog_color"> |
| | | <div class="witr_blog_con bs5"> |
| | | <!-- post meta --> |
| | | <span><a href="#"><i class="icofont-user-alt-3"></i> Itpa</a></span> |
| | | <span><a href="#"><i class="icofont-ui-clock"></i></a> 29 Aug 2021</span> |
| | | <!-- title --> |
| | | <h2><a href="single-blog.html">Email marketing tips that will increase your sales.</a></h2> |
| | | <!-- content --> |
| | | <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore</p> |
| | | <div class="wbutton_right_icon"> |
| | | <a href="#"><i class="ti-arrow-right"></i></a> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 03 single blog --> |
| | | <div class="witr_all_mb_30 col-md-12 col-xs-12 col-sm-12"> |
| | | <div class="busi_singleBlog"> |
| | | <!-- image --> |
| | | <div class="witr_sb_thumb"> |
| | | <a href="#"> <img src="/static/home/assets/images/blog3.jpg" alt="image" /> </a> |
| | | <div class="witr_top_category"> |
| | | <!-- category --> |
| | | <ul class="post-categories"> |
| | | <li><a href="#">It Service</a></li> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | <div class="all_blog_color"> |
| | | <div class="witr_blog_con bs5"> |
| | | <!-- post meta --> |
| | | <span><a href="#"><i class="icofont-user-alt-3"></i> Itpa</a></span> |
| | | <span><a href="#"><i class="icofont-ui-clock"></i></a>24 Jun 2021</span> |
| | | <!-- title --> |
| | | <h2><a href="single-blog.html">Productivity tips to avoid burn out when working.</a></h2> |
| | | <!-- content --> |
| | | <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore</p> |
| | | <div class="wbutton_right_icon"> |
| | | <a href="#"><i class="ti-arrow-right"></i></a> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 04 single blog --> |
| | | <div class="witr_all_mb_30 col-md-12 col-xs-12 col-sm-12"> |
| | | <div class="busi_singleBlog"> |
| | | <!-- image --> |
| | | <div class="witr_sb_thumb"> |
| | | <a href="#"> <img src="/static/home/assets/images/blog11.jpg" alt="image" /> </a> |
| | | <div class="witr_top_category"> |
| | | <!-- category --> |
| | | <ul class="post-categories"> |
| | | <li><a href="#">Management</a></li> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | <div class="all_blog_color"> |
| | | <div class="witr_blog_con bs5"> |
| | | <!-- post meta --> |
| | | <span><a href="#"><i class="icofont-user-alt-3"></i> Itpa</a></span> |
| | | <span><a href="#"><i class="icofont-ui-clock"></i></a> 24 Aug 2021</span> |
| | | <!-- title --> |
| | | <h2><a href="single-blog.html">How investing in depended increasing to business.</a></h2> |
| | | <!-- content --> |
| | | <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore</p> |
| | | <div class="wbutton_right_icon"> |
| | | <a href="#"><i class="ti-arrow-right"></i></a> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </volist> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="row"> |
| | | <div class="col-lg-6 col-md-6"> |
| | | <div class="twr_form_box"> |
| | | <input type="text" name="name" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required form-control" :placeholder="$t('message.common.name')"> |
| | | <input type="text" name="name" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required form-control" :placeholder="$t('message.common.name')" v-model="form.name"> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-6 col-md-6"> |
| | | <div class="twr_form_box"> |
| | | <input type="email" name="email" class="wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required wpcf7-validates-as-email form-control" :placeholder="$t('message.common.email')"> |
| | | <input type="email" name="email" class="wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required wpcf7-validates-as-email form-control" :placeholder="$t('message.common.email')" v-model="form.email"> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-6 col-md-6"> |
| | | <div class="twr_form_box"> |
| | | <input type="number" name="number" class="wpcf7-form-control wpcf7-number wpcf7-validates-as-required wpcf7-validates-as-number form-control" :placeholder="$t('message.common.phone')"> |
| | | <input type="number" name="number" class="wpcf7-form-control wpcf7-number wpcf7-validates-as-required wpcf7-validates-as-number form-control" :placeholder="$t('message.common.phone')" v-model="form.phone"> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-6 col-md-6"> |
| | | <div class="twr_form_box"> |
| | | <input type="text" name="subject" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required form-control" :placeholder="$t('message.common.subject')"> |
| | | <input type="text" name="subject" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required form-control" :placeholder="$t('message.common.subject')" v-model="form.subject"> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-12 col-md-12"> |
| | | <div class="twr_form_box "> |
| | | <textarea name="textarea" class="wpcf7-form-control wpcf7-textarea wpcf7-validates-as-required form-control" :placeholder="$t('message.common.message')"></textarea> |
| | | <textarea name="textarea" class="wpcf7-form-control wpcf7-textarea wpcf7-validates-as-required form-control" :placeholder="$t('message.common.message')" v-model="form.message"></textarea> |
| | | </div> |
| | | <button type="submit" name="ok" class="btn">{{ $t('message.common.submit') }}</button> |
| | | <button type="button" name="ok" class="btn" @click="submitForm" :disabled="submitDisabled">{{ $t('message.common.submit') }}</button> |
| | | </div> |
| | | <div class="col-lg-12 text-center"> |
| | | <p class="form-messege"></p> |
| | |
| | | <!-- Vue App --> |
| | | <script src="/static/vue/mixin.js"></script> |
| | | <script> |
| | | var language = localStorage.getItem('changjiang-park-lang') || 'zh-cn'; |
| | | const App = { |
| | | mixins: [sharedMixin], |
| | | data() { |
| | | return { |
| | | |
| | | language: language, |
| | | form: { |
| | | name: '', |
| | | email: '', |
| | | phone: '', |
| | | subject: '', |
| | | message: '', |
| | | } |
| | | }; |
| | | }, |
| | | computed: { |
| | |
| | | created() { |
| | | }, |
| | | methods: { |
| | | formatDate(time) { |
| | | return moment(time * 1000).format("YYYY-MM-DD"); |
| | | }, |
| | | |
| | | /////进入博客详情///// |
| | | gotoBlogDetail(id) { |
| | | window.location.href = '/home/blog/detail/id/' + id + '.html'; |
| | | }, |
| | | submitForm() { |
| | | var that = this; |
| | | that.submitDisabled = true; |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: '提交中', |
| | | spinner: 'el-icon-loading', |
| | | background: 'rgba(0, 0, 0, 0.2)' |
| | | }); |
| | | let url = "/home/contact/save_message.html"; |
| | | postRequest(url, that.form).then(res => { |
| | | loading.close(); |
| | | if (res.data.code == 200) { |
| | | that.$message({ |
| | | message: res.data.message, |
| | | type: 'success', |
| | | duration: 1000, |
| | | center: true, |
| | | onClose: function () { |
| | | that.form = { |
| | | name: '', |
| | | email: '', |
| | | phone: '', |
| | | subject: '', |
| | | message: '', |
| | | } |
| | | } |
| | | }); |
| | | } else { |
| | | that.submitDisabled = false; |
| | | that.$message({ |
| | | message: res.data.message, |
| | | type: 'error', |
| | | duration: 1500, |
| | | center: true |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | }, |
| | | }; |
| | |
| | | </script> |
| | | </body> |
| | | <include file="common:html-css-js" /> |
| | | |
| | | </html> |
| | |
| | | <div class="witr_service2 service_overflow_inherit all_service2_color "> |
| | | <!-- image --> |
| | | <div class="witr_service2_image"> |
| | | <img src="/static/home/assets/images/service1.jpg" alt="image"> |
| | | <div class="wbutton_top_service_icon"> |
| | | <img src="/static/home/images/collaborators-2.png" alt="image"> |
| | | <!-- <div class="wbutton_top_service_icon"> |
| | | <a href=""> |
| | | <span class="ti-arrow-right"></span> |
| | | </a> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | <div class="witr_servicetwo_text"> |
| | | <div class="witr_service2_icon_bottom"> |
| | |
| | | <div class="witr_service2 service_overflow_inherit all_service2_color "> |
| | | <!-- image --> |
| | | <div class="witr_service2_image"> |
| | | <img src="/static/home/assets/images/service-2.jpg" alt="image"> |
| | | <div class="wbutton_top_service_icon"> |
| | | <img src="/static/home/images/collaborators-1.png" alt="image"> |
| | | <!-- <div class="wbutton_top_service_icon"> |
| | | <a href=""> |
| | | <span class="ti-arrow-right"></span> |
| | | </a> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | <div class="witr_servicetwo_text"> |
| | | <div class="witr_service2_icon_bottom"> |
| | |
| | | <div class="witr_service2 service_overflow_inherit all_service2_color "> |
| | | <!-- image --> |
| | | <div class="witr_service2_image"> |
| | | <img src="/static/home/assets/images/service-3.jpg" alt="image"> |
| | | <div class="wbutton_top_service_icon"> |
| | | <img src="/static/home/images/collaborators-3.png" alt="image"> |
| | | <!-- <div class="wbutton_top_service_icon"> |
| | | <a href=""> |
| | | <span class="ti-arrow-right"></span> |
| | | </a> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | <div class="witr_servicetwo_text"> |
| | | <div class="witr_service2_icon_bottom"> |
| | |
| | | var id = $("#id").val(); |
| | | const App = { |
| | | mixins: [sharedMixin],/////共用的方法///// |
| | | data() { |
| | | return { |
| | | blog_id: id, |
| | | addBlogForm: { |
| | | title: '', |
| | | en_title: '', |
| | |
| | | mounted() { |
| | | }, |
| | | created() { |
| | | window.setHtmlValue = this.setHtmlValue; |
| | | window.getHtmlValue = this.getHtmlValue; |
| | | if (this.blog_id > 0) { |
| | | this.getBlogInfo(); |
| | | } |
| | | }, |
| | | methods: { |
| | | /////获取富文本内容///// |
| | | setHtmlValue(value, type = 1) { |
| | | getHtmlValue(value, type = 1) { |
| | | if (type == 1) { |
| | | this.addBlogForm.content = value; |
| | | } else { |
| | |
| | | } |
| | | }, |
| | | |
| | | /////上传图片成功后///// |
| | | handleCoverImgSuccess(response, uploadFile) { |
| | | if (response.code != 200) { |
| | | this.$message({ |
| | |
| | | return false; |
| | | } |
| | | this.addBlogForm.cover_img = response.data.url; |
| | | // console.log(response,uploadFile); |
| | | // this.addBlogForm.cover_img = arguments[0].url; |
| | | }, |
| | | |
| | | handleRemove(){}, |
| | | |
| | | /////上传图片之前///// |
| | | beforeCoverImgUpload(rawFile) { |
| | | // console.log(rawFile); |
| | | if (rawFile.type !== 'image/jpeg') { |
| | |
| | | } |
| | | return true; |
| | | }, |
| | | |
| | | /////获取博客信息///// |
| | | getBlogInfo() { |
| | | let that = this; |
| | | let url = "/admin/blog/get_blog_info.html"; |
| | | postRequest(url, { id: that.blog_id }).then(res => { |
| | | if (res.data.code == 200) { |
| | | that.addBlogForm = res.data.data; |
| | | setTimeout(function () { |
| | | window.setHtmlValue(res.data.data.content, 1); |
| | | window.setHtmlValue(res.data.data.en_content, 2); |
| | | }) |
| | | } else { |
| | | that.$message({ |
| | | message: res.data.message, |
| | | type: 'error', |
| | | duration: 1500, |
| | | center: true |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | /////保存///// |
| | | onSubmit() { |
| | | var that = this; |
| | |
| | | mixins: [sharedMixin],/////共用的方法///// |
| | | data() { |
| | | return { |
| | | list: [], |
| | | blogList: [], |
| | | listCount: 0, |
| | | searchForm: { |
| | | keyword: "", |
| | | page: 1, |
| | | limit: 20, |
| | | }, |
| | | ifsubmit: false, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | }, |
| | | created() { }, |
| | | created() { |
| | | this.getBlogList(); |
| | | }, |
| | | methods: { |
| | | index() { |
| | | formatDate(time) { |
| | | return moment(time * 1000).format("YYYY-MM-DD H:m"); |
| | | }, |
| | | |
| | | /////改变状态///// |
| | | changeBlogStatus(id) { |
| | | let that = this; |
| | | let url = "/admin/adminmenu/index.html" |
| | | postRequest(url, {}).then(res => { |
| | | let loading = this.$loading({ |
| | | lock: true, |
| | | text: 'Loading', |
| | | spinner: 'el-icon-loading', |
| | | background: 'rgba(0, 0, 0, 0.7)' |
| | | }); |
| | | let url = "/admin/blog/change_blog_status.html"; |
| | | postRequest(url, { id: id }).then(res => { |
| | | loading.close() |
| | | if (res.data.code == 200) { |
| | | that.list = res.data.list; |
| | | that.$message({ |
| | | message: res.data.message, |
| | | type: 'success', |
| | | duration: 1000, |
| | | center: true, |
| | | onClose: function () { |
| | | that.getBlogList(); |
| | | } |
| | | }) |
| | | } else { |
| | | that.$message({ |
| | | message: res.data.message, |
| | | type: 'error', |
| | | duration: 2000, |
| | | center: true |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /////进入编辑页面///// |
| | | editBlog(id) { |
| | | window.location.href = "/admin/blog/add/id/" + id + ".html"; |
| | | }, |
| | | |
| | | /////删除文章///// |
| | | deleteBlog(id) { |
| | | let that = this; |
| | | let loading = this.$loading({ |
| | | lock: true, |
| | | text: 'Loading', |
| | | spinner: 'el-icon-loading', |
| | | }); |
| | | let url = "/admin/blog/delete_blog.html"; |
| | | postRequest(url, { id: id }).then(res => { |
| | | loading.close() |
| | | if (res.data.code == 200) { |
| | | that.$message({ |
| | | message: res.data.message, |
| | | type: 'success', |
| | | duration: 1000, |
| | | center: true, |
| | | onClose: function () { |
| | | that.getBlogList(); |
| | | } |
| | | }) |
| | | } else { |
| | | that.$message({ |
| | | message: res.data.message, |
| | | type: 'error', |
| | | duration: 2000, |
| | | center: true |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /////获取文章列表///// |
| | | getBlogList(page = 1) { |
| | | let that = this; |
| | | that.searchForm.page = page; |
| | | let loading = this.$loading({ |
| | | lock: true, |
| | | text: 'Loading', |
| | | spinner: 'el-icon-loading', |
| | | background: 'rgba(0, 0, 0, 0.7)' |
| | | }); |
| | | let url = "/admin/blog/get_blog_list.html" |
| | | postRequest(url, that.searchForm).then(res => { |
| | | loading.close() |
| | | if (res.data.code == 200) { |
| | | that.blogList = res.data.data.list; |
| | | that.listCount = +res.data.data.total; |
| | | } |
| | | }); |
| | | }, |
| New file |
| | |
| | | |
| | | |
| | | const App = { |
| | | mixins: [sharedMixin],/////共用的方法///// |
| | | data() { |
| | | return { |
| | | list: [], |
| | | count: 0, |
| | | searchForm: { |
| | | page: 1, |
| | | limit: 20, |
| | | kw: '', |
| | | }, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.getOnlineMessageList(); |
| | | }, |
| | | created() { }, |
| | | methods: { |
| | | formatDate(time) { |
| | | return moment(time * 1000).format("YYYY-MM-DD H:m"); |
| | | }, |
| | | ///修改扩展字段的值//// |
| | | changeMessageStatus(id) { |
| | | let that = this; |
| | | let url = "/admin/onlineMessage/change_message_status.html" |
| | | postRequest(url, { id: id }).then(res => { |
| | | if (res.data.code == 200) { |
| | | that.$message({ |
| | | message: res.data.message, |
| | | type: 'success', |
| | | duration: 1000, |
| | | center: true, |
| | | onClose: function () { |
| | | that.getOnlineMessageList(); |
| | | } |
| | | }); |
| | | } else { |
| | | that.$message({ |
| | | message: res.data.message, |
| | | type: 'error', |
| | | duration: 2000, |
| | | center: true |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | }, |
| | | |
| | | handleSizeChange(val) { |
| | | //////设置每页多少条 |
| | | this.searchForm.page_size = val |
| | | this.getOnlineMessageList(); |
| | | }, |
| | | handleCurrentChange(val) { |
| | | ///改变当前页/////// |
| | | this.searchForm.page = val |
| | | this.getOnlineMessageList(); |
| | | }, |
| | | // 获取公告列表 |
| | | getOnlineMessageList() { |
| | | let that = this; |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: '获取中', |
| | | spinner: 'el-icon-loading', |
| | | background: 'rgba(0, 0, 0, 0.2)' |
| | | }); |
| | | let url = "/admin/onlineMessage/get_online_message_list.html" |
| | | postRequest(url, that.searchForm).then(res => { |
| | | loading.close(); |
| | | if (res.data.code == 200) { |
| | | that.list = res.data.data.list; |
| | | that.count = +res.data.data.total; |
| | | } |
| | | }).catch(() => { |
| | | //取消,不做处理 |
| | | }); |
| | | }, |
| | | } |
| | | }; |
| | | const app = Vue.createApp(App); |
| | | for (const [key, component] of Object.entries(ElementPlusIconsVue)) { |
| | | app.component(key, component) |
| | | } |
| | | app.use(ElementPlus, { |
| | | locale: ElementPlusLocaleZhCn, |
| | | }); |
| | | app.mount("#vue_item"); |
| | |
| | | padding: 10px 0px; |
| | | } |
| | | |
| | | .language_select_item{ |
| | | .language_select_item { |
| | | position: absolute; |
| | | right: 10px; |
| | | top: 10px; |
| | |
| | | color: #ff3d00; |
| | | } |
| | | |
| | | .itpart_nav_area.prefix .logo-title { |
| | | color: #fff; |
| | | } |
| | | |
| | | /* LOGO LEFT RIGHT CSS */ |
| | | .logo-left { |
| | | align-items: center; |
| | |
| | | |
| | | .logo-right .itpart_menu>ul>li:last-child a { |
| | | padding-right: auto; |
| | | } |
| | | |
| | | .logo-title-item { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .logo-title-item .logo-title { |
| | | text-align: right; |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | line-height: 24px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | /* logo top */ |
| | |
| | | margin: 26px 0; |
| | | } |
| | | |
| | | .itpart-description-area .logo{ |
| | | .itpart-description-area .logo { |
| | | width: 100px; |
| | | } |
| | | |
| | |
| | | 'subject': '主题', |
| | | 'message': '留言', |
| | | 'service': '服务', |
| | | 'cpark': '长江国贸(南非)跨境电商产业园', |
| | | }, |
| | | header: { |
| | | 'home': '首页', |
| | | 'about': '关于我们', |
| | | 'service': '服务', |
| | | 'blog': '推文', |
| | | 'blog': '最新动态', |
| | | 'partners': '合作伙伴', |
| | | 'contact': '联系我们', |
| | | }, |
| | |
| | | 'text-85': '近期更新', |
| | | }, |
| | | about: { |
| | | 'text-1': '我们的股东', |
| | | 'text-1': '集团公司', |
| | | 'text-2': '武汉金融控股集团', |
| | | 'text-3': '作为武汉市属国有金融平台,深耕金融领域十余年。整合银行、证券、保险全牌照资源,为跨境电商企业定制出海金融方案,覆盖资金授信、海外风控等全流程,助力突破资金壁垒,稳健布局全球市场。', |
| | | 'text-4': '长江国贸', |
| | |
| | | 'text-4': '国内电话', |
| | | 'text-5': '国际电话', |
| | | }, |
| | | blog: { |
| | | 'text-1': '你可以看看我们的工作', |
| | | } |
| | | } |
| | | }, |
| | | 'en-us': { |
| | |
| | | 'subject': 'Subject', |
| | | 'message': 'Message', |
| | | 'service': 'Service', |
| | | 'cpark': 'Changjiang SA E-Commerce Hub', |
| | | }, |
| | | header: { |
| | | 'home': 'Home', |
| | |
| | | 'text-85': 'Our Recent Update', |
| | | }, |
| | | about: { |
| | | 'text-1': 'Our Shareholder', |
| | | 'text-1': 'Group Company', |
| | | 'text-2': 'Wuhan Financial Holdings Group', |
| | | 'text-3': 'As a state - owned financial platform in Wuhan, we’ve specialized in finance for over a decade. Integrating banking, securities, and insurance resources, we design tailored financial solutions for cross - border e - commerce enterprises—covering credit lines, overseas risk management, and end - to - end support. We help break capital barriers and expand globally with stability.', |
| | | 'text-4': 'Changjiang International Trade Group', |
| | |
| | | 'text-13': 'Overseas Warehouse Service', |
| | | 'text-14': 'Manage localized SA warehouses with one - stop services (storage, dropshipping, returns).', |
| | | }, |
| | | |
| | | partners: { |
| | | 'text-1': 'Our Collaborators', |
| | | 'text-2': "We're Backed by Quality Institutions", |
| | |
| | | 'text-4': 'Domestic', |
| | | 'text-5': 'International', |
| | | }, |
| | | blog: { |
| | | 'text-1': 'You Can Check Out Our Work', |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | { id: 2, name_loc: 'English', symbol: 'en-us' }, |
| | | // { id: 3, name_loc: 'ar', symbol: 'ar' }, |
| | | ], |
| | | currentLang: '', |
| | | currentLang: 'zh-cn', |
| | | i18n: i18n.global, // 引入i18n实例 |
| | | } |
| | | }, |
| | | |
| | | // 生命周期 - 创建完成(可以访问当前this实例) |
| | | mounted() { |
| | | this.currentLang = this.i18n.locale || 'zh-cn'; |
| | | }, |
| | | |
| | | // 创建生命周期 |
| | | created() { |
| | | this.currentLang = this.i18n.locale || 'zh-cn'; |
| | | }, |
| | | |
| | | // 方法 |
| | |
| | | ///// 切换语言 ///// |
| | | changeLanguage(newLang) { |
| | | this.i18n.locale = newLang; |
| | | this.i18n.currentLocale = newLang; |
| | | // this.i18n.currentLocale = newLang; |
| | | this.currentLocale = newLang; |
| | | localStorage.setItem('changjiang-park-lang', newLang); |
| | | window.location.reload(); |
| | | }, |
| | | } |
| | | } |