作者 郭文星

123

正在显示 36 个修改的文件 包含 2341 行增加37 行删除
  1 +{"files":["public\\assets\\addons\\summernote\\css\\summernote.css","public\\assets\\addons\\summernote\\css\\summernote.min.css","public\\assets\\addons\\summernote\\font\\summernote.eot","public\\assets\\addons\\summernote\\font\\summernote.ttf","public\\assets\\addons\\summernote\\font\\summernote.woff","public\\assets\\addons\\summernote\\font\\summernote.woff2","public\\assets\\addons\\summernote\\js\\summernote.js","public\\assets\\addons\\summernote\\js\\summernote.min.js","public\\assets\\addons\\summernote\\lang\\summernote-zh-CN.js","public\\assets\\addons\\summernote\\lang\\summernote-zh-CN.min.js","public\\assets\\addons\\summernote\\lang\\summernote-zh-TW.js","public\\assets\\addons\\summernote\\lang\\summernote-zh-TW.min.js"],"license":"regular","licenseto":"15629","licensekey":"NLIO6tYrKG5hiusp kghh0S6zlU76Hs9rIMiuQd3tjV8bSiqblDYiCf\/c5Bc=","domains":["netcar.com"],"licensecodes":[],"validations":["9c3b042fdd8c2e4e21e4da30dcc79ba1"]}
  1 +<?php
  2 +
  3 +namespace addons\summernote;
  4 +
  5 +use think\Addons;
  6 +
  7 +/**
  8 + * Summernote富文本编辑器
  9 + */
  10 +class Summernote extends Addons
  11 +{
  12 +
  13 + /**
  14 + * 插件安装方法
  15 + * @return bool
  16 + */
  17 + public function install()
  18 + {
  19 + return true;
  20 + }
  21 +
  22 + /**
  23 + * 插件卸载方法
  24 + * @return bool
  25 + */
  26 + public function uninstall()
  27 + {
  28 + return true;
  29 + }
  30 +
  31 + /**
  32 + * @param $params
  33 + */
  34 + public function configInit(&$params)
  35 + {
  36 + $config = $this->getConfig();
  37 + $params['summernote'] = ['classname' => $config['classname'] ?? '.editor'];
  38 + }
  39 +
  40 +}
  1 +require.config({
  2 + paths: {
  3 + 'summernote': '../addons/summernote/lang/summernote-zh-CN.min'
  4 + },
  5 + shim: {
  6 + 'summernote': ['../addons/summernote/js/summernote.min', 'css!../addons/summernote/css/summernote.min.css'],
  7 + }
  8 +});
  9 +require(['form', 'upload'], function (Form, Upload) {
  10 + var _bindevent = Form.events.bindevent;
  11 + Form.events.bindevent = function (form) {
  12 + _bindevent.apply(this, [form]);
  13 + try {
  14 + //绑定summernote事件
  15 + if ($(Config.summernote.classname || '.editor', form).length > 0) {
  16 + var selectUrl = typeof Config !== 'undefined' && Config.modulename === 'index' ? 'user/attachment' : 'general/attachment/select';
  17 + require(['summernote'], function () {
  18 + var imageButton = function (context) {
  19 + var ui = $.summernote.ui;
  20 + var button = ui.button({
  21 + contents: '<i class="fa fa-file-image-o"/>',
  22 + tooltip: __('Choose'),
  23 + click: function () {
  24 + parent.Fast.api.open(selectUrl + "?element_id=&multiple=true&mimetype=image/", __('Choose'), {
  25 + callback: function (data) {
  26 + var urlArr = data.url.split(/\,/);
  27 + $.each(urlArr, function () {
  28 + var url = Fast.api.cdnurl(this, true);
  29 + context.invoke('editor.insertImage', url);
  30 + });
  31 + }
  32 + });
  33 + return false;
  34 + }
  35 + });
  36 + return button.render();
  37 + };
  38 + var attachmentButton = function (context) {
  39 + var ui = $.summernote.ui;
  40 + var button = ui.button({
  41 + contents: '<i class="fa fa-file"/>',
  42 + tooltip: __('Choose'),
  43 + click: function () {
  44 + parent.Fast.api.open(selectUrl + "?element_id=&multiple=true&mimetype=*", __('Choose'), {
  45 + callback: function (data) {
  46 + var urlArr = data.url.split(/\,/);
  47 + $.each(urlArr, function () {
  48 + var url = Fast.api.cdnurl(this, true);
  49 + var node = $("<a href='" + url + "'>" + url + "</a>");
  50 + context.invoke('insertNode', node[0]);
  51 + });
  52 + }
  53 + });
  54 + return false;
  55 + }
  56 + });
  57 + return button.render();
  58 + };
  59 +
  60 + $(Config.summernote.classname || '.editor', form).each(function () {
  61 + $(this).summernote($.extend(true, {}, {
  62 + // height: 250,
  63 + minHeight: 250,
  64 + lang: 'zh-CN',
  65 + fontNames: [
  66 + 'Arial', 'Arial Black', 'Serif', 'Sans', 'Courier',
  67 + 'Courier New', 'Comic Sans MS', 'Helvetica', 'Impact', 'Lucida Grande',
  68 + "Open Sans", "Hiragino Sans GB", "Microsoft YaHei",
  69 + '微软雅黑', '宋体', '黑体', '仿宋', '楷体', '幼圆',
  70 + ],
  71 + fontNamesIgnoreCheck: [
  72 + "Open Sans", "Microsoft YaHei",
  73 + '微软雅黑', '宋体', '黑体', '仿宋', '楷体', '幼圆'
  74 + ],
  75 + toolbar: [
  76 + ['style', ['style', 'undo', 'redo']],
  77 + ['font', ['bold', 'underline', 'strikethrough', 'clear']],
  78 + ['fontname', ['color', 'fontname', 'fontsize']],
  79 + ['para', ['ul', 'ol', 'paragraph', 'height']],
  80 + ['table', ['table', 'hr']],
  81 + ['insert', ['link', 'picture', 'video']],
  82 + ['select', ['image', 'attachment']],
  83 + ['view', ['fullscreen', 'codeview', 'help']],
  84 + ],
  85 + buttons: {
  86 + image: imageButton,
  87 + attachment: attachmentButton,
  88 + },
  89 + dialogsInBody: true,
  90 + followingToolbar: false,
  91 + callbacks: {
  92 + onChange: function (contents) {
  93 + $(this).val(contents);
  94 + $(this).trigger('change');
  95 + },
  96 + onInit: function () {
  97 + },
  98 + onImageUpload: function (files) {
  99 + var that = this;
  100 + //依次上传图片
  101 + for (var i = 0; i < files.length; i++) {
  102 + Upload.api.send(files[i], function (data) {
  103 + var url = Fast.api.cdnurl(data.url, true);
  104 + $(that).summernote("insertImage", url, 'filename');
  105 + });
  106 + }
  107 + }
  108 + }
  109 + }, $(this).data("summernote-options") || {}));
  110 + });
  111 + });
  112 + }
  113 + } catch (e) {
  114 +
  115 + }
  116 +
  117 + };
  118 +});
  1 +<?php
  2 +
  3 +return [
  4 + [
  5 + 'name' => 'classname',
  6 + 'title' => '渲染文本框元素',
  7 + 'type' => 'string',
  8 + 'content' => [],
  9 + 'value' => '.editor',
  10 + 'rule' => 'required',
  11 + 'msg' => '',
  12 + 'tip' => '用于对指定的元素渲染,一般情况下无需修改',
  13 + 'ok' => '',
  14 + 'extend' => '',
  15 + ],
  16 +];
  1 +<?php
  2 +
  3 +namespace addons\summernote\controller;
  4 +
  5 +use think\addons\Controller;
  6 +
  7 +class Index extends Controller
  8 +{
  9 +
  10 + public function index()
  11 + {
  12 + $this->error("当前插件暂无前台页面");
  13 + }
  14 +
  15 +}
  16 +
  1 +name = summernote
  2 +title = Summernote富文本编辑器
  3 +intro = 一款简单的富文本编辑器
  4 +author = FastAdmin
  5 +website = http://www.fastadmin.net
  6 +version = 1.1.1
  7 +url = /addons/summernote
  8 +state = 1
  9 +license = regular
  10 +licenseto = 15629
@@ -51,17 +51,19 @@ class Car extends Backend @@ -51,17 +51,19 @@ class Car extends Backend
51 list($where, $sort, $order, $offset, $limit) = $this->buildparams(); 51 list($where, $sort, $order, $offset, $limit) = $this->buildparams();
52 52
53 $list = $this->model 53 $list = $this->model
54 - ->with(['driver','route']) 54 + ->with(['route','driver','seat'])
55 ->where($where) 55 ->where($where)
56 ->order($sort, $order) 56 ->order($sort, $order)
57 ->paginate($limit); 57 ->paginate($limit);
58 58
59 foreach ($list as $row) { 59 foreach ($list as $row) {
60 - $row->visible(['id','car_model','license_plate','seat','colour','driver_license_img','driving_license_img','reservation_time','start_time','create_time']);  
61 - $row->visible(['driver']);  
62 - $row->getRelation('driver')->visible(['name']); 60 + $row->visible(['id','car_model','license_plate','colour','reservation_time','start_time','create_time']);
63 $row->visible(['route']); 61 $row->visible(['route']);
64 $row->getRelation('route')->visible(['name']); 62 $row->getRelation('route')->visible(['name']);
  63 + $row->visible(['driver']);
  64 + $row->getRelation('driver')->visible(['name']);
  65 + $row->visible(['seat']);
  66 + $row->getRelation('seat')->visible(['name']);
65 } 67 }
66 68
67 $result = array("total" => $list->total(), "rows" => $list->items()); 69 $result = array("total" => $list->total(), "rows" => $list->items());
  1 +<?php
  2 +
  3 +namespace app\admin\controller;
  4 +
  5 +use app\common\controller\Backend;
  6 +use think\Db;
  7 +use think\exception\DbException;
  8 +use think\exception\PDOException;
  9 +use think\exception\ValidateException;
  10 +
  11 +/**
  12 + * 座位管理
  13 + *
  14 + * @icon fa fa-circle-o
  15 + */
  16 +class Seat extends Backend
  17 +{
  18 +
  19 + /**
  20 + * Seat模型对象
  21 + * @var \app\admin\model\Seat
  22 + */
  23 + protected $model = null;
  24 +
  25 + public function _initialize()
  26 + {
  27 + parent::_initialize();
  28 + $this->model = new \app\admin\model\Seat;
  29 + $this->view->assign("seatNumberList", $this->model->getSeatNumberList());
  30 + }
  31 +
  32 +
  33 +
  34 + /**
  35 + * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
  36 + * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
  37 + * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
  38 + */
  39 + /**
  40 + * 添加
  41 + *
  42 + * @return string
  43 + * @throws \think\Exception
  44 + */
  45 + public function add()
  46 + {
  47 + if (false === $this->request->isPost()) {
  48 + return $this->view->fetch();
  49 + }
  50 + $params = $this->request->post('row/a');
  51 + $params['seat_name'] = array_filter($params['seat_name'], function($value) {
  52 + return !is_null($value) && $value !== '';
  53 + });
  54 + $params['seat_price'] = array_filter($params['seat_price'], function($value) {
  55 + return !is_null($value) && $value !== '';
  56 + });
  57 +
  58 + if(count($params['seat_name'])!=count($params['seat_price'])){
  59 + $this->error("请填写完成");
  60 +
  61 + }
  62 + $params['seat']=[];
  63 + foreach ($params['seat_name'] as $k=>$v){
  64 + $params['seat'][$k]=["seat_no"=>$params['seat_no'][$k],"seat_name"=>$params['seat_name'][$k],"seat_price"=>$params['seat_price'][$k]];
  65 + }
  66 + unset($params['seat_no']);
  67 + unset($params['seat_price']);
  68 + unset($params['seat_name']);
  69 + $params["seat"]=json_encode($params["seat"]);
  70 + if (empty($params)) {
  71 + $this->error(__('Parameter %s can not be empty', ''));
  72 + }
  73 + $params = $this->preExcludeFields($params);
  74 +
  75 + if ($this->dataLimit && $this->dataLimitFieldAutoFill) {
  76 + $params[$this->dataLimitField] = $this->auth->id;
  77 + }
  78 + $result = false;
  79 + Db::startTrans();
  80 + try {
  81 + //是否采用模型验证
  82 + if ($this->modelValidate) {
  83 + $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
  84 + $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate;
  85 + $this->model->validateFailException()->validate($validate);
  86 + }
  87 + $result = $this->model->allowField(true)->save($params);
  88 + Db::commit();
  89 + } catch (ValidateException|PDOException|Exception $e) {
  90 + Db::rollback();
  91 + $this->error($e->getMessage());
  92 + }
  93 + if ($result === false) {
  94 + $this->error(__('No rows were inserted'));
  95 + }
  96 + $this->success();
  97 + }
  98 + /**
  99 + * 编辑
  100 + *
  101 + * @param $ids
  102 + * @return string
  103 + * @throws DbException
  104 + * @throws \think\Exception
  105 + */
  106 + public function edit($ids = null)
  107 + {
  108 + $row = $this->model->get($ids);
  109 + if (!$row) {
  110 + $this->error(__('No Results were found'));
  111 + }
  112 + $adminIds = $this->getDataLimitAdminIds();
  113 + if (is_array($adminIds) && !in_array($row[$this->dataLimitField], $adminIds)) {
  114 + $this->error(__('You have no permission'));
  115 + }
  116 + if (false === $this->request->isPost()) {
  117 + $res=$row->toArray();
  118 + $seat=$res['seat'];
  119 + $seat=json_decode($seat,true);
  120 + $this->view->assign('row', $row);
  121 + $this->view->assign('seat', $seat);
  122 + return $this->view->fetch();
  123 + }
  124 + $params = $this->request->post('row/a');
  125 + print_r($params);return;
  126 + if (empty($params)) {
  127 + $this->error(__('Parameter %s can not be empty', ''));
  128 + }
  129 + $params = $this->preExcludeFields($params);
  130 + $result = false;
  131 + Db::startTrans();
  132 + try {
  133 + //是否采用模型验证
  134 + if ($this->modelValidate) {
  135 + $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
  136 + $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;
  137 + $row->validateFailException()->validate($validate);
  138 + }
  139 + $result = $row->allowField(true)->save($params);
  140 + Db::commit();
  141 + } catch (ValidateException|PDOException|Exception $e) {
  142 + Db::rollback();
  143 + $this->error($e->getMessage());
  144 + }
  145 + if (false === $result) {
  146 + $this->error(__('No rows were updated'));
  147 + }
  148 + $this->success();
  149 + }
  150 +}
@@ -8,11 +8,11 @@ return [ @@ -8,11 +8,11 @@ return [
8 'Driver_id' => '司机', 8 'Driver_id' => '司机',
9 'Seat' => '座位数', 9 'Seat' => '座位数',
10 'Colour' => '车辆颜色', 10 'Colour' => '车辆颜色',
11 - 'Driver_license_img' => '驾照',  
12 - 'Driving_license_img' => '行驶证', 11 + 'Seat_id' => '座位价格',
13 'Reservation_time' => '预约时间', 12 'Reservation_time' => '预约时间',
14 'Start_time' => '发车时间', 13 'Start_time' => '发车时间',
15 'Create_time' => '创建时间', 14 'Create_time' => '创建时间',
  15 + 'Route.name' => '线路名称',
16 'Driver.name' => '司机名称', 16 'Driver.name' => '司机名称',
17 - 'Route.name' => '线路名称' 17 + 'Seat.name' => '座位名称'
18 ]; 18 ];
  1 +<?php
  2 +
  3 +return [
  4 + 'Id' => 'ID',
  5 + 'Name' => '座位名称',
  6 + 'Seat_number' => '座位数量',
  7 + 'Seat_number 0' => '五座',
  8 + 'Seat_number 1' => '七座',
  9 + 'Seat' => '座位详情'
  10 +];
@@ -71,14 +71,20 @@ class Car extends Model @@ -71,14 +71,20 @@ class Car extends Model
71 } 71 }
72 72
73 73
  74 + public function route()
  75 + {
  76 + return $this->belongsTo('Route', 'route_id', 'id', [], 'LEFT')->setEagerlyType(0);
  77 + }
  78 +
  79 +
74 public function driver() 80 public function driver()
75 { 81 {
76 return $this->belongsTo('Driver', 'driver_id', 'id', [], 'LEFT')->setEagerlyType(0); 82 return $this->belongsTo('Driver', 'driver_id', 'id', [], 'LEFT')->setEagerlyType(0);
77 } 83 }
78 84
79 85
80 - public function route() 86 + public function seat()
81 { 87 {
82 - return $this->belongsTo('Route', 'route_id', 'id', [], 'LEFT')->setEagerlyType(0); 88 + return $this->belongsTo('Seat', 'seat_id', 'id', [], 'LEFT')->setEagerlyType(0);
83 } 89 }
84 } 90 }
  1 +<?php
  2 +
  3 +namespace app\admin\model;
  4 +
  5 +use think\Model;
  6 +
  7 +
  8 +class Seat extends Model
  9 +{
  10 +
  11 +
  12 +
  13 +
  14 +
  15 + // 表名
  16 + protected $name = 'seat';
  17 +
  18 + // 自动写入时间戳字段
  19 + protected $autoWriteTimestamp = false;
  20 +
  21 + // 定义时间戳字段名
  22 + protected $createTime = false;
  23 + protected $updateTime = false;
  24 + protected $deleteTime = false;
  25 +
  26 + // 追加属性
  27 + protected $append = [
  28 + 'seat_number_text'
  29 + ];
  30 +
  31 +
  32 +
  33 + public function getSeatNumberList()
  34 + {
  35 + return ['0' => __('Seat_number 0'), '1' => __('Seat_number 1')];
  36 + }
  37 +
  38 +
  39 + public function getSeatNumberTextAttr($value, $data)
  40 + {
  41 + $value = $value ? $value : (isset($data['seat_number']) ? $data['seat_number'] : '');
  42 + $list = $this->getSeatNumberList();
  43 + return isset($list[$value]) ? $list[$value] : '';
  44 + }
  45 +
  46 +
  47 +
  48 +
  49 +}
  1 +<?php
  2 +
  3 +namespace app\admin\validate;
  4 +
  5 +use think\Validate;
  6 +
  7 +class Seat extends Validate
  8 +{
  9 + /**
  10 + * 验证规则
  11 + */
  12 + protected $rule = [
  13 + ];
  14 + /**
  15 + * 提示消息
  16 + */
  17 + protected $message = [
  18 + ];
  19 + /**
  20 + * 验证场景
  21 + */
  22 + protected $scene = [
  23 + 'add' => [],
  24 + 'edit' => [],
  25 + ];
  26 +
  27 +}
@@ -37,27 +37,21 @@ @@ -37,27 +37,21 @@
37 </div> 37 </div>
38 </div> 38 </div>
39 <div class="form-group"> 39 <div class="form-group">
40 - <label class="control-label col-xs-12 col-sm-2">{:__('Driver_license_img')}:</label> 40 + <label class="control-label col-xs-12 col-sm-2">{:__('Seat_id')}:</label>
41 <div class="col-xs-12 col-sm-8"> 41 <div class="col-xs-12 col-sm-8">
42 - <input id="c-driver_license_img" class="form-control" name="row[driver_license_img]" type="text">  
43 - </div>  
44 - </div>  
45 - <div class="form-group">  
46 - <label class="control-label col-xs-12 col-sm-2">{:__('Driving_license_img')}:</label>  
47 - <div class="col-xs-12 col-sm-8">  
48 - <input id="c-driving_license_img" class="form-control" name="row[driving_license_img]" type="text"> 42 + <input id="c-seat_id" data-rule="required" data-source="seat/index" class="form-control selectpage" name="row[seat_id]" type="text" value="">
49 </div> 43 </div>
50 </div> 44 </div>
51 <div class="form-group"> 45 <div class="form-group">
52 <label class="control-label col-xs-12 col-sm-2">{:__('Reservation_time')}:</label> 46 <label class="control-label col-xs-12 col-sm-2">{:__('Reservation_time')}:</label>
53 <div class="col-xs-12 col-sm-8"> 47 <div class="col-xs-12 col-sm-8">
54 - <input id="c-reservation_time" class="form-control datetimepicker" data-date-format=" HH:mm" data-use-current="true" name="row[reservation_time]" type="text" value="{:date('H:i')}"> 48 + <input id="c-reservation_time" class="form-control datetimepicker" data-date-format="HH:mm" data-use-current="true" name="row[reservation_time]" type="text" value="{:date('Y-m-d H:i:s')}">
55 </div> 49 </div>
56 </div> 50 </div>
57 <div class="form-group"> 51 <div class="form-group">
58 <label class="control-label col-xs-12 col-sm-2">{:__('Start_time')}:</label> 52 <label class="control-label col-xs-12 col-sm-2">{:__('Start_time')}:</label>
59 <div class="col-xs-12 col-sm-8"> 53 <div class="col-xs-12 col-sm-8">
60 - <input id="c-start_time" class="form-control datetimepicker" data-date-format=" HH:mm" data-use-current="true" name="row[start_time]" type="text" value="{:date('H:i')}"> 54 + <input id="c-start_time" class="form-control datetimepicker" data-date-format="HH:mm" data-use-current="true" name="row[start_time]" type="text" value="{:date('Y-m-d H:i:s')}">
61 </div> 55 </div>
62 </div> 56 </div>
63 <div class="form-group"> 57 <div class="form-group">
@@ -37,27 +37,21 @@ @@ -37,27 +37,21 @@
37 </div> 37 </div>
38 </div> 38 </div>
39 <div class="form-group"> 39 <div class="form-group">
40 - <label class="control-label col-xs-12 col-sm-2">{:__('Driver_license_img')}:</label> 40 + <label class="control-label col-xs-12 col-sm-2">{:__('Seat_id')}:</label>
41 <div class="col-xs-12 col-sm-8"> 41 <div class="col-xs-12 col-sm-8">
42 - <input id="c-driver_license_img" class="form-control" name="row[driver_license_img]" type="text" value="{$row.driver_license_img|htmlentities}">  
43 - </div>  
44 - </div>  
45 - <div class="form-group">  
46 - <label class="control-label col-xs-12 col-sm-2">{:__('Driving_license_img')}:</label>  
47 - <div class="col-xs-12 col-sm-8">  
48 - <input id="c-driving_license_img" class="form-control" name="row[driving_license_img]" type="text" value="{$row.driving_license_img|htmlentities}"> 42 + <input id="c-seat_id" data-rule="required" data-source="seat/index" class="form-control selectpage" name="row[seat_id]" type="text" value="{$row.seat_id|htmlentities}">
49 </div> 43 </div>
50 </div> 44 </div>
51 <div class="form-group"> 45 <div class="form-group">
52 <label class="control-label col-xs-12 col-sm-2">{:__('Reservation_time')}:</label> 46 <label class="control-label col-xs-12 col-sm-2">{:__('Reservation_time')}:</label>
53 <div class="col-xs-12 col-sm-8"> 47 <div class="col-xs-12 col-sm-8">
54 - <input id="c-reservation_time" class="form-control datetimepicker" data-date-format=" HH:mm" data-use-current="true" name="row[reservation_time]" type="text" value="{:$row.reservation_time?datetime($row.reservation_time):''}"> 48 + <input id="c-reservation_time" class="form-control datetimepicker" data-date-format="HH:mm" data-use-current="true" name="row[reservation_time]" type="text" value="{:$row.reservation_time?datetime($row.reservation_time):''}">
55 </div> 49 </div>
56 </div> 50 </div>
57 <div class="form-group"> 51 <div class="form-group">
58 <label class="control-label col-xs-12 col-sm-2">{:__('Start_time')}:</label> 52 <label class="control-label col-xs-12 col-sm-2">{:__('Start_time')}:</label>
59 <div class="col-xs-12 col-sm-8"> 53 <div class="col-xs-12 col-sm-8">
60 - <input id="c-start_time" class="form-control datetimepicker" data-date-format=" HH:mm" data-use-current="true" name="row[start_time]" type="text" value="{:$row.start_time?datetime($row.start_time):''}"> 54 + <input id="c-start_time" class="form-control datetimepicker" data-date-format="HH:mm" data-use-current="true" name="row[start_time]" type="text" value="{:$row.start_time?datetime($row.start_time):''}">
61 </div> 55 </div>
62 </div> 56 </div>
63 <div class="form-group"> 57 <div class="form-group">
  1 +<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
  2 +
  3 + <div class="form-group">
  4 + <label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
  5 + <div class="col-xs-12 col-sm-8">
  6 + <input id="c-name" class="form-control" name="row[name]" type="text">
  7 + </div>
  8 + </div>
  9 +
  10 + <div class="form-group" id="seat_number">
  11 + <label class="control-label col-xs-12 col-sm-2">{:__('Seat_number')}:</label>
  12 + <div class="col-xs-12 col-sm-8">
  13 + {:build_radios("row[seat_number]",["0"=>"五座","1"=>"七座"])}
  14 + </div>
  15 + </div>
  16 +
  17 + <div class="form-group">
  18 + <label class="control-label col-xs-12 col-sm-2">{:__('Seat')}:</label>
  19 + </div>
  20 + <div class="form-group">
  21 + <div class="col-xs-3 col-sm-12">
  22 + <label class="control-label col-xs-4 col-sm-2">座位名称:</label>
  23 + <div class="col-xs-3 col-sm-4">
  24 + <input id="c-seat_name" class="form-control" name="row[seat_name][]" type="text">
  25 + <input id="c-seat_no" style="display: none;" class="form-control" value="1" name="row[seat_no][]" type="text">
  26 + </div>
  27 + <label class="control-label col-xs-4 col-sm-1">价格:</label>
  28 + <div class="col-xs-3 col-sm-4">
  29 + <input id="c-seat_price" class="form-control" name="row[seat_price][]" type="text">
  30 + </div>
  31 + </div>
  32 + <div class="col-xs-3 col-sm-12">
  33 + <label class="control-label col-xs-4 col-sm-2">座位名称:</label>
  34 + <div class="col-xs-3 col-sm-4">
  35 + <input id="c-seat_name" class="form-control" name="row[seat_name][]" type="text">
  36 + <input id="c-seat_no" style="display: none;" class="form-control" value="2" name="row[seat_no][]" type="text">
  37 +
  38 + </div>
  39 + <label class="control-label col-xs-4 col-sm-1">价格:</label>
  40 + <div class="col-xs-3 col-sm-4">
  41 + <input id="c-seat_price" class="form-control" name="row[seat_price][]" type="text">
  42 + </div>
  43 + </div>
  44 + <div class="col-xs-3 col-sm-12">
  45 + <label class="control-label col-xs-4 col-sm-2">座位名称:</label>
  46 + <div class="col-xs-3 col-sm-4">
  47 + <input id="c-seat_name" class="form-control" name="row[seat_name][]" type="text">
  48 + <input id="c-seat_no" style="display: none;" class="form-control" value="3" name="row[seat_no][]" type="text">
  49 +
  50 + </div>
  51 + <label class="control-label col-xs-4 col-sm-1">价格:</label>
  52 + <div class="col-xs-3 col-sm-4">
  53 + <input id="c-seat_price" class="form-control" name="row[seat_price][]" type="text">
  54 + </div>
  55 + </div>
  56 + <div class="col-xs-3 col-sm-12">
  57 + <label class="control-label col-xs-4 col-sm-2">座位名称:</label>
  58 + <div class="col-xs-3 col-sm-4">
  59 + <input id="c-seat_name" class="form-control" name="row[seat_name][]" type="text">
  60 + <input id="c-seat_no" style="display: none;" class="form-control" value="4" name="row[seat_no][]" type="text">
  61 +
  62 + </div>
  63 + <label class="control-label col-xs-4 col-sm-1">价格:</label>
  64 + <div class="col-xs-3 col-sm-4">
  65 + <input id="c-seat_price" class="form-control" name="row[seat_price][]" type="text">
  66 + </div>
  67 + </div>
  68 +
  69 + <div class="col-xs-3 col-sm-12" hidden id="seat5">
  70 + <label class="control-label col-xs-4 col-sm-2">座位名称:</label>
  71 + <div class="col-xs-3 col-sm-4">
  72 + <input id="c-seat_name5" class="form-control" name="row[seat_name][]" type="text">
  73 + <input id="c-seat_no" style="display: none;" class="form-control" value="5" name="row[seat_no][]" type="text">
  74 +
  75 + </div>
  76 + <label class="control-label col-xs-4 col-sm-1">价格:</label>
  77 + <div class="col-xs-3 col-sm-4">
  78 + <input id="c-seat_price5" class="form-control" name="row[seat_price][]" type="text">
  79 + </div>
  80 + </div>
  81 + <div class="col-xs-3 col-sm-12" hidden id="seat6">
  82 + <label class="control-label col-xs-4 col-sm-2">座位名称:</label>
  83 + <div class="col-xs-3 col-sm-4">
  84 + <input id="c-seat_name6" class="form-control" name="row[seat_name][]" type="text">
  85 + <input id="c-seat_no" style="display: none;" class="form-control" value="6" name="row[seat_no][]" type="text">
  86 +
  87 + </div>
  88 + <label class="control-label col-xs-4 col-sm-1">价格:</label>
  89 + <div class="col-xs-3 col-sm-4">
  90 + <input id="c-seat_price6" class="form-control" name="row[seat_price][]" type="text">
  91 + </div>
  92 + </div>
  93 +
  94 +
  95 +
  96 +
  97 +
  98 +
  99 + </div>
  100 + <div class="form-group layer-footer">
  101 + <label class="control-label col-xs-12 col-sm-2"></label>
  102 + <div class="col-xs-12 col-sm-8">
  103 + <button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
  104 + </div>
  105 + </div>
  106 +</form>
  1 +<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
  2 +
  3 + <div class="form-group">
  4 + <label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
  5 + <div class="col-xs-12 col-sm-8">
  6 + <input id="c-name" class="form-control" name="row[name]" type="text" value="{$row.name|htmlentities}">
  7 + </div>
  8 + </div>
  9 + <div class="form-group" id="seat_number">
  10 + <label class="control-label col-xs-12 col-sm-2">{:__('Seat_number')}:</label>
  11 + <div class="col-xs-12 col-sm-8">
  12 + {:build_radios("row[seat_number]",["0"=>"五座","1"=>"七座"],$row['seat_number'])}
  13 + </div>
  14 + </div>
  15 + <div class="form-group">
  16 + <label class="control-label col-xs-12 col-sm-2">{:__('Seat')}:</label>
  17 +
  18 + </div>
  19 + <div class="form-group">
  20 + {volist name="seat" id="vo" }
  21 + <div class="col-xs-3 col-sm-12" id="seat{$vo.seat_no}">
  22 + <label class="control-label col-xs-4 col-sm-2">座位名称:</label>
  23 + <div class="col-xs-3 col-sm-4">
  24 + <input id="c-seat_name" class="form-control" value="{$vo.seat_name}" name="row[seat_name][]" type="text">
  25 + <input id="c-seat_no" style="display: none;" class="form-control" value="6" name="row[seat_no][]" type="text">
  26 +
  27 + </div>
  28 + <label class="control-label col-xs-4 col-sm-1">价格:</label>
  29 + <div class="col-xs-3 col-sm-4">
  30 + <input id="c-seat_price" class="form-control" value="{$vo.seat_price}" name="row[seat_price][]" type="text">
  31 + </div>
  32 + </div>
  33 + {/volist}
  34 +
  35 +
  36 + </div>
  37 + <div class="form-group layer-footer">
  38 + <label class="control-label col-xs-12 col-sm-2"></label>
  39 + <div class="col-xs-12 col-sm-8">
  40 + <button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
  41 + </div>
  42 + </div>
  43 +</form>
  1 +<div class="panel panel-default panel-intro">
  2 + {:build_heading()}
  3 +
  4 + <div class="panel-body">
  5 + <div id="myTabContent" class="tab-content">
  6 + <div class="tab-pane fade active in" id="one">
  7 + <div class="widget-body no-padding">
  8 + <div id="toolbar" class="toolbar">
  9 + <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
  10 + <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('seat/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
  11 + <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('seat/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
  12 + <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('seat/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
  13 +
  14 +
  15 +
  16 +
  17 +
  18 + </div>
  19 + <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
  20 + data-operate-edit="{:$auth->check('seat/edit')}"
  21 + data-operate-del="{:$auth->check('seat/del')}"
  22 + width="100%">
  23 + </table>
  24 + </div>
  25 + </div>
  26 +
  27 + </div>
  28 + </div>
  29 +</div>
@@ -576,4 +576,39 @@ class Car extends Base @@ -576,4 +576,39 @@ class Car extends Base
576 } 576 }
577 return $this->success("请求成功",$res); 577 return $this->success("请求成功",$res);
578 } 578 }
  579 +
  580 + /**
  581 + * 获取座位详情
  582 + * @return void
  583 + */
  584 + public function car_seat(){
  585 + $car_id=$this->request->param("car_id");
  586 + //查询车辆信息
  587 + $car=Db::name("car")->where("id",$car_id)->find();
  588 + $seat=Db::name("seat")->where("id",$car['seat_id'])->find();
  589 + $seat['seat']=json_decode($seat['seat'],true);
  590 + //查询当日订单
  591 + $statr_time=strtotime(date("Y-m-d",time()));
  592 + $end_time=$statr_time+86400;
  593 + $order=Db::name("order")
  594 + ->where("create_time",">",$statr_time)
  595 + ->where("create_time","<",$end_time)
  596 + ->where('car_id',$car_id)
  597 + ->field("seat_no")
  598 + ->select();
  599 + foreach ($order as $k=>$v){
  600 + $seat_no[$k]=$order[$k]["seat_no"];
  601 + }
  602 +
  603 + foreach ($seat['seat'] as $k=>$v){
  604 + if(in_array($seat['seat'][$k]['seat_no'],$seat_no)){
  605 + $seat['seat'][$k]['is_sale']=1;
  606 + }else{
  607 + $seat['seat'][$k]['is_sale']=0;
  608 +
  609 +
  610 + }
  611 + }
  612 + return $this->success("请求成功",$seat);
  613 + }
579 } 614 }
@@ -12,6 +12,21 @@ return [ @@ -12,6 +12,21 @@ return [
12 'action_begin' => [ 12 'action_begin' => [
13 'epay', 13 'epay',
14 ], 14 ],
  15 + 'upload_config_init' => [
  16 + 'qiniu',
  17 + ],
  18 + 'upload_delete' => [
  19 + 'qiniu',
  20 + ],
  21 + 'upload_token' => [
  22 + 'qiniu',
  23 + ],
  24 + 'app_init' => [
  25 + 'qiniu',
  26 + ],
  27 + 'config_init' => [
  28 + 'summernote',
  29 + ],
15 ], 30 ],
16 'route' => [], 31 'route' => [],
17 'priority' => [], 32 'priority' => [],
@@ -28,7 +28,6 @@ return array ( @@ -28,7 +28,6 @@ return array (
28 'user' => '会员配置', 28 'user' => '会员配置',
29 'example' => '示例分组', 29 'example' => '示例分组',
30 'wxxcx' => '小程序配置', 30 'wxxcx' => '小程序配置',
31 - 'authentication_statement' => '车主认证声明',  
32 ), 31 ),
33 'mail_type' => '1', 32 'mail_type' => '1',
34 'mail_smtp_host' => 'smtp.qq.com', 33 'mail_smtp_host' => 'smtp.qq.com',
@@ -47,4 +46,5 @@ return array ( @@ -47,4 +46,5 @@ return array (
47 'wxxcx_AppSecret' => 'baf744d21875280a5e98611f66adaf91', 46 'wxxcx_AppSecret' => 'baf744d21875280a5e98611f66adaf91',
48 'content' => '111111111111111111111222222222', 47 'content' => '111111111111111111111222222222',
49 'alarm_phone' => '13528348347', 48 'alarm_phone' => '13528348347',
  49 + 'riding_instructions' => '',
50 ); 50 );
  1 +/*!
  2 + *
  3 + * Super simple WYSIWYG editor v0.8.20
  4 + * https://summernote.org
  5 + *
  6 + *
  7 + * Copyright 2013- Alan Hong and contributors
  8 + * Summernote may be freely distributed under the MIT license.
  9 + *
  10 + * Date: 2021-10-14T21:15Z
  11 + *
  12 + */
  13 +@font-face {
  14 + font-family: "summernote";
  15 + font-style: normal;
  16 + font-weight: 400;
  17 + font-display: auto;
  18 + src: url("../font/summernote.eot?#iefix") format("embedded-opentype"), url("../font/summernote.woff2") format("woff2"), url("../font/summernote.woff") format("woff"), url("../font/summernote.ttf") format("truetype");
  19 +}
  20 +
  21 +[class^=note-icon]:before,
  22 +[class*=" note-icon"]:before {
  23 + display: inline-block;
  24 + font-family: "summernote";
  25 + font-style: normal;
  26 + font-size: inherit;
  27 + text-decoration: inherit;
  28 + text-rendering: auto;
  29 + text-transform: none;
  30 + vertical-align: middle;
  31 + -moz-osx-font-smoothing: grayscale;
  32 + -webkit-font-smoothing: antialiased;
  33 + speak: none;
  34 +}
  35 +
  36 +.note-icon-fw {
  37 + text-align: center;
  38 + width: 1.25em;
  39 +}
  40 +
  41 +.note-icon-border {
  42 + border: solid 0.08em #eee;
  43 + border-radius: 0.1em;
  44 + padding: 0.2em 0.25em 0.15em;
  45 +}
  46 +
  47 +.note-icon-pull-left {
  48 + float: left;
  49 +}
  50 +
  51 +.note-icon-pull-right {
  52 + float: right;
  53 +}
  54 +
  55 +.note-icon.note-icon-pull-left {
  56 + margin-right: 0.3em;
  57 +}
  58 +
  59 +.note-icon.note-icon-pull-right {
  60 + margin-left: 0.3em;
  61 +}
  62 +
  63 +.note-icon-align::before {
  64 + content: "\ea01";
  65 +}
  66 +
  67 +.note-icon-align-center::before {
  68 + content: "\ea02";
  69 +}
  70 +
  71 +.note-icon-align-indent::before {
  72 + content: "\ea03";
  73 +}
  74 +
  75 +.note-icon-align-justify::before {
  76 + content: "\ea04";
  77 +}
  78 +
  79 +.note-icon-align-left::before {
  80 + content: "\ea05";
  81 +}
  82 +
  83 +.note-icon-align-outdent::before {
  84 + content: "\ea06";
  85 +}
  86 +
  87 +.note-icon-align-right::before {
  88 + content: "\ea07";
  89 +}
  90 +
  91 +.note-icon-arrow-circle-down::before {
  92 + content: "\ea08";
  93 +}
  94 +
  95 +.note-icon-arrow-circle-left::before {
  96 + content: "\ea09";
  97 +}
  98 +
  99 +.note-icon-arrow-circle-right::before {
  100 + content: "\ea0a";
  101 +}
  102 +
  103 +.note-icon-arrow-circle-up::before {
  104 + content: "\ea0b";
  105 +}
  106 +
  107 +.note-icon-arrows-alt::before {
  108 + content: "\ea0c";
  109 +}
  110 +
  111 +.note-icon-arrows-h::before {
  112 + content: "\ea0d";
  113 +}
  114 +
  115 +.note-icon-arrows-v::before {
  116 + content: "\ea0e";
  117 +}
  118 +
  119 +.note-icon-bold::before {
  120 + content: "\ea0f";
  121 +}
  122 +
  123 +.note-icon-caret::before {
  124 + content: "\ea10";
  125 +}
  126 +
  127 +.note-icon-chain-broken::before {
  128 + content: "\ea11";
  129 +}
  130 +
  131 +.note-icon-circle::before {
  132 + content: "\ea12";
  133 +}
  134 +
  135 +.note-icon-close::before {
  136 + content: "\ea13";
  137 +}
  138 +
  139 +.note-icon-code::before {
  140 + content: "\ea14";
  141 +}
  142 +
  143 +.note-icon-col-after::before {
  144 + content: "\ea15";
  145 +}
  146 +
  147 +.note-icon-col-before::before {
  148 + content: "\ea16";
  149 +}
  150 +
  151 +.note-icon-col-remove::before {
  152 + content: "\ea17";
  153 +}
  154 +
  155 +.note-icon-eraser::before {
  156 + content: "\ea18";
  157 +}
  158 +
  159 +.note-icon-float-left::before {
  160 + content: "\ea19";
  161 +}
  162 +
  163 +.note-icon-float-none::before {
  164 + content: "\ea1a";
  165 +}
  166 +
  167 +.note-icon-float-right::before {
  168 + content: "\ea1b";
  169 +}
  170 +
  171 +.note-icon-font::before {
  172 + content: "\ea1c";
  173 +}
  174 +
  175 +.note-icon-frame::before {
  176 + content: "\ea1d";
  177 +}
  178 +
  179 +.note-icon-italic::before {
  180 + content: "\ea1e";
  181 +}
  182 +
  183 +.note-icon-link::before {
  184 + content: "\ea1f";
  185 +}
  186 +
  187 +.note-icon-magic::before {
  188 + content: "\ea20";
  189 +}
  190 +
  191 +.note-icon-menu-check::before {
  192 + content: "\ea21";
  193 +}
  194 +
  195 +.note-icon-minus::before {
  196 + content: "\ea22";
  197 +}
  198 +
  199 +.note-icon-orderedlist::before {
  200 + content: "\ea23";
  201 +}
  202 +
  203 +.note-icon-pencil::before {
  204 + content: "\ea24";
  205 +}
  206 +
  207 +.note-icon-picture::before {
  208 + content: "\ea25";
  209 +}
  210 +
  211 +.note-icon-question::before {
  212 + content: "\ea26";
  213 +}
  214 +
  215 +.note-icon-redo::before {
  216 + content: "\ea27";
  217 +}
  218 +
  219 +.note-icon-rollback::before {
  220 + content: "\ea28";
  221 +}
  222 +
  223 +.note-icon-row-above::before {
  224 + content: "\ea29";
  225 +}
  226 +
  227 +.note-icon-row-below::before {
  228 + content: "\ea2a";
  229 +}
  230 +
  231 +.note-icon-row-remove::before {
  232 + content: "\ea2b";
  233 +}
  234 +
  235 +.note-icon-special-character::before {
  236 + content: "\ea2c";
  237 +}
  238 +
  239 +.note-icon-square::before {
  240 + content: "\ea2d";
  241 +}
  242 +
  243 +.note-icon-strikethrough::before {
  244 + content: "\ea2e";
  245 +}
  246 +
  247 +.note-icon-subscript::before {
  248 + content: "\ea2f";
  249 +}
  250 +
  251 +.note-icon-summernote::before {
  252 + content: "\ea30";
  253 +}
  254 +
  255 +.note-icon-superscript::before {
  256 + content: "\ea31";
  257 +}
  258 +
  259 +.note-icon-table::before {
  260 + content: "\ea32";
  261 +}
  262 +
  263 +.note-icon-text-height::before {
  264 + content: "\ea33";
  265 +}
  266 +
  267 +.note-icon-trash::before {
  268 + content: "\ea34";
  269 +}
  270 +
  271 +.note-icon-underline::before {
  272 + content: "\ea35";
  273 +}
  274 +
  275 +.note-icon-undo::before {
  276 + content: "\ea36";
  277 +}
  278 +
  279 +.note-icon-unorderedlist::before {
  280 + content: "\ea37";
  281 +}
  282 +
  283 +.note-icon-video::before {
  284 + content: "\ea38";
  285 +}
  286 +
  287 +/* Theme Variables
  288 + ------------------------------------------ */
  289 +/* Layout
  290 + ------------------------------------------ */
  291 +.note-editor {
  292 + position: relative;
  293 +}
  294 +
  295 +.note-editor .note-dropzone {
  296 + position: absolute;
  297 + display: none;
  298 + z-index: 100;
  299 + color: lightskyblue;
  300 + background-color: #fff;
  301 + opacity: 0.95;
  302 +}
  303 +
  304 +.note-editor .note-dropzone .note-dropzone-message {
  305 + display: table-cell;
  306 + vertical-align: middle;
  307 + text-align: center;
  308 + font-size: 28px;
  309 + font-weight: 700;
  310 +}
  311 +
  312 +.note-editor .note-dropzone.hover {
  313 + color: #098ddf;
  314 +}
  315 +
  316 +.note-editor.dragover .note-dropzone {
  317 + display: table;
  318 +}
  319 +
  320 +.note-editor .note-editing-area {
  321 + position: relative;
  322 +}
  323 +
  324 +.note-editor .note-editing-area .note-editable {
  325 + outline: none;
  326 +}
  327 +
  328 +.note-editor .note-editing-area .note-editable sup {
  329 + vertical-align: super;
  330 +}
  331 +
  332 +.note-editor .note-editing-area .note-editable sub {
  333 + vertical-align: sub;
  334 +}
  335 +
  336 +.note-editor .note-editing-area .note-editable img.note-float-left {
  337 + margin-right: 10px;
  338 +}
  339 +
  340 +.note-editor .note-editing-area .note-editable img.note-float-right {
  341 + margin-left: 10px;
  342 +}
  343 +
  344 +/* Frame mode layout
  345 + ------------------------------------------ */
  346 +.note-editor.note-frame,
  347 +.note-editor.note-airframe {
  348 + border: 1px solid #00000032;
  349 +}
  350 +
  351 +.note-editor.note-frame.codeview .note-editing-area .note-editable,
  352 +.note-editor.note-airframe.codeview .note-editing-area .note-editable {
  353 + display: none;
  354 +}
  355 +
  356 +.note-editor.note-frame.codeview .note-editing-area .note-codable,
  357 +.note-editor.note-airframe.codeview .note-editing-area .note-codable {
  358 + display: block;
  359 +}
  360 +
  361 +.note-editor.note-frame .note-editing-area,
  362 +.note-editor.note-airframe .note-editing-area {
  363 + overflow: hidden;
  364 +}
  365 +
  366 +.note-editor.note-frame .note-editing-area .note-editable,
  367 +.note-editor.note-airframe .note-editing-area .note-editable {
  368 + padding: 10px;
  369 + overflow: auto;
  370 + word-wrap: break-word;
  371 +}
  372 +
  373 +.note-editor.note-frame .note-editing-area .note-editable[contenteditable=false],
  374 +.note-editor.note-airframe .note-editing-area .note-editable[contenteditable=false] {
  375 + background-color: #8080801d;
  376 +}
  377 +
  378 +.note-editor.note-frame .note-editing-area .note-codable,
  379 +.note-editor.note-airframe .note-editing-area .note-codable {
  380 + display: none;
  381 + width: 100%;
  382 + padding: 10px;
  383 + border: none;
  384 + box-shadow: none;
  385 + font-family: Menlo, Monaco, monospace, sans-serif;
  386 + font-size: 14px;
  387 + color: #ccc;
  388 + background-color: #222;
  389 + resize: none;
  390 + outline: none;
  391 + -ms-box-sizing: border-box;
  392 + box-sizing: border-box;
  393 + border-radius: 0;
  394 + margin-bottom: 0;
  395 +}
  396 +
  397 +.note-editor.note-frame.fullscreen,
  398 +.note-editor.note-airframe.fullscreen {
  399 + position: fixed;
  400 + top: 0;
  401 + left: 0;
  402 + width: 100% !important;
  403 + z-index: 1050;
  404 +}
  405 +
  406 +.note-editor.note-frame.fullscreen .note-resizebar,
  407 +.note-editor.note-airframe.fullscreen .note-resizebar {
  408 + display: none;
  409 +}
  410 +
  411 +.note-editor.note-frame .note-status-output,
  412 +.note-editor.note-airframe .note-status-output {
  413 + display: block;
  414 + width: 100%;
  415 + font-size: 14px;
  416 + line-height: 1.42857143;
  417 + height: 20px;
  418 + margin-bottom: 0;
  419 + color: #000;
  420 + border: 0;
  421 + border-top: 1px solid #e2e2e2;
  422 +}
  423 +
  424 +.note-editor.note-frame .note-status-output:empty,
  425 +.note-editor.note-airframe .note-status-output:empty {
  426 + height: 0;
  427 + border-top: 0 solid transparent;
  428 +}
  429 +
  430 +.note-editor.note-frame .note-status-output .pull-right,
  431 +.note-editor.note-airframe .note-status-output .pull-right {
  432 + float: right !important;
  433 +}
  434 +
  435 +.note-editor.note-frame .note-status-output .text-muted,
  436 +.note-editor.note-airframe .note-status-output .text-muted {
  437 + color: #777;
  438 +}
  439 +
  440 +.note-editor.note-frame .note-status-output .text-primary,
  441 +.note-editor.note-airframe .note-status-output .text-primary {
  442 + color: #286090;
  443 +}
  444 +
  445 +.note-editor.note-frame .note-status-output .text-success,
  446 +.note-editor.note-airframe .note-status-output .text-success {
  447 + color: #3c763d;
  448 +}
  449 +
  450 +.note-editor.note-frame .note-status-output .text-info,
  451 +.note-editor.note-airframe .note-status-output .text-info {
  452 + color: #31708f;
  453 +}
  454 +
  455 +.note-editor.note-frame .note-status-output .text-warning,
  456 +.note-editor.note-airframe .note-status-output .text-warning {
  457 + color: #8a6d3b;
  458 +}
  459 +
  460 +.note-editor.note-frame .note-status-output .text-danger,
  461 +.note-editor.note-airframe .note-status-output .text-danger {
  462 + color: #a94442;
  463 +}
  464 +
  465 +.note-editor.note-frame .note-status-output .alert,
  466 +.note-editor.note-airframe .note-status-output .alert {
  467 + margin: -7px 0 0 0;
  468 + padding: 7px 10px 2px 10px;
  469 + border-radius: 0;
  470 + color: #000;
  471 + background-color: #f5f5f5;
  472 +}
  473 +
  474 +.note-editor.note-frame .note-status-output .alert .note-icon,
  475 +.note-editor.note-airframe .note-status-output .alert .note-icon {
  476 + margin-right: 5px;
  477 +}
  478 +
  479 +.note-editor.note-frame .note-status-output .alert-success,
  480 +.note-editor.note-airframe .note-status-output .alert-success {
  481 + color: #3c763d !important;
  482 + background-color: #dff0d8 !important;
  483 +}
  484 +
  485 +.note-editor.note-frame .note-status-output .alert-info,
  486 +.note-editor.note-airframe .note-status-output .alert-info {
  487 + color: #31708f !important;
  488 + background-color: #d9edf7 !important;
  489 +}
  490 +
  491 +.note-editor.note-frame .note-status-output .alert-warning,
  492 +.note-editor.note-airframe .note-status-output .alert-warning {
  493 + color: #8a6d3b !important;
  494 + background-color: #fcf8e3 !important;
  495 +}
  496 +
  497 +.note-editor.note-frame .note-status-output .alert-danger,
  498 +.note-editor.note-airframe .note-status-output .alert-danger {
  499 + color: #a94442 !important;
  500 + background-color: #f2dede !important;
  501 +}
  502 +
  503 +.note-editor.note-frame .note-statusbar,
  504 +.note-editor.note-airframe .note-statusbar {
  505 + background-color: #8080801d;
  506 + border-bottom-left-radius: 4px;
  507 + border-bottom-right-radius: 4px;
  508 + border-top: 1px solid #00000032;
  509 +}
  510 +
  511 +.note-editor.note-frame .note-statusbar .note-resizebar,
  512 +.note-editor.note-airframe .note-statusbar .note-resizebar {
  513 + padding-top: 1px;
  514 + height: 9px;
  515 + width: 100%;
  516 + cursor: ns-resize;
  517 +}
  518 +
  519 +.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar,
  520 +.note-editor.note-airframe .note-statusbar .note-resizebar .note-icon-bar {
  521 + width: 20px;
  522 + margin: 1px auto;
  523 + border-top: 1px solid #00000032;
  524 +}
  525 +
  526 +.note-editor.note-frame .note-statusbar.locked .note-resizebar,
  527 +.note-editor.note-airframe .note-statusbar.locked .note-resizebar {
  528 + cursor: default;
  529 +}
  530 +
  531 +.note-editor.note-frame .note-statusbar.locked .note-resizebar .note-icon-bar,
  532 +.note-editor.note-airframe .note-statusbar.locked .note-resizebar .note-icon-bar {
  533 + display: none;
  534 +}
  535 +
  536 +.note-editor.note-frame .note-placeholder,
  537 +.note-editor.note-airframe .note-placeholder {
  538 + padding: 10px;
  539 +}
  540 +
  541 +.note-editor.note-airframe {
  542 + border: 0;
  543 +}
  544 +
  545 +.note-editor.note-airframe .note-editing-area .note-editable {
  546 + padding: 0;
  547 +}
  548 +
  549 +/* Popover
  550 + ------------------------------------------ */
  551 +.note-popover.popover {
  552 + display: none;
  553 + max-width: none;
  554 +}
  555 +
  556 +.note-popover.popover .popover-content a {
  557 + display: inline-block;
  558 + max-width: 200px;
  559 + overflow: hidden;
  560 + text-overflow: ellipsis;
  561 + white-space: nowrap;
  562 + vertical-align: middle;
  563 +}
  564 +
  565 +.note-popover.popover .arrow {
  566 + left: 20px !important;
  567 +}
  568 +
  569 +/* Popover and Toolbar (Button container)
  570 + ------------------------------------------ */
  571 +.note-toolbar {
  572 + position: relative;
  573 +}
  574 +
  575 +.note-popover .popover-content, .note-editor .note-toolbar {
  576 + margin: 0;
  577 + padding: 0 0 5px 5px;
  578 +}
  579 +
  580 +.note-popover .popover-content > .note-btn-group, .note-editor .note-toolbar > .note-btn-group {
  581 + margin-top: 5px;
  582 + margin-left: 0;
  583 + margin-right: 5px;
  584 +}
  585 +
  586 +.note-popover .popover-content > .note-btn-group, .note-editor .note-toolbar > .note-btn-group .note-btn {
  587 + background-color: #fff;
  588 +}
  589 +
  590 +.note-popover .popover-content .note-btn-group .note-table, .note-editor .note-toolbar .note-btn-group .note-table {
  591 + min-width: 0;
  592 + padding: 5px;
  593 +}
  594 +
  595 +.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker, .note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker {
  596 + font-size: 18px;
  597 +}
  598 +
  599 +.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher, .note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher {
  600 + position: absolute !important;
  601 + z-index: 3;
  602 + width: 10em;
  603 + height: 10em;
  604 + cursor: pointer;
  605 +}
  606 +
  607 +.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted, .note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted {
  608 + position: relative !important;
  609 + z-index: 1;
  610 + width: 5em;
  611 + height: 5em;
  612 + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat;
  613 +}
  614 +
  615 +.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted, .note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted {
  616 + position: absolute !important;
  617 + z-index: 2;
  618 + width: 1em;
  619 + height: 1em;
  620 + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat;
  621 +}
  622 +
  623 +.note-popover .popover-content .note-style .dropdown-style blockquote, .note-popover .popover-content .note-style .dropdown-style pre, .note-editor .note-toolbar .note-style .dropdown-style blockquote, .note-editor .note-toolbar .note-style .dropdown-style pre {
  624 + margin: 0;
  625 + padding: 5px 10px;
  626 +}
  627 +
  628 +.note-popover .popover-content .note-style .dropdown-style h1, .note-popover .popover-content .note-style .dropdown-style h2, .note-popover .popover-content .note-style .dropdown-style h3, .note-popover .popover-content .note-style .dropdown-style h4, .note-popover .popover-content .note-style .dropdown-style h5, .note-popover .popover-content .note-style .dropdown-style h6, .note-popover .popover-content .note-style .dropdown-style p, .note-editor .note-toolbar .note-style .dropdown-style h1, .note-editor .note-toolbar .note-style .dropdown-style h2, .note-editor .note-toolbar .note-style .dropdown-style h3, .note-editor .note-toolbar .note-style .dropdown-style h4, .note-editor .note-toolbar .note-style .dropdown-style h5, .note-editor .note-toolbar .note-style .dropdown-style h6, .note-editor .note-toolbar .note-style .dropdown-style p {
  629 + margin: 0;
  630 + padding: 0;
  631 +}
  632 +
  633 +.note-popover .popover-content .note-color-all .note-dropdown-menu, .note-editor .note-toolbar .note-color-all .note-dropdown-menu {
  634 + min-width: 337px;
  635 +}
  636 +
  637 +.note-popover .popover-content .note-color .dropdown-toggle, .note-editor .note-toolbar .note-color .dropdown-toggle {
  638 + width: 20px;
  639 + padding-left: 5px;
  640 +}
  641 +
  642 +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette, .note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette {
  643 + display: inline-block;
  644 + margin: 0;
  645 + width: 160px;
  646 +}
  647 +
  648 +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette:first-child, .note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette:first-child {
  649 + margin: 0 5px;
  650 +}
  651 +
  652 +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-palette-title, .note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-palette-title {
  653 + font-size: 12px;
  654 + margin: 2px 7px;
  655 + text-align: center;
  656 + border-bottom: 1px solid #eee;
  657 +}
  658 +
  659 +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset,
  660 +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select, .note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset,
  661 +.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select {
  662 + font-size: 11px;
  663 + margin: 3px;
  664 + padding: 0 3px;
  665 + cursor: pointer;
  666 + width: 100%;
  667 + border-radius: 5px;
  668 +}
  669 +
  670 +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,
  671 +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select:hover, .note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,
  672 +.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select:hover {
  673 + background: #eee;
  674 +}
  675 +
  676 +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-row, .note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-row {
  677 + height: 20px;
  678 +}
  679 +
  680 +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select-btn, .note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select-btn {
  681 + display: none;
  682 +}
  683 +
  684 +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn, .note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn {
  685 + border: 1px solid #eee;
  686 +}
  687 +
  688 +.note-popover .popover-content .note-para .note-dropdown-menu, .note-editor .note-toolbar .note-para .note-dropdown-menu {
  689 + min-width: 228px;
  690 + padding: 5px;
  691 +}
  692 +
  693 +.note-popover .popover-content .note-para .note-dropdown-menu > div + div, .note-editor .note-toolbar .note-para .note-dropdown-menu > div + div {
  694 + margin-left: 5px;
  695 +}
  696 +
  697 +.note-popover .popover-content .note-dropdown-menu, .note-editor .note-toolbar .note-dropdown-menu {
  698 + min-width: 160px;
  699 +}
  700 +
  701 +.note-popover .popover-content .note-dropdown-menu.right, .note-editor .note-toolbar .note-dropdown-menu.right {
  702 + right: 0;
  703 + left: auto;
  704 +}
  705 +
  706 +.note-popover .popover-content .note-dropdown-menu.right::before, .note-editor .note-toolbar .note-dropdown-menu.right::before {
  707 + right: 9px;
  708 + left: auto !important;
  709 +}
  710 +
  711 +.note-popover .popover-content .note-dropdown-menu.right::after, .note-editor .note-toolbar .note-dropdown-menu.right::after {
  712 + right: 10px;
  713 + left: auto !important;
  714 +}
  715 +
  716 +.note-popover .popover-content .note-dropdown-menu.note-check a i, .note-editor .note-toolbar .note-dropdown-menu.note-check a i {
  717 + color: deepskyblue;
  718 + visibility: hidden;
  719 +}
  720 +
  721 +.note-popover .popover-content .note-dropdown-menu.note-check a.checked i, .note-editor .note-toolbar .note-dropdown-menu.note-check a.checked i {
  722 + visibility: visible;
  723 +}
  724 +
  725 +.note-popover .popover-content .note-fontsize-10, .note-editor .note-toolbar .note-fontsize-10 {
  726 + font-size: 10px;
  727 +}
  728 +
  729 +.note-popover .popover-content .note-color-palette, .note-editor .note-toolbar .note-color-palette {
  730 + line-height: 1;
  731 +}
  732 +
  733 +.note-popover .popover-content .note-color-palette div .note-color-btn, .note-editor .note-toolbar .note-color-palette div .note-color-btn {
  734 + width: 20px;
  735 + height: 20px;
  736 + padding: 0;
  737 + margin: 0;
  738 + border: 0;
  739 + border-radius: 0;
  740 +}
  741 +
  742 +.note-popover .popover-content .note-color-palette div .note-color-btn:hover, .note-editor .note-toolbar .note-color-palette div .note-color-btn:hover {
  743 + transform: scale(1.2);
  744 + transition: all 0.2s;
  745 +}
  746 +
  747 +/* Dialog
  748 + ------------------------------------------ */
  749 +.note-modal .modal-dialog {
  750 + outline: 0;
  751 + border-radius: 5px;
  752 + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  753 +}
  754 +
  755 +.note-modal .form-group {
  756 + margin-left: 0;
  757 + margin-right: 0;
  758 +}
  759 +
  760 +.note-modal .note-modal-form {
  761 + margin: 0;
  762 +}
  763 +
  764 +.note-modal .note-image-dialog .note-dropzone {
  765 + min-height: 100px;
  766 + font-size: 30px;
  767 + line-height: 4;
  768 + color: lightgray;
  769 + text-align: center;
  770 + border: 4px dashed lightgray;
  771 + margin-bottom: 10px;
  772 +}
  773 +
  774 +@-moz-document url-prefix() {
  775 + .note-modal .note-image-input {
  776 + height: auto;
  777 + }
  778 +}
  779 +
  780 +/* Placeholder
  781 + ------------------------------------------ */
  782 +.note-placeholder {
  783 + position: absolute;
  784 + display: none;
  785 + color: gray;
  786 +}
  787 +
  788 +/* Handle
  789 + ------------------------------------------ */
  790 +.note-handle .note-control-selection {
  791 + position: absolute;
  792 + display: none;
  793 + border: 1px solid #000;
  794 +}
  795 +
  796 +.note-handle .note-control-selection > div {
  797 + position: absolute;
  798 +}
  799 +
  800 +.note-handle .note-control-selection .note-control-selection-bg {
  801 + width: 100%;
  802 + height: 100%;
  803 + background-color: #000;
  804 + -webkit-opacity: 0.3;
  805 + -khtml-opacity: 0.3;
  806 + -moz-opacity: 0.3;
  807 + opacity: 0.3;
  808 + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=30);
  809 + filter: alpha(opacity=30);
  810 +}
  811 +
  812 +.note-handle .note-control-selection .note-control-handle, .note-handle .note-control-selection .note-control-sizing, .note-handle .note-control-selection .note-control-holder {
  813 + width: 7px;
  814 + height: 7px;
  815 + border: 1px solid #000;
  816 +}
  817 +
  818 +.note-handle .note-control-selection .note-control-sizing {
  819 + background-color: #000;
  820 +}
  821 +
  822 +.note-handle .note-control-selection .note-control-nw {
  823 + top: -5px;
  824 + left: -5px;
  825 + border-right: none;
  826 + border-bottom: none;
  827 +}
  828 +
  829 +.note-handle .note-control-selection .note-control-ne {
  830 + top: -5px;
  831 + right: -5px;
  832 + border-bottom: none;
  833 + border-left: none;
  834 +}
  835 +
  836 +.note-handle .note-control-selection .note-control-sw {
  837 + bottom: -5px;
  838 + left: -5px;
  839 + border-top: none;
  840 + border-right: none;
  841 +}
  842 +
  843 +.note-handle .note-control-selection .note-control-se {
  844 + right: -5px;
  845 + bottom: -5px;
  846 + cursor: se-resize;
  847 +}
  848 +
  849 +.note-handle .note-control-selection .note-control-se.note-control-holder {
  850 + cursor: default;
  851 + border-top: none;
  852 + border-left: none;
  853 +}
  854 +
  855 +.note-handle .note-control-selection .note-control-selection-info {
  856 + right: 0;
  857 + bottom: 0;
  858 + padding: 5px;
  859 + margin: 5px;
  860 + color: #fff;
  861 + background-color: #000;
  862 + font-size: 12px;
  863 + border-radius: 5px;
  864 + -webkit-opacity: 0.7;
  865 + -khtml-opacity: 0.7;
  866 + -moz-opacity: 0.7;
  867 + opacity: 0.7;
  868 + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=70);
  869 + filter: alpha(opacity=70);
  870 +}
  871 +
  872 +.note-hint-popover {
  873 + min-width: 100px;
  874 + padding: 2px;
  875 +}
  876 +
  877 +.note-hint-popover .popover-content {
  878 + padding: 3px;
  879 + max-height: 150px;
  880 + overflow: auto;
  881 +}
  882 +
  883 +.note-hint-popover .popover-content .note-hint-group .note-hint-item {
  884 + display: block !important;
  885 + padding: 3px;
  886 +}
  887 +
  888 +.note-hint-popover .popover-content .note-hint-group .note-hint-item.active, .note-hint-popover .popover-content .note-hint-group .note-hint-item:hover {
  889 + display: block;
  890 + clear: both;
  891 + font-weight: 400;
  892 + line-height: 1.4;
  893 + color: white;
  894 + white-space: nowrap;
  895 + text-decoration: none;
  896 + background-color: #428bca;
  897 + outline: 0;
  898 + cursor: pointer;
  899 +}
  900 +
  901 +/* Handle
  902 + ------------------------------------------ */
  903 +html .note-fullscreen-body, body .note-fullscreen-body {
  904 + overflow: hidden !important;
  905 +}
  906 +
  907 +body.darktheme .note-popover .popover-content > .note-btn-group, body.darktheme .note-editor .note-toolbar > .note-btn-group .note-btn {
  908 + background: #262626;
  909 + color: #ccc;
  910 +}
  1 +/*!
  2 + *
  3 + * Super simple WYSIWYG editor v0.8.20
  4 + * https://summernote.org
  5 + *
  6 + *
  7 + * Copyright 2013- Alan Hong and contributors
  8 + * Summernote may be freely distributed under the MIT license.
  9 + *
  10 + * Date: 2021-10-14T21:15Z
  11 + *
  12 + */@font-face{font-family:"summernote";font-style:normal;font-weight:400;font-display:auto;src:url("../font/summernote.eot?#iefix") format("embedded-opentype"),url("../font/summernote.woff2") format("woff2"),url("../font/summernote.woff") format("woff"),url("../font/summernote.ttf") format("truetype")}[class^=note-icon]:before,[class*=" note-icon"]:before{display:inline-block;font-family:"summernote";font-style:normal;font-size:inherit;text-decoration:inherit;text-rendering:auto;text-transform:none;vertical-align:middle;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;speak:none}.note-icon-fw{text-align:center;width:1.25em}.note-icon-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.note-icon-pull-left{float:left}.note-icon-pull-right{float:right}.note-icon.note-icon-pull-left{margin-right:.3em}.note-icon.note-icon-pull-right{margin-left:.3em}.note-icon-align::before{content:"\ea01"}.note-icon-align-center::before{content:"\ea02"}.note-icon-align-indent::before{content:"\ea03"}.note-icon-align-justify::before{content:"\ea04"}.note-icon-align-left::before{content:"\ea05"}.note-icon-align-outdent::before{content:"\ea06"}.note-icon-align-right::before{content:"\ea07"}.note-icon-arrow-circle-down::before{content:"\ea08"}.note-icon-arrow-circle-left::before{content:"\ea09"}.note-icon-arrow-circle-right::before{content:"\ea0a"}.note-icon-arrow-circle-up::before{content:"\ea0b"}.note-icon-arrows-alt::before{content:"\ea0c"}.note-icon-arrows-h::before{content:"\ea0d"}.note-icon-arrows-v::before{content:"\ea0e"}.note-icon-bold::before{content:"\ea0f"}.note-icon-caret::before{content:"\ea10"}.note-icon-chain-broken::before{content:"\ea11"}.note-icon-circle::before{content:"\ea12"}.note-icon-close::before{content:"\ea13"}.note-icon-code::before{content:"\ea14"}.note-icon-col-after::before{content:"\ea15"}.note-icon-col-before::before{content:"\ea16"}.note-icon-col-remove::before{content:"\ea17"}.note-icon-eraser::before{content:"\ea18"}.note-icon-float-left::before{content:"\ea19"}.note-icon-float-none::before{content:"\ea1a"}.note-icon-float-right::before{content:"\ea1b"}.note-icon-font::before{content:"\ea1c"}.note-icon-frame::before{content:"\ea1d"}.note-icon-italic::before{content:"\ea1e"}.note-icon-link::before{content:"\ea1f"}.note-icon-magic::before{content:"\ea20"}.note-icon-menu-check::before{content:"\ea21"}.note-icon-minus::before{content:"\ea22"}.note-icon-orderedlist::before{content:"\ea23"}.note-icon-pencil::before{content:"\ea24"}.note-icon-picture::before{content:"\ea25"}.note-icon-question::before{content:"\ea26"}.note-icon-redo::before{content:"\ea27"}.note-icon-rollback::before{content:"\ea28"}.note-icon-row-above::before{content:"\ea29"}.note-icon-row-below::before{content:"\ea2a"}.note-icon-row-remove::before{content:"\ea2b"}.note-icon-special-character::before{content:"\ea2c"}.note-icon-square::before{content:"\ea2d"}.note-icon-strikethrough::before{content:"\ea2e"}.note-icon-subscript::before{content:"\ea2f"}.note-icon-summernote::before{content:"\ea30"}.note-icon-superscript::before{content:"\ea31"}.note-icon-table::before{content:"\ea32"}.note-icon-text-height::before{content:"\ea33"}.note-icon-trash::before{content:"\ea34"}.note-icon-underline::before{content:"\ea35"}.note-icon-undo::before{content:"\ea36"}.note-icon-unorderedlist::before{content:"\ea37"}.note-icon-video::before{content:"\ea38"}.note-editor{position:relative}.note-editor .note-dropzone{position:absolute;display:none;z-index:100;color:lightskyblue;background-color:#fff;opacity:.95}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;vertical-align:middle;text-align:center;font-size:28px;font-weight:700}.note-editor .note-dropzone.hover{color:#098ddf}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-editing-area{position:relative}.note-editor .note-editing-area .note-editable{outline:0}.note-editor .note-editing-area .note-editable sup{vertical-align:super}.note-editor .note-editing-area .note-editable sub{vertical-align:sub}.note-editor .note-editing-area .note-editable img.note-float-left{margin-right:10px}.note-editor .note-editing-area .note-editable img.note-float-right{margin-left:10px}.note-editor.note-frame,.note-editor.note-airframe{border:1px solid #00000032}.note-editor.note-frame.codeview .note-editing-area .note-editable,.note-editor.note-airframe.codeview .note-editing-area .note-editable{display:none}.note-editor.note-frame.codeview .note-editing-area .note-codable,.note-editor.note-airframe.codeview .note-editing-area .note-codable{display:block}.note-editor.note-frame .note-editing-area,.note-editor.note-airframe .note-editing-area{overflow:hidden}.note-editor.note-frame .note-editing-area .note-editable,.note-editor.note-airframe .note-editing-area .note-editable{padding:10px;overflow:auto;word-wrap:break-word}.note-editor.note-frame .note-editing-area .note-editable[contenteditable=false],.note-editor.note-airframe .note-editing-area .note-editable[contenteditable=false]{background-color:#8080801d}.note-editor.note-frame .note-editing-area .note-codable,.note-editor.note-airframe .note-editing-area .note-codable{display:none;width:100%;padding:10px;border:0;box-shadow:none;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;color:#ccc;background-color:#222;resize:none;outline:0;-ms-box-sizing:border-box;box-sizing:border-box;border-radius:0;margin-bottom:0}.note-editor.note-frame.fullscreen,.note-editor.note-airframe.fullscreen{position:fixed;top:0;left:0;width:100% !important;z-index:1050}.note-editor.note-frame.fullscreen .note-resizebar,.note-editor.note-airframe.fullscreen .note-resizebar{display:none}.note-editor.note-frame .note-status-output,.note-editor.note-airframe .note-status-output{display:block;width:100%;font-size:14px;line-height:1.42857143;height:20px;margin-bottom:0;color:#000;border:0;border-top:1px solid #e2e2e2}.note-editor.note-frame .note-status-output:empty,.note-editor.note-airframe .note-status-output:empty{height:0;border-top:0 solid transparent}.note-editor.note-frame .note-status-output .pull-right,.note-editor.note-airframe .note-status-output .pull-right{float:right !important}.note-editor.note-frame .note-status-output .text-muted,.note-editor.note-airframe .note-status-output .text-muted{color:#777}.note-editor.note-frame .note-status-output .text-primary,.note-editor.note-airframe .note-status-output .text-primary{color:#286090}.note-editor.note-frame .note-status-output .text-success,.note-editor.note-airframe .note-status-output .text-success{color:#3c763d}.note-editor.note-frame .note-status-output .text-info,.note-editor.note-airframe .note-status-output .text-info{color:#31708f}.note-editor.note-frame .note-status-output .text-warning,.note-editor.note-airframe .note-status-output .text-warning{color:#8a6d3b}.note-editor.note-frame .note-status-output .text-danger,.note-editor.note-airframe .note-status-output .text-danger{color:#a94442}.note-editor.note-frame .note-status-output .alert,.note-editor.note-airframe .note-status-output .alert{margin:-7px 0 0 0;padding:7px 10px 2px 10px;border-radius:0;color:#000;background-color:#f5f5f5}.note-editor.note-frame .note-status-output .alert .note-icon,.note-editor.note-airframe .note-status-output .alert .note-icon{margin-right:5px}.note-editor.note-frame .note-status-output .alert-success,.note-editor.note-airframe .note-status-output .alert-success{color:#3c763d !important;background-color:#dff0d8 !important}.note-editor.note-frame .note-status-output .alert-info,.note-editor.note-airframe .note-status-output .alert-info{color:#31708f !important;background-color:#d9edf7 !important}.note-editor.note-frame .note-status-output .alert-warning,.note-editor.note-airframe .note-status-output .alert-warning{color:#8a6d3b !important;background-color:#fcf8e3 !important}.note-editor.note-frame .note-status-output .alert-danger,.note-editor.note-airframe .note-status-output .alert-danger{color:#a94442 !important;background-color:#f2dede !important}.note-editor.note-frame .note-statusbar,.note-editor.note-airframe .note-statusbar{background-color:#8080801d;border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top:1px solid #00000032}.note-editor.note-frame .note-statusbar .note-resizebar,.note-editor.note-airframe .note-statusbar .note-resizebar{padding-top:1px;height:9px;width:100%;cursor:ns-resize}.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar,.note-editor.note-airframe .note-statusbar .note-resizebar .note-icon-bar{width:20px;margin:1px auto;border-top:1px solid #00000032}.note-editor.note-frame .note-statusbar.locked .note-resizebar,.note-editor.note-airframe .note-statusbar.locked .note-resizebar{cursor:default}.note-editor.note-frame .note-statusbar.locked .note-resizebar .note-icon-bar,.note-editor.note-airframe .note-statusbar.locked .note-resizebar .note-icon-bar{display:none}.note-editor.note-frame .note-placeholder,.note-editor.note-airframe .note-placeholder{padding:10px}.note-editor.note-airframe{border:0}.note-editor.note-airframe .note-editing-area .note-editable{padding:0}.note-popover.popover{display:none;max-width:none}.note-popover.popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.note-popover.popover .arrow{left:20px !important}.note-toolbar{position:relative}.note-popover .popover-content,.note-editor .note-toolbar{margin:0;padding:0 0 5px 5px}.note-popover .popover-content>.note-btn-group,.note-editor .note-toolbar>.note-btn-group{margin-top:5px;margin-left:0;margin-right:5px}.note-popover .popover-content>.note-btn-group,.note-editor .note-toolbar>.note-btn-group .note-btn{background-color:#fff}.note-popover .popover-content .note-btn-group .note-table,.note-editor .note-toolbar .note-btn-group .note-table{min-width:0;padding:5px}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker{font-size:18px}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher{position:absolute !important;z-index:3;width:10em;height:10em;cursor:pointer}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted{position:relative !important;z-index:1;width:5em;height:5em;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted{position:absolute !important;z-index:2;width:1em;height:1em;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat}.note-popover .popover-content .note-style .dropdown-style blockquote,.note-popover .popover-content .note-style .dropdown-style pre,.note-editor .note-toolbar .note-style .dropdown-style blockquote,.note-editor .note-toolbar .note-style .dropdown-style pre{margin:0;padding:5px 10px}.note-popover .popover-content .note-style .dropdown-style h1,.note-popover .popover-content .note-style .dropdown-style h2,.note-popover .popover-content .note-style .dropdown-style h3,.note-popover .popover-content .note-style .dropdown-style h4,.note-popover .popover-content .note-style .dropdown-style h5,.note-popover .popover-content .note-style .dropdown-style h6,.note-popover .popover-content .note-style .dropdown-style p,.note-editor .note-toolbar .note-style .dropdown-style h1,.note-editor .note-toolbar .note-style .dropdown-style h2,.note-editor .note-toolbar .note-style .dropdown-style h3,.note-editor .note-toolbar .note-style .dropdown-style h4,.note-editor .note-toolbar .note-style .dropdown-style h5,.note-editor .note-toolbar .note-style .dropdown-style h6,.note-editor .note-toolbar .note-style .dropdown-style p{margin:0;padding:0}.note-popover .popover-content .note-color-all .note-dropdown-menu,.note-editor .note-toolbar .note-color-all .note-dropdown-menu{min-width:337px}.note-popover .popover-content .note-color .dropdown-toggle,.note-editor .note-toolbar .note-color .dropdown-toggle{width:20px;padding-left:5px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette{display:inline-block;margin:0;width:160px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette:first-child,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette:first-child{margin:0 5px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-palette-title,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-palette-title{font-size:12px;margin:2px 7px;text-align:center;border-bottom:1px solid #eee}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select{font-size:11px;margin:3px;padding:0 3px;cursor:pointer;width:100%;border-radius:5px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select:hover,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select:hover{background:#eee}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-row,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-row{height:20px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select-btn,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select-btn{display:none}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn{border:1px solid #eee}.note-popover .popover-content .note-para .note-dropdown-menu,.note-editor .note-toolbar .note-para .note-dropdown-menu{min-width:228px;padding:5px}.note-popover .popover-content .note-para .note-dropdown-menu>div+div,.note-editor .note-toolbar .note-para .note-dropdown-menu>div+div{margin-left:5px}.note-popover .popover-content .note-dropdown-menu,.note-editor .note-toolbar .note-dropdown-menu{min-width:160px}.note-popover .popover-content .note-dropdown-menu.right,.note-editor .note-toolbar .note-dropdown-menu.right{right:0;left:auto}.note-popover .popover-content .note-dropdown-menu.right::before,.note-editor .note-toolbar .note-dropdown-menu.right::before{right:9px;left:auto !important}.note-popover .popover-content .note-dropdown-menu.right::after,.note-editor .note-toolbar .note-dropdown-menu.right::after{right:10px;left:auto !important}.note-popover .popover-content .note-dropdown-menu.note-check a i,.note-editor .note-toolbar .note-dropdown-menu.note-check a i{color:deepskyblue;visibility:hidden}.note-popover .popover-content .note-dropdown-menu.note-check a.checked i,.note-editor .note-toolbar .note-dropdown-menu.note-check a.checked i{visibility:visible}.note-popover .popover-content .note-fontsize-10,.note-editor .note-toolbar .note-fontsize-10{font-size:10px}.note-popover .popover-content .note-color-palette,.note-editor .note-toolbar .note-color-palette{line-height:1}.note-popover .popover-content .note-color-palette div .note-color-btn,.note-editor .note-toolbar .note-color-palette div .note-color-btn{width:20px;height:20px;padding:0;margin:0;border:0;border-radius:0}.note-popover .popover-content .note-color-palette div .note-color-btn:hover,.note-editor .note-toolbar .note-color-palette div .note-color-btn:hover{transform:scale(1.2);transition:all .2s}.note-modal .modal-dialog{outline:0;border-radius:5px;box-shadow:0 3px 9px rgba(0,0,0,0.5)}.note-modal .form-group{margin-left:0;margin-right:0}.note-modal .note-modal-form{margin:0}.note-modal .note-image-dialog .note-dropzone{min-height:100px;font-size:30px;line-height:4;color:lightgray;text-align:center;border:4px dashed lightgray;margin-bottom:10px}@-moz-document url-prefix(){.note-modal .note-image-input{height:auto}}.note-placeholder{position:absolute;display:none;color:gray}.note-handle .note-control-selection{position:absolute;display:none;border:1px solid #000}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{width:100%;height:100%;background-color:#000;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;-ms-filter:alpha(opacity=30);filter:alpha(opacity=30)}.note-handle .note-control-selection .note-control-handle,.note-handle .note-control-selection .note-control-sizing,.note-handle .note-control-selection .note-control-holder{width:7px;height:7px;border:1px solid #000}.note-handle .note-control-selection .note-control-sizing{background-color:#000}.note-handle .note-control-selection .note-control-nw{top:-5px;left:-5px;border-right:0;border-bottom:0}.note-handle .note-control-selection .note-control-ne{top:-5px;right:-5px;border-bottom:0;border-left:0}.note-handle .note-control-selection .note-control-sw{bottom:-5px;left:-5px;border-top:0;border-right:0}.note-handle .note-control-selection .note-control-se{right:-5px;bottom:-5px;cursor:se-resize}.note-handle .note-control-selection .note-control-se.note-control-holder{cursor:default;border-top:0;border-left:0}.note-handle .note-control-selection .note-control-selection-info{right:0;bottom:0;padding:5px;margin:5px;color:#fff;background-color:#000;font-size:12px;border-radius:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;-ms-filter:alpha(opacity=70);filter:alpha(opacity=70)}.note-hint-popover{min-width:100px;padding:2px}.note-hint-popover .popover-content{padding:3px;max-height:150px;overflow:auto}.note-hint-popover .popover-content .note-hint-group .note-hint-item{display:block !important;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item.active,.note-hint-popover .popover-content .note-hint-group .note-hint-item:hover{display:block;clear:both;font-weight:400;line-height:1.4;color:white;white-space:nowrap;text-decoration:none;background-color:#428bca;outline:0;cursor:pointer}html .note-fullscreen-body,body .note-fullscreen-body{overflow:hidden !important}body.darktheme .note-popover .popover-content>.note-btn-group,body.darktheme .note-editor .note-toolbar>.note-btn-group .note-btn{background:#262626;color:#ccc}
  1 +/*!
  2 + *
  3 + * Super simple WYSIWYG editor v0.8.20
  4 + * https://summernote.org
  5 + *
  6 + *
  7 + * Copyright 2013- Alan Hong and contributors
  8 + * Summernote may be freely distributed under the MIT license.
  9 + *
  10 + * Date: 2021-10-14T21:15Z
  11 + *
  12 + */
  13 +(function webpackUniversalModuleDefinition(root, factory) {
  14 + if(typeof exports === 'object' && typeof module === 'object')
  15 + module.exports = factory();
  16 + else if(typeof define === 'function' && define.amd)
  17 + define([], factory);
  18 + else {
  19 + var a = factory();
  20 + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
  21 + }
  22 +})(self, function() {
  23 +return /******/ (() => { // webpackBootstrap
  24 +var __webpack_exports__ = {};
  25 +(function ($) {
  26 + $.extend($.summernote.lang, {
  27 + 'zh-CN': {
  28 + font: {
  29 + bold: '粗体',
  30 + italic: '斜体',
  31 + underline: '下划线',
  32 + clear: '清除格式',
  33 + height: '行高',
  34 + name: '字体',
  35 + strikethrough: '删除线',
  36 + subscript: '下标',
  37 + superscript: '上标',
  38 + size: '字号'
  39 + },
  40 + image: {
  41 + image: '图片',
  42 + insert: '插入图片',
  43 + resizeFull: '缩放至 100%',
  44 + resizeHalf: '缩放至 50%',
  45 + resizeQuarter: '缩放至 25%',
  46 + floatLeft: '靠左浮动',
  47 + floatRight: '靠右浮动',
  48 + floatNone: '取消浮动',
  49 + shapeRounded: '形状: 圆角',
  50 + shapeCircle: '形状: 圆',
  51 + shapeThumbnail: '形状: 缩略图',
  52 + shapeNone: '形状: 无',
  53 + dragImageHere: '将图片拖拽至此处',
  54 + dropImage: '拖拽图片或文本',
  55 + selectFromFiles: '从本地上传',
  56 + maximumFileSize: '文件大小最大值',
  57 + maximumFileSizeError: '文件大小超出最大值。',
  58 + url: '图片地址',
  59 + remove: '移除图片',
  60 + original: '原始图片'
  61 + },
  62 + video: {
  63 + video: '视频',
  64 + videoLink: '视频链接',
  65 + insert: '插入视频',
  66 + url: '视频地址',
  67 + providers: '(视频地址)'
  68 + },
  69 + link: {
  70 + link: '链接',
  71 + insert: '插入链接',
  72 + unlink: '去除链接',
  73 + edit: '编辑链接',
  74 + textToDisplay: '显示文本',
  75 + url: '链接地址',
  76 + openInNewWindow: '在新窗口打开'
  77 + },
  78 + table: {
  79 + table: '表格',
  80 + addRowAbove: '在上方插入行',
  81 + addRowBelow: '在下方插入行',
  82 + addColLeft: '在左侧插入列',
  83 + addColRight: '在右侧插入列',
  84 + delRow: '删除行',
  85 + delCol: '删除列',
  86 + delTable: '删除表格'
  87 + },
  88 + hr: {
  89 + insert: '水平线'
  90 + },
  91 + style: {
  92 + style: '样式',
  93 + p: '普通',
  94 + blockquote: '引用',
  95 + pre: '代码',
  96 + h1: '标题 1',
  97 + h2: '标题 2',
  98 + h3: '标题 3',
  99 + h4: '标题 4',
  100 + h5: '标题 5',
  101 + h6: '标题 6'
  102 + },
  103 + lists: {
  104 + unordered: '无序列表',
  105 + ordered: '有序列表'
  106 + },
  107 + options: {
  108 + help: '帮助',
  109 + fullscreen: '全屏',
  110 + codeview: '源代码'
  111 + },
  112 + paragraph: {
  113 + paragraph: '段落',
  114 + outdent: '减少缩进',
  115 + indent: '增加缩进',
  116 + left: '左对齐',
  117 + center: '居中对齐',
  118 + right: '右对齐',
  119 + justify: '两端对齐'
  120 + },
  121 + color: {
  122 + recent: '最近使用',
  123 + more: '更多',
  124 + background: '背景',
  125 + foreground: '前景',
  126 + transparent: '透明',
  127 + setTransparent: '透明',
  128 + reset: '重置',
  129 + resetToDefault: '默认'
  130 + },
  131 + shortcut: {
  132 + shortcuts: '快捷键',
  133 + close: '关闭',
  134 + textFormatting: '文本格式',
  135 + action: '动作',
  136 + paragraphFormatting: '段落格式',
  137 + documentStyle: '文档样式',
  138 + extraKeys: '额外按键'
  139 + },
  140 + help: {
  141 + insertParagraph: '插入段落',
  142 + undo: '撤销',
  143 + redo: '重做',
  144 + tab: '增加缩进',
  145 + untab: '减少缩进',
  146 + bold: '粗体',
  147 + italic: '斜体',
  148 + underline: '下划线',
  149 + strikethrough: '删除线',
  150 + removeFormat: '清除格式',
  151 + justifyLeft: '左对齐',
  152 + justifyCenter: '居中对齐',
  153 + justifyRight: '右对齐',
  154 + justifyFull: '两端对齐',
  155 + insertUnorderedList: '无序列表',
  156 + insertOrderedList: '有序列表',
  157 + outdent: '减少缩进',
  158 + indent: '增加缩进',
  159 + formatPara: '设置选中内容样式为 普通',
  160 + formatH1: '设置选中内容样式为 标题1',
  161 + formatH2: '设置选中内容样式为 标题2',
  162 + formatH3: '设置选中内容样式为 标题3',
  163 + formatH4: '设置选中内容样式为 标题4',
  164 + formatH5: '设置选中内容样式为 标题5',
  165 + formatH6: '设置选中内容样式为 标题6',
  166 + insertHorizontalRule: '插入水平线',
  167 + 'linkDialog.show': '显示链接对话框'
  168 + },
  169 + history: {
  170 + undo: '撤销',
  171 + redo: '重做'
  172 + },
  173 + specialChar: {
  174 + specialChar: '特殊字符',
  175 + select: '选取特殊字符'
  176 + }
  177 + }
  178 + });
  179 +})(jQuery);
  180 +/******/ return __webpack_exports__;
  181 +/******/ })()
  182 +;
  183 +});
  184 +//# sourceMappingURL=summernote-zh-CN.js.map
  1 +/*! Summernote v0.8.20 | (c) 2013- Alan Hong and contributors | MIT license */
  2 +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"zh-CN":{font:{bold:"粗体",italic:"斜体",underline:"下划线",clear:"清除格式",height:"行高",name:"字体",strikethrough:"删除线",subscript:"下标",superscript:"上标",size:"字号"},image:{image:"图片",insert:"插入图片",resizeFull:"缩放至 100%",resizeHalf:"缩放至 50%",resizeQuarter:"缩放至 25%",floatLeft:"靠左浮动",floatRight:"靠右浮动",floatNone:"取消浮动",shapeRounded:"形状: 圆角",shapeCircle:"形状: 圆",shapeThumbnail:"形状: 缩略图",shapeNone:"形状: 无",dragImageHere:"将图片拖拽至此处",dropImage:"拖拽图片或文本",selectFromFiles:"从本地上传",maximumFileSize:"文件大小最大值",maximumFileSizeError:"文件大小超出最大值。",url:"图片地址",remove:"移除图片",original:"原始图片"},video:{video:"视频",videoLink:"视频链接",insert:"插入视频",url:"视频地址",providers:"(视频地址)"},link:{link:"链接",insert:"插入链接",unlink:"去除链接",edit:"编辑链接",textToDisplay:"显示文本",url:"链接地址",openInNewWindow:"在新窗口打开"},table:{table:"表格",addRowAbove:"在上方插入行",addRowBelow:"在下方插入行",addColLeft:"在左侧插入列",addColRight:"在右侧插入列",delRow:"删除行",delCol:"删除列",delTable:"删除表格"},hr:{insert:"水平线"},style:{style:"样式",p:"普通",blockquote:"引用",pre:"代码",h1:"标题 1",h2:"标题 2",h3:"标题 3",h4:"标题 4",h5:"标题 5",h6:"标题 6"},lists:{unordered:"无序列表",ordered:"有序列表"},options:{help:"帮助",fullscreen:"全屏",codeview:"源代码"},paragraph:{paragraph:"段落",outdent:"减少缩进",indent:"增加缩进",left:"左对齐",center:"居中对齐",right:"右对齐",justify:"两端对齐"},color:{recent:"最近使用",more:"更多",background:"背景",foreground:"前景",transparent:"透明",setTransparent:"透明",reset:"重置",resetToDefault:"默认"},shortcut:{shortcuts:"快捷键",close:"关闭",textFormatting:"文本格式",action:"动作",paragraphFormatting:"段落格式",documentStyle:"文档样式",extraKeys:"额外按键"},help:{insertParagraph:"插入段落",undo:"撤销",redo:"重做",tab:"增加缩进",untab:"减少缩进",bold:"粗体",italic:"斜体",underline:"下划线",strikethrough:"删除线",removeFormat:"清除格式",justifyLeft:"左对齐",justifyCenter:"居中对齐",justifyRight:"右对齐",justifyFull:"两端对齐",insertUnorderedList:"无序列表",insertOrderedList:"有序列表",outdent:"减少缩进",indent:"增加缩进",formatPara:"设置选中内容样式为 普通",formatH1:"设置选中内容样式为 标题1",formatH2:"设置选中内容样式为 标题2",formatH3:"设置选中内容样式为 标题3",formatH4:"设置选中内容样式为 标题4",formatH5:"设置选中内容样式为 标题5",formatH6:"设置选中内容样式为 标题6",insertHorizontalRule:"插入水平线","linkDialog.show":"显示链接对话框"},history:{undo:"撤销",redo:"重做"},specialChar:{specialChar:"特殊字符",select:"选取特殊字符"}}}),{};var e}));
  1 +/*!
  2 + *
  3 + * Super simple WYSIWYG editor v0.8.20
  4 + * https://summernote.org
  5 + *
  6 + *
  7 + * Copyright 2013- Alan Hong and contributors
  8 + * Summernote may be freely distributed under the MIT license.
  9 + *
  10 + * Date: 2021-10-14T21:15Z
  11 + *
  12 + */
  13 +(function webpackUniversalModuleDefinition(root, factory) {
  14 + if(typeof exports === 'object' && typeof module === 'object')
  15 + module.exports = factory();
  16 + else if(typeof define === 'function' && define.amd)
  17 + define([], factory);
  18 + else {
  19 + var a = factory();
  20 + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
  21 + }
  22 +})(self, function() {
  23 +return /******/ (() => { // webpackBootstrap
  24 +var __webpack_exports__ = {};
  25 +(function ($) {
  26 + $.extend($.summernote.lang, {
  27 + 'zh-TW': {
  28 + font: {
  29 + bold: '粗體',
  30 + italic: '斜體',
  31 + underline: '底線',
  32 + clear: '清除格式',
  33 + height: '行高',
  34 + name: '字體',
  35 + strikethrough: '刪除線',
  36 + subscript: '下標',
  37 + superscript: '上標',
  38 + size: '字號'
  39 + },
  40 + image: {
  41 + image: '圖片',
  42 + insert: '插入圖片',
  43 + resizeFull: '縮放至100%',
  44 + resizeHalf: '縮放至 50%',
  45 + resizeQuarter: '縮放至 25%',
  46 + floatLeft: '靠左浮動',
  47 + floatRight: '靠右浮動',
  48 + floatNone: '取消浮動',
  49 + shapeRounded: '形狀: 圓角',
  50 + shapeCircle: '形狀: 圓',
  51 + shapeThumbnail: '形狀: 縮略圖',
  52 + shapeNone: '形狀: 無',
  53 + dragImageHere: '將圖片拖曳至此處',
  54 + dropImage: 'Drop image or Text',
  55 + selectFromFiles: '從本機上傳',
  56 + maximumFileSize: '文件大小最大值',
  57 + maximumFileSizeError: '文件大小超出最大值。',
  58 + url: '圖片網址',
  59 + remove: '移除圖片',
  60 + original: 'Original'
  61 + },
  62 + video: {
  63 + video: '影片',
  64 + videoLink: '影片連結',
  65 + insert: '插入影片',
  66 + url: '影片網址',
  67 + providers: '(影片網址)'
  68 + },
  69 + link: {
  70 + link: '連結',
  71 + insert: '插入連結',
  72 + unlink: '取消連結',
  73 + edit: '編輯連結',
  74 + textToDisplay: '顯示文字',
  75 + url: '連結網址',
  76 + openInNewWindow: '在新視窗開啟'
  77 + },
  78 + table: {
  79 + table: '表格',
  80 + addRowAbove: '上方插入列',
  81 + addRowBelow: '下方插入列',
  82 + addColLeft: '左方插入欄',
  83 + addColRight: '右方插入欄',
  84 + delRow: '刪除列',
  85 + delCol: '刪除欄',
  86 + delTable: '刪除表格'
  87 + },
  88 + hr: {
  89 + insert: '水平線'
  90 + },
  91 + style: {
  92 + style: '樣式',
  93 + p: '一般',
  94 + blockquote: '引用區塊',
  95 + pre: '程式碼區塊',
  96 + h1: '標題 1',
  97 + h2: '標題 2',
  98 + h3: '標題 3',
  99 + h4: '標題 4',
  100 + h5: '標題 5',
  101 + h6: '標題 6'
  102 + },
  103 + lists: {
  104 + unordered: '項目清單',
  105 + ordered: '編號清單'
  106 + },
  107 + options: {
  108 + help: '幫助',
  109 + fullscreen: '全螢幕',
  110 + codeview: '原始碼'
  111 + },
  112 + paragraph: {
  113 + paragraph: '段落',
  114 + outdent: '取消縮排',
  115 + indent: '增加縮排',
  116 + left: '靠右對齊',
  117 + center: '靠中對齊',
  118 + right: '靠右對齊',
  119 + justify: '左右對齊'
  120 + },
  121 + color: {
  122 + recent: '字型顏色',
  123 + more: '更多',
  124 + background: '背景',
  125 + foreground: '字體',
  126 + transparent: '透明',
  127 + setTransparent: '透明',
  128 + reset: '重設',
  129 + resetToDefault: '預設'
  130 + },
  131 + shortcut: {
  132 + shortcuts: '快捷鍵',
  133 + close: '關閉',
  134 + textFormatting: '文字格式',
  135 + action: '動作',
  136 + paragraphFormatting: '段落格式',
  137 + documentStyle: '文件格式',
  138 + extraKeys: '額外按鍵'
  139 + },
  140 + help: {
  141 + 'insertParagraph': 'Insert Paragraph',
  142 + 'undo': 'Undoes the last command',
  143 + 'redo': 'Redoes the last command',
  144 + 'tab': 'Tab',
  145 + 'untab': 'Untab',
  146 + 'bold': 'Set a bold style',
  147 + 'italic': 'Set a italic style',
  148 + 'underline': 'Set a underline style',
  149 + 'strikethrough': 'Set a strikethrough style',
  150 + 'removeFormat': 'Clean a style',
  151 + 'justifyLeft': 'Set left align',
  152 + 'justifyCenter': 'Set center align',
  153 + 'justifyRight': 'Set right align',
  154 + 'justifyFull': 'Set full align',
  155 + 'insertUnorderedList': 'Toggle unordered list',
  156 + 'insertOrderedList': 'Toggle ordered list',
  157 + 'outdent': 'Outdent on current paragraph',
  158 + 'indent': 'Indent on current paragraph',
  159 + 'formatPara': 'Change current block\'s format as a paragraph(P tag)',
  160 + 'formatH1': 'Change current block\'s format as H1',
  161 + 'formatH2': 'Change current block\'s format as H2',
  162 + 'formatH3': 'Change current block\'s format as H3',
  163 + 'formatH4': 'Change current block\'s format as H4',
  164 + 'formatH5': 'Change current block\'s format as H5',
  165 + 'formatH6': 'Change current block\'s format as H6',
  166 + 'insertHorizontalRule': 'Insert horizontal rule',
  167 + 'linkDialog.show': 'Show Link Dialog'
  168 + },
  169 + history: {
  170 + undo: '復原',
  171 + redo: '取消復原'
  172 + },
  173 + specialChar: {
  174 + specialChar: 'SPECIAL CHARACTERS',
  175 + select: 'Select Special characters'
  176 + }
  177 + }
  178 + });
  179 +})(jQuery);
  180 +/******/ return __webpack_exports__;
  181 +/******/ })()
  182 +;
  183 +});
  184 +//# sourceMappingURL=summernote-zh-TW.js.map
  1 +/*! Summernote v0.8.20 | (c) 2013- Alan Hong and contributors | MIT license */
  2 +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var a in r)("object"==typeof exports?exports:e)[a]=r[a]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"zh-TW":{font:{bold:"粗體",italic:"斜體",underline:"底線",clear:"清除格式",height:"行高",name:"字體",strikethrough:"刪除線",subscript:"下標",superscript:"上標",size:"字號"},image:{image:"圖片",insert:"插入圖片",resizeFull:"縮放至100%",resizeHalf:"縮放至 50%",resizeQuarter:"縮放至 25%",floatLeft:"靠左浮動",floatRight:"靠右浮動",floatNone:"取消浮動",shapeRounded:"形狀: 圓角",shapeCircle:"形狀: 圓",shapeThumbnail:"形狀: 縮略圖",shapeNone:"形狀: 無",dragImageHere:"將圖片拖曳至此處",dropImage:"Drop image or Text",selectFromFiles:"從本機上傳",maximumFileSize:"文件大小最大值",maximumFileSizeError:"文件大小超出最大值。",url:"圖片網址",remove:"移除圖片",original:"Original"},video:{video:"影片",videoLink:"影片連結",insert:"插入影片",url:"影片網址",providers:"(影片網址)"},link:{link:"連結",insert:"插入連結",unlink:"取消連結",edit:"編輯連結",textToDisplay:"顯示文字",url:"連結網址",openInNewWindow:"在新視窗開啟"},table:{table:"表格",addRowAbove:"上方插入列",addRowBelow:"下方插入列",addColLeft:"左方插入欄",addColRight:"右方插入欄",delRow:"刪除列",delCol:"刪除欄",delTable:"刪除表格"},hr:{insert:"水平線"},style:{style:"樣式",p:"一般",blockquote:"引用區塊",pre:"程式碼區塊",h1:"標題 1",h2:"標題 2",h3:"標題 3",h4:"標題 4",h5:"標題 5",h6:"標題 6"},lists:{unordered:"項目清單",ordered:"編號清單"},options:{help:"幫助",fullscreen:"全螢幕",codeview:"原始碼"},paragraph:{paragraph:"段落",outdent:"取消縮排",indent:"增加縮排",left:"靠右對齊",center:"靠中對齊",right:"靠右對齊",justify:"左右對齊"},color:{recent:"字型顏色",more:"更多",background:"背景",foreground:"字體",transparent:"透明",setTransparent:"透明",reset:"重設",resetToDefault:"預設"},shortcut:{shortcuts:"快捷鍵",close:"關閉",textFormatting:"文字格式",action:"動作",paragraphFormatting:"段落格式",documentStyle:"文件格式",extraKeys:"額外按鍵"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"復原",redo:"取消復原"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var e}));
1 define([], function () { 1 define([], function () {
  2 + //修改上传的接口调用
  3 +require(['upload'], function (Upload) {
  4 +
  5 + //初始化中完成判断
  6 + Upload.events.onInit = function () {
  7 + //如果上传接口不是七牛云,则不处理
  8 + if (this.options.url !== Config.upload.uploadurl) {
  9 + return;
  10 + }
  11 + var _success = this.options.success;
  12 +
  13 + $.extend(this.options, {
  14 + chunkSuccess: function (chunk, file, response) {
  15 + this.contexts = this.contexts ? this.contexts : [];
  16 + this.contexts.push(typeof response.ctx !== 'undefined' ? response.ctx : response.data.ctx);
  17 + },
  18 + chunksUploaded: function (file, done) {
  19 + var that = this;
  20 + var params = $(that.element).data("params") || {};
  21 + var category = typeof params.category !== 'undefined' ? params.category : ($(that.element).data("category") || '');
  22 + Fast.api.ajax({
  23 + url: "/addons/qiniu/index/upload",
  24 + data: {
  25 + action: 'merge',
  26 + filesize: file.size,
  27 + filename: file.name,
  28 + chunkid: file.upload.uuid,
  29 + chunkcount: file.upload.totalChunkCount,
  30 + width: file.width || 0,
  31 + height: file.height || 0,
  32 + type: file.type,
  33 + category: category,
  34 + qiniutoken: Config.upload.multipart.qiniutoken,
  35 + contexts: this.contexts
  36 + },
  37 + }, function (data, ret) {
  38 + done(JSON.stringify(ret));
  39 + return false;
  40 + }, function (data, ret) {
  41 + file.accepted = false;
  42 + that._errorProcessing([file], ret.msg);
  43 + return false;
  44 + });
  45 +
  46 + },
  47 + });
  48 +
  49 + //先移除已有的事件
  50 + this.off("success", _success).on("success", function (file, response) {
  51 + var that = this;
  52 + var ret = {code: 0, msg: response};
  53 + try {
  54 + ret = typeof response === 'string' ? JSON.parse(response) : response;
  55 + if (file.xhr.status === 200) {
  56 + if (typeof ret.key !== 'undefined') {
  57 + ret = {code: 1, msg: "", data: {url: '/' + ret.key, hash: ret.hash}};
  58 + }
  59 + console.log(ret);
  60 + var params = $(that.element).data("params") || {};
  61 + var category = typeof params.category !== 'undefined' ? params.category : ($(that.element).data("category") || '');
  62 + Fast.api.ajax({
  63 + url: "/addons/qiniu/index/notify",
  64 + data: {name: file.name, url: ret.data.url, hash: ret.data.hash, size: file.size, width: file.width || 0, height: file.height || 0, type: file.type, category: category, qiniutoken: Config.upload.multipart.qiniutoken}
  65 + }, function () {
  66 + return false;
  67 + }, function () {
  68 + return false;
  69 + });
  70 + }
  71 + } catch (e) {
  72 + console.error(e);
  73 + }
  74 + _success.call(this, file, ret);
  75 + });
  76 +
  77 + //如果是直传模式
  78 + if (Config.upload.uploadmode === 'client') {
  79 + var _url = this.options.url;
  80 +
  81 + //分片上传时URL链接不同
  82 + this.options.url = function (files) {
  83 + this.options.headers = {"Authorization": "UpToken " + Config.upload.multipart.qiniutoken};
  84 + if (files[0].upload.chunked) {
  85 + var chunk = null;
  86 + files[0].upload.chunks.forEach(function (item) {
  87 + if (item.status === 'uploading') {
  88 + chunk = item;
  89 + }
  90 + });
  91 + if (!chunk) {
  92 + return Config.upload.uploadurl + '/mkfile/' + files[0].size;
  93 + } else {
  94 + return Config.upload.uploadurl + '/mkblk/' + chunk.dataBlock.data.size;
  95 + }
  96 + }
  97 + return _url;
  98 + };
  99 +
  100 + this.options.params = function (files, xhr, chunk) {
  101 + var params = Config.upload.multipart;
  102 + if (chunk) {
  103 + return $.extend({}, params, {
  104 + filesize: chunk.file.size,
  105 + filename: chunk.file.name,
  106 + chunkid: chunk.file.upload.uuid,
  107 + chunkindex: chunk.index,
  108 + chunkcount: chunk.file.upload.totalChunkCount,
  109 + chunkfilesize: chunk.dataBlock.data.size,
  110 + width: chunk.file.width || 0,
  111 + height: chunk.file.height || 0,
  112 + type: chunk.file.type,
  113 + });
  114 + } else {
  115 + var retParams = $.extend({}, params);
  116 + //七牛云直传使用的是token参数
  117 + retParams.token = retParams.qiniutoken;
  118 + delete retParams.qiniutoken;
  119 + return retParams;
  120 + }
  121 + };
  122 +
  123 + //分片上传时需要变更提交的内容
  124 + this.on("sending", function (file, xhr, formData) {
  125 + if (file.upload.chunked) {
  126 + var _send = xhr.send;
  127 + xhr.send = function () {
  128 + var chunk = null;
  129 + file.upload.chunks.forEach(function (item) {
  130 + if (item.status == 'uploading') {
  131 + chunk = item;
  132 + }
  133 + });
  134 + if (chunk) {
  135 + _send.call(xhr, chunk.dataBlock.data);
  136 + }
  137 + };
  138 + }
  139 + });
  140 + }
  141 + };
  142 +
  143 +});
  144 +
  145 +require.config({
  146 + paths: {
  147 + 'summernote': '../addons/summernote/lang/summernote-zh-CN.min'
  148 + },
  149 + shim: {
  150 + 'summernote': ['../addons/summernote/js/summernote.min', 'css!../addons/summernote/css/summernote.min.css'],
  151 + }
  152 +});
  153 +require(['form', 'upload'], function (Form, Upload) {
  154 + var _bindevent = Form.events.bindevent;
  155 + Form.events.bindevent = function (form) {
  156 + _bindevent.apply(this, [form]);
  157 + try {
  158 + //绑定summernote事件
  159 + if ($(Config.summernote.classname || '.editor', form).length > 0) {
  160 + var selectUrl = typeof Config !== 'undefined' && Config.modulename === 'index' ? 'user/attachment' : 'general/attachment/select';
  161 + require(['summernote'], function () {
  162 + var imageButton = function (context) {
  163 + var ui = $.summernote.ui;
  164 + var button = ui.button({
  165 + contents: '<i class="fa fa-file-image-o"/>',
  166 + tooltip: __('Choose'),
  167 + click: function () {
  168 + parent.Fast.api.open(selectUrl + "?element_id=&multiple=true&mimetype=image/", __('Choose'), {
  169 + callback: function (data) {
  170 + var urlArr = data.url.split(/\,/);
  171 + $.each(urlArr, function () {
  172 + var url = Fast.api.cdnurl(this, true);
  173 + context.invoke('editor.insertImage', url);
  174 + });
  175 + }
  176 + });
  177 + return false;
  178 + }
  179 + });
  180 + return button.render();
  181 + };
  182 + var attachmentButton = function (context) {
  183 + var ui = $.summernote.ui;
  184 + var button = ui.button({
  185 + contents: '<i class="fa fa-file"/>',
  186 + tooltip: __('Choose'),
  187 + click: function () {
  188 + parent.Fast.api.open(selectUrl + "?element_id=&multiple=true&mimetype=*", __('Choose'), {
  189 + callback: function (data) {
  190 + var urlArr = data.url.split(/\,/);
  191 + $.each(urlArr, function () {
  192 + var url = Fast.api.cdnurl(this, true);
  193 + var node = $("<a href='" + url + "'>" + url + "</a>");
  194 + context.invoke('insertNode', node[0]);
  195 + });
  196 + }
  197 + });
  198 + return false;
  199 + }
  200 + });
  201 + return button.render();
  202 + };
  203 +
  204 + $(Config.summernote.classname || '.editor', form).each(function () {
  205 + $(this).summernote($.extend(true, {}, {
  206 + // height: 250,
  207 + minHeight: 250,
  208 + lang: 'zh-CN',
  209 + fontNames: [
  210 + 'Arial', 'Arial Black', 'Serif', 'Sans', 'Courier',
  211 + 'Courier New', 'Comic Sans MS', 'Helvetica', 'Impact', 'Lucida Grande',
  212 + "Open Sans", "Hiragino Sans GB", "Microsoft YaHei",
  213 + '微软雅黑', '宋体', '黑体', '仿宋', '楷体', '幼圆',
  214 + ],
  215 + fontNamesIgnoreCheck: [
  216 + "Open Sans", "Microsoft YaHei",
  217 + '微软雅黑', '宋体', '黑体', '仿宋', '楷体', '幼圆'
  218 + ],
  219 + toolbar: [
  220 + ['style', ['style', 'undo', 'redo']],
  221 + ['font', ['bold', 'underline', 'strikethrough', 'clear']],
  222 + ['fontname', ['color', 'fontname', 'fontsize']],
  223 + ['para', ['ul', 'ol', 'paragraph', 'height']],
  224 + ['table', ['table', 'hr']],
  225 + ['insert', ['link', 'picture', 'video']],
  226 + ['select', ['image', 'attachment']],
  227 + ['view', ['fullscreen', 'codeview', 'help']],
  228 + ],
  229 + buttons: {
  230 + image: imageButton,
  231 + attachment: attachmentButton,
  232 + },
  233 + dialogsInBody: true,
  234 + followingToolbar: false,
  235 + callbacks: {
  236 + onChange: function (contents) {
  237 + $(this).val(contents);
  238 + $(this).trigger('change');
  239 + },
  240 + onInit: function () {
  241 + },
  242 + onImageUpload: function (files) {
  243 + var that = this;
  244 + //依次上传图片
  245 + for (var i = 0; i < files.length; i++) {
  246 + Upload.api.send(files[i], function (data) {
  247 + var url = Fast.api.cdnurl(data.url, true);
  248 + $(that).summernote("insertImage", url, 'filename');
  249 + });
  250 + }
  251 + }
  252 + }
  253 + }, $(this).data("summernote-options") || {}));
  254 + });
  255 + });
  256 + }
  257 + } catch (e) {
  258 +
  259 + }
  260 +
  261 + };
  262 +});
2 263
3 }); 264 });
@@ -30,16 +30,14 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin @@ -30,16 +30,14 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
30 {field: 'id', title: __('Id')}, 30 {field: 'id', title: __('Id')},
31 {field: 'car_model', title: __('Car_model'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, 31 {field: 'car_model', title: __('Car_model'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
32 {field: 'license_plate', title: __('License_plate'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, 32 {field: 'license_plate', title: __('License_plate'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
33 - {field: 'seat', title: __('Seat')},  
34 {field: 'colour', title: __('Colour'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, 33 {field: 'colour', title: __('Colour'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
35 - {field: 'driver_license_img', title: __('Driver_license_img'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images},  
36 - {field: 'driving_license_img', title: __('Driving_license_img'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images},  
37 - {field: 'reservation_time', title: __('Reservation_time'),operate:'RANGE', addclass:'datetimerange',datetimeFormat:"HH:mm", autocomplete:false, formatter: Table.api.formatter.datetime},  
38 - {field: 'start_time', title: __('Start_time'),operate:'RANGE', addclass:'datetimerange',datetimeFormat:"HH:mm", autocomplete:false, formatter: Table.api.formatter.datetime},  
39 - {field: 'create_time', title: __('Create_time'),operate:'RANGE', addclass:'datetimerange',datetimeFormat:"HH:mm", autocomplete:false, formatter: Table.api.formatter.datetime},  
40 - {field: 'driver.name', title: __('Driver.name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},  
41 {field: 'route.name', title: __('Route.name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, 34 {field: 'route.name', title: __('Route.name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
  35 + {field: 'driver.name', title: __('Driver.name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
  36 + {field: 'seat.name', title: __('Seat.name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
  37 + {field: 'reservation_time', title: __('Reservation_time'), datetimeFormat:"HH:mm",operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
  38 + {field: 'start_time', title: __('Start_time'), datetimeFormat:"HH:mm", operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
42 {field: 'create_time', title: __('Create_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime}, 39 {field: 'create_time', title: __('Create_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
  40 +
43 {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} 41 {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
44 ] 42 ]
45 ] 43 ]
  1 +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
  2 +
  3 + var Controller = {
  4 + index: function () {
  5 + // 初始化表格参数配置
  6 + Table.api.init({
  7 + extend: {
  8 + index_url: 'seat/index' + location.search,
  9 + add_url: 'seat/add',
  10 + edit_url: 'seat/edit',
  11 + del_url: 'seat/del',
  12 + multi_url: 'seat/multi',
  13 + import_url: 'seat/import',
  14 + table: 'seat',
  15 + }
  16 + });
  17 +
  18 + var table = $("#table");
  19 +
  20 + // 初始化表格
  21 + table.bootstrapTable({
  22 + url: $.fn.bootstrapTable.defaults.extend.index_url,
  23 + pk: 'id',
  24 + sortName: 'id',
  25 + columns: [
  26 + [
  27 + {checkbox: true},
  28 + {field: 'id', title: __('Id')},
  29 + {field: 'name', title: __('Name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
  30 + {field: 'seat_number', title: __('Seat_number'), searchList: {"0":__('Seat_number 0'),"1":__('Seat_number 1')}, formatter: Table.api.formatter.normal},
  31 + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
  32 + ]
  33 + ]
  34 + });
  35 +
  36 + // 为表格绑定事件
  37 + Table.api.bindevent(table);
  38 + },
  39 + add: function () {
  40 + $(document).on("change", "#seat_number input", function(){
  41 + var seat_number = $("input[name='row[seat_number]']:checked").val();
  42 + console.log(seat_number);
  43 + if(seat_number==1){
  44 + //否则隐藏
  45 + $("#seat6").show();
  46 + $("#seat7").show();
  47 + }else if(seat_number==0){
  48 + //匠星隐藏千寻数据key
  49 + $('#c-seat_name7').val("");
  50 + $('#c-seat_price7').val("");
  51 + $("#seat7").hide();
  52 +
  53 + $('#c-seat_name6').val("");
  54 + $('#c-seat_price6').val("");
  55 + $("#seat6").hide();
  56 + }
  57 + });
  58 +
  59 + Controller.api.bindevent();
  60 + },
  61 + edit: function () {
  62 + $(document).on("change", "#seat_number input", function(){
  63 + var seat_number = $("input[name='row[seat_number]']:checked").val();
  64 + console.log(seat_number);
  65 + if(seat_number==1){
  66 + //否则隐藏
  67 + $("#seat6").show();
  68 + $("#seat5").show();
  69 + }else if(seat_number==0){
  70 + //匠星隐藏千寻数据key
  71 + $('#c-seat_name5').val("");
  72 + $('#c-seat_price5').val("");
  73 + $("#seat5").hide();
  74 +
  75 + $('#c-seat_name6').val("");
  76 + $('#c-seat_price6').val("");
  77 + $("#seat6").hide();
  78 + }
  79 + });
  80 +
  81 + Controller.api.bindevent();
  82 + },
  83 + api: {
  84 + bindevent: function () {
  85 + Form.api.bindevent($("form[role=form]"));
  86 + }
  87 + }
  88 + };
  89 + return Controller;
  90 +});