Răsfoiți Sursa

修改bug 2023/10/13

Xiahai 11 luni în urmă
părinte
comite
33399c5ea2

+ 8 - 2
application/admin/controller/cms/Archives.php

@@ -117,7 +117,7 @@ class Archives extends Backend
                 $this->model->where('channel_id', 'in', $this->channelIds);
             }
             $total = $this->model
-                ->with('Channel')
+                ->with(['Channel', 'user', 'admin', 'model'])
                 ->where($where)
                 ->order($sort, $order)
                 ->count();
@@ -125,12 +125,18 @@ class Archives extends Backend
                 $this->model->where('channel_id', 'in', $this->channelIds);
             }
             $list = $this->model
-                ->with(['Channel'])
+                ->with(['Channel', 'user', 'admin', 'model'])
                 ->where($where)
                 ->order($sort, $order)
                 ->limit($offset, $limit)
                 ->select();
 
+            foreach ($list as $v) {
+                $v['user_id'] = $v['user']['nickname'];
+                $v['admin_id'] = $v['admin']['nickname'] ?? '-';
+                $v['model_id'] = $v['model']['name'];
+            }
+
             addtion($list, [
                 [
                     'field'   => 'channel_ids',

+ 24 - 1
application/admin/controller/cms/Manuscript.php

@@ -27,6 +27,7 @@ class Manuscript extends Backend
     protected $model = null;
     protected $searchFields = '';
     protected $noNeedRight = ['edit_chief', 'comments', 'comments_detail', 'send_user_list', 'email'];
+    protected $position = 0;
 
     public function _initialize()
     {
@@ -37,11 +38,33 @@ class Manuscript extends Backend
         $this->assignconfig('site_manuscript_status', $site_manuscript_status);
 
         $site_type_list = $this->model->typeList();
-        $this->assignconfig('site_type_list', $site_manuscript_status);
+        $this->assignconfig('site_type_list', $site_type_list);
+
+        // 根据不同用户展示不同字段
+        $fieldsList = \app\admin\model\workorder\Fields::where([
+            'status' => 1,
+            'position' => $this->position,
+            'type_list' => ['<>', 'text']
+        ])->order('weigh', 'DESC')->select();
+        $fields     = [];
+        foreach ($fieldsList as $index => $item) {
+            if ($item['isfilter']) {
+                $fields[] = [
+                    'field'  => $item['name'],
+                    'title'  => $item['title'],
+                    'type'   => $item['type_list'],
+                    'values' => $item['values_list']
+                ];
+            }
+        }
+        $this->assignconfig('fields', $fields);
+
+        $this->view->assign('fields', $this->model->getFields(null, 0));
     }
 
     public function index()
     {
+        $this->relationSearch = true;
         //设置过滤方法
         $this->request->filter(['strip_tags', 'trim']);
         if ($this->request->isAjax()) {

+ 5 - 0
application/admin/controller/cms/Modelx.php

@@ -44,6 +44,11 @@ class Modelx extends Backend
         }
         if ($this->request->isPost()) {
             $table = $this->request->request("table");
+
+            if (strlen($table) < 5 || strlen($table) > 20) {
+                $this->error(__('Please fill in 5 to 20 characters'));
+            }
+
             $tableInfo = null;
             try {
                 $tableInfo = \think\Db::name($table)->getTableInfo();

+ 48 - 0
application/admin/controller/cms/SearchLog.php

@@ -3,6 +3,9 @@
 namespace app\admin\controller\cms;
 
 use app\common\controller\Backend;
+use think\Db;
+use think\exception\PDOException;
+use think\exception\ValidateException;
 
 /**
  * 搜索记录管理
@@ -32,4 +35,49 @@ class SearchLog extends Backend
      * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
      */
 
+    /**
+     * 添加
+     *
+     * @return string
+     * @throws \think\Exception
+     */
+    public function add()
+    {
+        if (false === $this->request->isPost()) {
+            return $this->view->fetch();
+        }
+        $params = $this->request->post('row/a');
+        if (empty($params)) {
+            $this->error(__('Parameter %s can not be empty', ''));
+        }
+        $params = $this->preExcludeFields($params);
+
+        $log = $this->model->where(['keywords' => $params['keywords']])->find();
+        if ($log) {
+            $this->error(__('Keyword already exists'));
+        }
+
+        if ($this->dataLimit && $this->dataLimitFieldAutoFill) {
+            $params[$this->dataLimitField] = $this->auth->id;
+        }
+        $result = false;
+        Db::startTrans();
+        try {
+            //是否采用模型验证
+            if ($this->modelValidate) {
+                $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
+                $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate;
+                $this->model->validateFailException()->validate($validate);
+            }
+            $result = $this->model->allowField(true)->save($params);
+            Db::commit();
+        } catch (ValidateException|PDOException|Exception $e) {
+            Db::rollback();
+            $this->error($e->getMessage());
+        }
+        if ($result === false) {
+            $this->error(__('No rows were inserted'));
+        }
+        $this->success();
+    }
 }

+ 6 - 0
application/admin/lang/zh-cn/cms/archives.php

@@ -83,4 +83,10 @@ return [
     'Ishome'                                    => '首页显示',
     'Normal'                                    => '显示',
     'Hidden'                                    => '隐藏',
+    'Top size'                                  => '最大大小',
+    'Normal size'                               => '正常大小',
+    'File size'                                 => '文件大小',
+    'Not greater than 2M'                       => '不大于2M',
+    'Not greater than 10M'                      => '不大于10M',
+    'Please select flag'                        => '请选择标签',
 ];

+ 2 - 0
application/admin/lang/zh-cn/cms/fields.php

@@ -68,4 +68,6 @@ return [
     'Smallint'                          => '短整型',
     'Tinyint'                           => '整型(最小)',
     'Bigint'                            => '整型(最大)',
+    'Decimal'                           => '小数',
+    'Mediumtext'                        => '文本',
 ];

+ 2 - 0
application/admin/lang/zh-cn/cms/manuscript.php

@@ -21,4 +21,6 @@ return [
     'Reviewer'                      => '审稿人',
     'No corresponding user found'   => '未找到对应用户',
     'Chief'                         => '主编',
+    "Image"                         => '图片',
+    'Recommendation'                => '推荐',
 ];

+ 2 - 1
application/admin/lang/zh-cn/cms/modelx.php

@@ -19,5 +19,6 @@ return [
     'Duplicate'                         => '复制模型',
     'Createtime'                        => '创建时间',
     'Updatetime'                        => '更新时间',
-    'Setting'                           => '配置'
+    'Setting'                           => '配置',
+    'Please fill in 5 to 20 characters' => '请填写5到20个字符',
 ];

+ 2 - 1
application/admin/lang/zh-cn/cms/search_log.php

@@ -4,5 +4,6 @@ return [
     'Keywords'   => '关键字',
     'Nums'       => '搜索次数',
     'Createtime' => '搜索时间',
-    'Status'     => '状态'
+    'Status'     => '状态',
+    'Keyword already exists' => '关键字已存在',
 ];

+ 17 - 12
application/admin/view/cms/archives/add.html

@@ -1,4 +1,9 @@
 {include file="cms/archives/common" /}
+<style>
+    .msg-box.n-right {
+        right: 5px;
+    }
+</style>
 <form id="add-form" class="form-horizontal form-archives" role="form" data-toggle="validator" method="POST" action="">
     <input type="hidden" name="row[style]" value=""/>
     <div class="row">
@@ -78,7 +83,7 @@
                                 <label for="c-image" class="control-label col-xs-12 col-sm-2">{:__('Image')}</label>
                                 <div class="col-xs-12 col-sm-8">
                                     <div class="input-group">
-                                        <input id="c-image" class="form-control" size="50" name="row[image]" type="text" value="" placeholder="缩略图可以直接从正文进行提取,可以为空">
+                                        <input id="c-image" class="form-control" size="50" name="row[image]" type="text" value="/assets/img/index/manuscript_empty.png" placeholder="缩略图可以直接从正文进行提取,可以为空">
                                         <div class="input-group-addon no-border no-padding">
                                             <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="2M" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
                                             <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="2M" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
@@ -86,9 +91,9 @@
                                         <span class="msg-box n-right" for="c-image"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-image"></ul>
-                                    <span class="msg-box" style="color: #f00;line-height: 25px">Top size:565*570px</span>
-                                    <p class="m-0"><span class="msg-box" style="color: #f00;line-height: 25px">Normal size:282*280px</span></p>
-                                    <p class="m-0"><span class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 2M</span></p>
+                                    <span class="msg-box" style="color: #f00;line-height: 25px">{:__('Top size')}:565*570px</span>
+                                    <p class="m-0"><span class="msg-box" style="color: #f00;line-height: 25px">{:__('Normal size')}:282*280px</span></p>
+                                    <p class="m-0"><span class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 2M')}</span></p>
                                 </div>
                             </div>
 
@@ -175,7 +180,7 @@
                                         <span class="msg-box n-right" for="c-pdf"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-pdf"></ul>
-                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 10M')}</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -190,7 +195,7 @@
                                         <span class="msg-box n-right" for="c-pdf_cover"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-pdf_cover"></ul>
-                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 10M')}</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -205,7 +210,7 @@
                                         <span class="msg-box n-right" for="c-xml"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-xml"></ul>
-                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 10M')}</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -220,7 +225,7 @@
                                         <span class="msg-box n-right" for="c-epub"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-epub"></ul>
-                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 10M')}</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -235,7 +240,7 @@
                                         <span class="msg-box n-right" for="c-endnote"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-endnote"></ul>
-                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 10M')}</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -250,7 +255,7 @@
                                         <span class="msg-box n-right" for="c-reference_manager"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-reference_manager"></ul>
-                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 10M')}</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -265,7 +270,7 @@
                                         <span class="msg-box n-right" for="c-simple_text_file"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-simple_text_file"></ul>
-                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 10M')}</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -280,7 +285,7 @@
                                         <span class="msg-box n-right" for="c-bibtex"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-bibtex"></ul>
-                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 10M')}</span>
                                 </div>
                             </div>
 <!--                            <div id="extend"></div>-->

+ 17 - 12
application/admin/view/cms/archives/edit.html

@@ -1,4 +1,9 @@
 {include file="cms/archives/common" /}
+<style>
+    .msg-box.n-right {
+        rigth: 5px;
+    }
+</style>
 <form id="edit-form" class="form-horizontal form-archives" role="form" data-toggle="validator" method="POST" action="">
     <input type="hidden" value="{$row.id}" id="archive-id"/>
     <input type="hidden" name="row[style]" value="{$row.style}"/>
@@ -80,7 +85,7 @@
                                 <label for="c-image" class="control-label col-xs-12 col-sm-2">{:__('Image')}</label>
                                 <div class="col-xs-12 col-sm-8">
                                     <div class="input-group">
-                                        <input id="c-image" class="form-control" size="50" name="row[image]" type="text" value="{$row.image|htmlentities}" placeholder="缩略图可以直接从正文进行提取">
+                                        <input id="c-image" class="form-control" size="50" name="row[image]" type="text" value="{$row.image|htmlentities ? $row.image : '/assets/img/index/manuscript_empty.png'}" placeholder="缩略图可以直接从正文进行提取">
                                         <div class="input-group-addon no-border no-padding">
                                             <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="2M" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
                                             <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="2M" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
@@ -88,9 +93,9 @@
                                         <span class="msg-box n-right" for="c-image"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-image"></ul>
-                                    <span class="msg-box" style="color: #f00;line-height: 25px">Top size:565*570px</span>
-                                    <p class="m-0"><span class="msg-box" style="color: #f00;line-height: 25px">Normal size:282*280px</span></p>
-                                    <p class="m-0"><span class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 2M</span></p>
+                                    <span class="msg-box" style="color: #f00;line-height: 25px">{:__('Top size')}:565*570px</span>
+                                    <p class="m-0"><span class="msg-box" style="color: #f00;line-height: 25px">{:__('Normal size')}:282*280px</span></p>
+                                    <p class="m-0"><span class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 2M')}</span></p>
                                 </div>
                             </div>
                             <div class="form-group" data-field="images">
@@ -176,7 +181,7 @@
                                         <span class="msg-box n-right" for="c-pdf"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-pdf"></ul>
-                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 10M')}</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -191,7 +196,7 @@
                                         <span class="msg-box n-right" for="c-pdf_cover"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-pdf_cover"></ul>
-                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 10M')}</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -206,7 +211,7 @@
                                         <span class="msg-box n-right" for="c-xml"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-xml"></ul>
-                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 10M')}</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -221,7 +226,7 @@
                                         <span class="msg-box n-right" for="c-epub"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-epub"></ul>
-                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 10M')}</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -236,7 +241,7 @@
                                         <span class="msg-box n-right" for="c-endnote"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-endnote"></ul>
-                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 10M')}</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -251,7 +256,7 @@
                                         <span class="msg-box n-right" for="c-reference_manager"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-reference_manager"></ul>
-                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 10M')}</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -266,7 +271,7 @@
                                         <span class="msg-box n-right" for="c-simple_text_file"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-simple_text_file"></ul>
-                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 10M')}</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -281,7 +286,7 @@
                                         <span class="msg-box n-right" for="c-bibtex"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-bibtex"></ul>
-                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">{:__('File size')}{:__('Not greater than 10M')}</span>
                                 </div>
                             </div>
 <!--                            <div id="extend"></div>-->

+ 1 - 1
application/admin/view/cms/archives/index.html

@@ -73,7 +73,7 @@
             <div class="panel-body">
                 <span class="text-muted"><input type="checkbox" name="" id="checkall"/> <label for="checkall"><small>{:__('Check all')}</small></label></span>
                 <span class="text-muted"><input type="checkbox" name="" id="expandall" checked=""/> <label for="expandall"><small>{:__('Expand all')}</small></label></span>
-                <div id="channeltree">
+                <div id="channeltree" style="overflow:hidden;">
                 </div>
             </div>
         </div>

+ 127 - 0
application/admin/view/cms/manuscript/common/fields.html

@@ -0,0 +1,127 @@
+{foreach $fields as $item}
+
+<div class="form-group {$item.name}" {if condition="$item.isassociation == 1"}style="display:none;"{/if}>
+    <div class="control-label col-xs-12 col-sm-3">{$item.title}</div>
+    <div class="col-xs-12 col-sm-8">
+        {switch $item.type_list}
+        {case string}
+        <input type="text" name="row[{$item.name}]" id="c-{$item.name}" value="{$item.value|htmlentities}" class="form-control" data-rule="{$item.rule}" data-msg="{$item.errormsg}" placeholder="{$item.notice}" {$item.extend}/>
+        {/case}
+        {case value="text"}
+        <div class="text_field">{$item.value|htmlentities}</div>
+        {/case}
+        {case value="editor|textarea"}
+        <textarea name="row[{$item.name}]" id="c-{$item.name}" class="form-control {eq name='$item.type_list' value='editor'}editor{/eq}" data-rule="{$item.rule}" data-msg="{$item.errormsg}" rows="5" placeholder="{$item.notice}" {$item.extend}>{$item.value|htmlentities}</textarea>
+        {/case}
+        {case array}
+        {php}$arrList=isset($values[$item['name']])?(array)json_decode($item['value'],true):$item['values_list'];{/php}
+        <dl class="fieldlist" rel="{$arrList|count}" data-name="row[{$item.name}]">
+            <dd>
+                <ins>{:__('Array key')}</ins>
+                <ins>{:__('Array value')}</ins>
+            </dd>
+
+            {foreach $arrList as $key => $vo}
+            <dd class="form-inline">
+                <input type="text" name="row[{$item.name}][field][{$key}]" class="form-control" value="{$key}" size="10"/>
+                <input type="text" name="row[{$item.name}][value][{$key}]" class="form-control" value="{$vo}"/>
+                <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span>
+                <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span>
+            </dd>
+            {/foreach}
+            <dd><a href="javascript:;" class="append btn btn-sm btn-success"><i class="fa fa-plus"></i> {:__('Append')}</a></dd>
+        </dl>
+        {/case}
+        {case date}
+        <input type="text" name="row[{$item.name}]" id="c-{$item.name}" value="{$item.value}" class="form-control datetimepicker" data-date-format="YYYY-MM-DD" placeholder="{$item.notice}" data-rule="{$item.rule}" data-msg="{$item.errormsg}" {$item.extend}/>
+        {/case}
+        {case time}
+        <input type="text" name="row[{$item.name}]" id="c-{$item.name}" value="{$item.value}" class="form-control datetimepicker" data-date-format="HH:mm:ss" placeholder="{$item.notice}" data-rule="{$item.rule}" data-msg="{$item.errormsg}" {$item.extend}/>
+        {/case}
+        {case datetime}
+        <input type="text" name="row[{$item.name}]" id="c-{$item.name}" value="{$item.value}" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" placeholder="{$item.notice}" data-rule="{$item.rule}" data-msg="{$item.errormsg}" {$item.extend}/>
+        {/case}
+        {case number}
+        <input type="number" name="row[{$item.name}]" id="c-{$item.name}" value="{$item.value}" class="form-control" placeholder="{$item.notice}" data-rule="{$item.rule}" data-msg="{$item.errormsg}" {$item.extend}/>
+        {/case}
+        {case checkbox}
+        {foreach name="item.values_list" item="vo"}
+        <label for="row[{$item.name}][]-{$key}"><input id="row[{$item.name}][]-{$key}" name="row[{$item.name}][]" type="checkbox" value="{$key}" data-rule="{$item.rule}" data-msg="{$item.errormsg}" {in name="key" value="$item.value" }checked{/in} /> {$vo}</label>
+        {/foreach}
+        <span class="input_notice">{$item.notice}</span>
+        {/case}
+        {case radio}
+        <div class="input-group mb-3">
+            <div class="radio radio-inline pl-0">
+                {foreach name="item.values_list" item="vo"}
+                <label for="row[{$item.name}]-{$key}" class="radio_label"><input id="row[{$item.name}]-{$key}" data-name="{$item.name}" name="row[{$item.name}]" type="radio" value="{$key}" data-rule="{$item.rule}" data-msg="{$item.errormsg}" {in name="key" value="$item.value" }checked{/in} /> {$vo}</label>
+                {/foreach}
+            </div>
+        </div>
+        <span class="input_notice">{$item.notice}</span>
+        {/case}
+        {case value="select" break="0"}{/case}
+        {case value="selects"}
+        <select name="row[{$item.name}]{$item.type_list=='selects'?'[]':''}" class="form-control selectpicker" data-rule="{$item.rule}" data-msg="{$item.errormsg}" {$item.extend} {$item.type_list=='selects'?'multiple':''}>
+            {foreach name="item.values_list" item="vo"}
+            <option value="{$key}" {in name="key" value="$item.value" }selected{/in}>{$vo}</option>
+            {/foreach}
+        </select>
+        <span class="input_notice">{$item.notice}</span>
+        {/case}
+        {case value="image" break="0"}{/case}
+        {case value="images"}
+        <div class="input-group">
+            <input id="c-{$item.name}" class="form-control" name="row[{$item.name}]" type="text" value="{$item.value|htmlentities}" data-rule="{$item.rule}" data-msg="{$item.errormsg}" placeholder="{$item.notice}">
+            <div class="input-group-addon no-border no-padding">
+                <span><button type="button" id="plupload-{$item.name}" class="btn btn-danger plupload" data-input-id="c-{$item.name}" data-preview-id="p-{$item.name}" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="{$item.type_list=='image'?'false':'true'}" {if $item.maximum}data-maxcount="{$item.maximum}" {/if}><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+            </div>
+            <span class="msg-box n-right" for="c-{$item.name}"></span>
+        </div>
+        <ul class="row list-inline plupload-preview" id="p-{$item.name}"></ul>
+        {/case}
+        {case value="file" break="0"}{/case}
+        {case value="files"}
+        <div class="input-group">
+            <input id="c-{$item.name}" class="form-control" name="row[{$item.name}]" type="text" value="{$item.value|htmlentities}" data-rule="{$item.rule}" data-msg="{$item.errormsg}" placeholder="{$item.notice}">
+            <div class="input-group-addon no-border no-padding">
+                <span><button type="button" id="plupload-{$item.name}" class="btn btn-danger plupload" data-input-id="c-{$item.name}" data-preview-id="p-{$item.name}" data-multiple="{$item.type_list=='file'?'false':'true'}" {if $item.maximum}data-maxcount="{$item.maximum}" {/if}><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+            </div>
+            <span class="msg-box n-right" for="c-{$item.name}"></span>
+        </div>
+        <ul class="row list-inline plupload-preview" id="p-{$item.name}"></ul>
+        {/case}
+        {case switch}
+        <input id="c-{$item.name}" name="row[{$item.name}]" type="hidden" value="{:$item.value?1:0}">
+        <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-{$item.name}" data-yes="1" data-no="0">
+            <i class="fa fa-toggle-on text-success {if !$item.value}fa-flip-horizontal text-gray{/if} fa-2x"></i>
+        </a>
+        <span class="input_notice">{$item.notice}</span>
+        {/case}
+        {case bool}
+        <label for="row[{$item.name}]-yes"><input id="row[{$item.name}]-yes" name="row[{$item.name}]" type="radio" value="1" {$item.value?'checked':''} data-tip="{$item.notice}" /> {:__('Yes')}</label>
+        <label for="row[{$item.name}]-no"><input id="row[{$item.name}]-no" name="row[{$item.name}]" type="radio" value="0" {$item.value?'':'checked'} data-tip="{$item.notice}" /> {:__('No')}</label>
+        {/case}
+        {case city}
+        <input type="text" name="row[{$item.name}]" id="c-{$item.name}" data-toggle="city-picker" value="{$item.value|htmlentities}" class="form-control" data-rule="{$item.rule}" data-msg="{$item.errormsg}" placeholder="{$item.notice}" {$item.extend}/>
+        {/case}
+        {case custom}
+        {$item.content}
+        {/case}
+        {/switch}
+    </div>
+</div>
+{/foreach}
+
+<script>
+    // 单选框选择显示对应input
+    $(document).on('click', '.radio-inline', function () {
+        let radio_value = $(this).find('input[type="radio"]:checked').val();
+        let radio_content_class = $(this).find('input[type="radio"]').attr('data-name') + '_content';
+        if (radio_value == 'normal') {
+            $('.' + radio_content_class).show();
+        } else {
+            $('.' + radio_content_class).hide();
+        }
+    });
+</script>

+ 1 - 25
application/admin/view/cms/manuscript/edit.html

@@ -245,31 +245,7 @@
     </fieldset>
     <fieldset>
         <!-- 陈述 -->
-        <div class="form-group">
-            <label class="control-label col-xs-12 col-sm-2">{:__('I have received funding')}:</label>
-            <div class="col-xs-12 col-sm-8">
-                {:build_radios('row[is_funding]', ['normal'=>__('Yes'), 'hidden'=>__('No')], $row.is_funding)}
-            </div>
-        </div>
-        <div class="form-group">
-            <label class="control-label col-xs-12 col-sm-2">{:__('I have received funding')}:</label>
-            <div class="col-xs-12 col-sm-7">
-                <textarea data-rule="required" class="form-control editor" name="row[funding_content]" id="c-funding_content" cols="30" rows="10" readonly>{$row.funding_content}</textarea>
-            </div>
-        </div>
-
-        <div class="form-group">
-            <label class="control-label col-xs-12 col-sm-2">{:__('Potential confilict of interest exists Choose')}:</label>
-            <div class="col-xs-12 col-sm-7">
-                {:build_radios('row[is_interest]', ['normal'=>__('Yes'), 'hidden'=>__('No')], $row.is_interest)}
-            </div>
-        </div>
-        <div class="form-group">
-            <label class="control-label col-xs-12 col-sm-2">{:__('Potential confilict of interest exists')}:</label>
-            <div class="col-xs-12 col-sm-7">
-                <textarea data-rule="required" class="form-control editor" name="row[interest_content]" id="c-interest_content" cols="30" rows="10" readonly>{$row.interest_content}</textarea>
-            </div>
-        </div>
+        {include file="cms/manuscript/common/fields"}
 
         <div class="form-button">
             <input type="button" name="previous" class="previous action-button-previous" value="上一步">

+ 1 - 1
application/admin/view/cms/manuscript/edit_chief.html

@@ -4,7 +4,7 @@
         <label for="c-chief_id" class="control-label col-xs-12 col-sm-2">{:__('Chief')}:</label>
         <div class="col-xs-12 col-sm-8">
             <!--@formatter:off-->
-            <select  id="c-chief_id" class="form-control selectpicker" multiple="" name="row[chief_id]">
+            <select data-rule="required"  id="c-chief_id" class="form-control selectpicker" multiple="" name="row[chief_id]">
                 {foreach name="chief_list" item="vo"}
                 <option value="{$key}" {in name="key" value="$row.chief_id" }selected{/in}>{$vo}</option>
                 {/foreach}

+ 1 - 1
application/admin/view/cms/search_log/add.html

@@ -3,7 +3,7 @@
     <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Keywords')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input id="c-keywords" class="form-control" name="row[keywords]" type="text" value="">
+            <input id="c-keywords" data-rule="required" class="form-control" name="row[keywords]" type="text" value="">
         </div>
     </div>
     <div class="form-group">

+ 1 - 1
application/admin/view/cms/search_log/edit.html

@@ -3,7 +3,7 @@
     <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Keywords')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input id="c-keywords" class="form-control" name="row[keywords]" type="text" value="{$row.keywords|htmlentities}">
+            <input id="c-keywords" data-rule="required" class="form-control" name="row[keywords]" type="text" value="{$row.keywords|htmlentities}">
         </div>
     </div>
     <div class="form-group">

+ 2 - 0
application/common/model/Config.php

@@ -62,6 +62,8 @@ class Config extends Model
             'smallint'      => __('Smallint'),
             'tinyint'       => __('Tinyint'),
             'bigint'        => __('Bigint'),
+            'decimal'       => __('Decimal'),
+            'mediumtext'    => __('Mediumtext'),
         ];
         return $typeList;
     }

+ 1 - 1
extend/fast/Tree.php

@@ -26,7 +26,7 @@ class Tree
      * @var array
      */
     public $icon = array('│', '├', '└');
-    public $nbsp = "&nbsp;";
+    public $nbsp = " ";
     public $pidname = 'pid';
 
     public function __construct($options = [])

+ 20 - 12
public/assets/js/backend/cms/archives.js

@@ -53,11 +53,20 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function
                         {
                             field: 'user_id',
                             title: __('User_id'),
+                            operate: false,
+                        },
+                        {
+                            field: 'user_id',
+                            title: __('User_id'),
                             visible: false,
                             addclass: 'selectpage',
                             extend: 'data-source="user/user/index" data-field="nickname"',
-                            operate: '=',
-                            formatter: Table.api.formatter.search
+                            operate: 'LIKE',
+                        },
+                        {
+                            field: 'admin_id',
+                            title: __('Admin_id'),
+                            operate: false,
                         },
                         {
                             field: 'admin_id',
@@ -65,8 +74,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function
                             visible: false,
                             addclass: 'selectpage',
                             extend: 'data-source="auth/admin/selectpage" data-field="nickname"',
-                            operate: '=',
-                            formatter: Table.api.formatter.search
+                            operate: 'LIKE',
                         },
                         {
                             field: 'channel_id',
@@ -85,14 +93,14 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function
                                 return '<a href="javascript:;" class="searchit" data-field="channel_id" data-value="' + row.channel_id + '">' + value + '</a>';
                             }
                         },
-                        {
-                            field: 'channel_ids',
-                            title: __('Channel_ids'),
-                            visible: false,
-                            addclass: 'selectpage',
-                            extend: 'data-source="cms/channel/index" data-field="name"',
-                            operate: 'find_in_set'
-                        },
+                        // {
+                        //     field: 'channel_ids',
+                        //     title: __('Channel_ids'),
+                        //     visible: false,
+                        //     addclass: 'selectpage',
+                        //     extend: 'data-source="cms/channel/index" data-field="name"',
+                        //     operate: 'find_in_set'
+                        // },
                         {
                             field: 'model_id', title: __('Model'), visible: false, align: 'left', addclass: "selectpage", extend: "data-source='cms/modelx/index' data-field='name'"
                         },

+ 9 - 1
public/assets/js/backend/cms/block.js

@@ -35,7 +35,15 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         {field: 'name', title: __('Name'), formatter: Table.api.formatter.search, operate: 'like'},
                         {field: 'title', title: __('Title'), operate: 'like'},
                         {field: 'image', title: __('Image'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.image},
-                        {field: 'url', title: __('Url'), formatter: Table.api.formatter.url},
+                        // {field: 'url', title: __('Url'), formatter: Table.api.formatter.url},
+                        {field: 'url', title: __('Url'), formatter: function (value, row, index) {
+                                if (!row.url) {
+                                    return '';
+                                } else {
+                                    return '<a href="' + value + '" target="_blank" class="btn btn-default btn-xs"><i class="fa fa-link"></i></a>';
+                                }
+                            }
+                        },
                         {field: 'createtime', title: __('Createtime'), sortable: true, operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
                         {field: 'updatetime', title: __('Updatetime'), sortable: true, visible: false, operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
                         {field: 'weigh', title: __('Weigh'), visible: false},

+ 1 - 1
public/assets/js/backend/cms/manuscript.js

@@ -40,7 +40,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         {field: 'title', title: __('Title'), operate: 'like'},
                         {field: 'image', title: __('Image'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.image},
                         {field: 'createtime', title: __('Createtime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
-                        {field: 'status', title: __('Status'), searchList: Config.site_manuscript_status , formatter: Table.api.formatter.status},
+                        {field: 'status', title: __('Status'), searchList: Config.site_manuscript_status, formatter: Table.api.formatter.flag},
                         {
                             field: 'operate',
                             title: __('Operate'),