Ver código fonte

手稿作者信息拖拽,实时保存

夏海 1 ano atrás
pai
commit
ee865ed7af

BIN
.DS_Store


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

@@ -26,7 +26,7 @@ class Manuscript extends Backend
      */
     protected $model = null;
     protected $searchFields = '';
-    protected $noNeedRight = ['add_editor', 'comments', 'comments_detail', 'send_user_list'];
+    protected $noNeedRight = ['add_editor', 'comments', 'comments_detail', 'send_user_list', 'email'];
 
     public function _initialize()
     {

+ 38 - 0
application/admin/controller/cms/SpecialIssue.php

@@ -23,6 +23,7 @@ class SpecialIssue extends Backend
      */
     protected $model = null;
     protected $searchFields = 'id';
+    protected $noNeedRight = ['is_adopt'];
 
     public function _initialize()
     {
@@ -121,4 +122,41 @@ class SpecialIssue extends Backend
         }
         $this->success();
     }
+
+    /**
+     * 特刊申请操作
+     *
+     * @param $ids
+     * @param $status
+     * @return void
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @throws \think\exception\DbException
+     */
+    public function is_adopt($ids = null, $status = null)
+    {
+        $row = $this->model->get($ids);
+        if (!$row) {
+            $this->error(__('No Results were found'));
+        }
+        $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 . '.edit' : $name) : $this->modelValidate;
+                $row->validateFailException()->validate($validate);
+            }
+            $result = $row->allowField(true)->save(['status' => $status]);
+            Db::commit();
+        } catch (ValidateException|PDOException|Exception $e) {
+            Db::rollback();
+            $this->error($e->getMessage());
+        }
+        if (false === $result) {
+            $this->error(__('No rows were updated'));
+        }
+        $this->success();
+    }
 }

+ 9 - 12
application/admin/lang/zh-cn/cms/special_issue.php

@@ -2,16 +2,13 @@
 
 return [
     'User_id'                       => '用户',
-    'Title'                         => '标题',
-    'Country'                       => '国家',
-    'Affiliation'                   => '隶属关系',
-    'Name'                          => '名称',
-    'Invoice email'                 => '发票电子邮件',
-    'Order email'                   => '订单电子邮件',
-    'Address'                       => '地址',
-    'Zip code'                      => '邮政编码',
-    'City'                          => '城市',
-    'Telephone'                     => '电话',
-    'Fax'                           => '传真',
-    'Vat'                           => '增值税',
+    'Journal'                       => '期刊',
+    'Editor'                        => '作者邮箱',
+    'Publication cycle'             => '出版周期',
+    'Proposal text'                 => '建议文本',
+    'Statement type'                => '利益冲突声明',
+    'Issue name'                    => '特刊名称',
+    'Review'                        => '未审核',
+    'Correct'                       => '通过',
+    'Fault'                         => '拒绝',
 ];

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

@@ -467,7 +467,7 @@
                     <label class="control-label col-xs-12 col-sm-2"></label>
                     <div class="col-xs-12 col-sm-8">
                         <button type="submit" class="btn btn-primary btn-embossed disabled"><i class="fa fa-check"></i> {:__('OK')}</button>
-                        <button type="button" class="btn btn-info btn-embossed btn-continue"><i class="fa fa-pencil"></i> {:__('Publish and continue')}</button>
+<!--                        <button type="button" class="btn btn-info btn-embossed btn-continue"><i class="fa fa-pencil"></i> {:__('Publish and continue')}</button>-->
                     </div>
                 </div>
             </div>

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

@@ -478,7 +478,7 @@
                     <label class="control-label col-xs-12 col-sm-2"></label>
                     <div class="col-xs-12 col-sm-8">
                         <button type="submit" class="btn btn-primary btn-embossed disabled"><i class="fa fa-check"></i> {:__('OK')}</button>
-                        <button type="button" class="btn btn-info btn-embossed btn-continue"><i class="fa fa-pencil"></i> {:__('Publish and continue')}</button>
+<!--                        <button type="button" class="btn btn-info btn-embossed btn-continue"><i class="fa fa-pencil"></i> {:__('Publish and continue')}</button>-->
                     </div>
                 </div>
             </div>

+ 4 - 4
application/admin/view/cms/special_issue/edit.html

@@ -1,6 +1,6 @@
 <form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
     <div class="form-group">
-        <label for="c-journal" class="control-label col-xs-12 col-sm-2">Choose Jounal:</label>
+        <label for="c-journal" class="control-label col-xs-12 col-sm-2">{:__('Journal')}:</label>
         <div class="col-xs-12 col-sm-7">
             <select id="c-journal" data-rule="required" class="form-control" name="row[journal]">
                 <option value="">Please select</option>
@@ -11,19 +11,19 @@
         </div>
     </div>
     <div class="form-group">
-        <label for="c-issue_name" class="control-label col-xs-12 col-sm-2">Special Issue Name:</label>
+        <label for="c-issue_name" class="control-label col-xs-12 col-sm-2">{:__('Issue name')}:</label>
         <div class="col-xs-12 col-sm-7">
             <input type="text" data-rule="required" class="form-control" id="c-issue_name" name="row[issue_name]" value="{$row.issue_name}" placeholder="Issue name">
         </div>
     </div>
     <div class="form-group">
-        <label for="c-proposal_text" class="control-label col-xs-12 col-sm-2">Proposal text:</label>
+        <label for="c-proposal_text" class="control-label col-xs-12 col-sm-2">{:__('Proposal text')}:</label>
         <div class="col-xs-12 col-sm-7">
             <textarea id="c-proposal_text" class="form-control editor" name="row[proposal_text]" rows="15" placeholder="Type here...">{$row.proposal_text}</textarea>
         </div>
     </div>
     <div class="form-group">
-        <label for="c-publication_cycle" class="control-label col-xs-12 col-sm-2">Publication cycle:</label>
+        <label for="c-publication_cycle" class="control-label col-xs-12 col-sm-2">{:__('Publication cycle')}:</label>
         <div class="col-xs-12 col-sm-7">
             <input type="text" class="form-control" id="c-publication_cycle" name="row[publication_cycle]" value="{$row.publication_cycle}" placeholder="Publication cycle">
         </div>

+ 29 - 0
application/api/controller/Cms.php

@@ -4,6 +4,7 @@ namespace app\api\controller;
 
 use app\admin\model\cms\AuthorManuscript;
 use app\admin\model\cms\Channel;
+use app\admin\model\cms\Conference;
 use app\common\controller\Api;
 use app\common\library\Ems as Emslib;
 use app\common\model\User;
@@ -53,4 +54,32 @@ class Cms extends Api
 
         $this->success('', $channel);
     }
+
+    /**
+     * 根据时间获取对应会议列表
+     *
+     * @return void
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @throws \think\exception\DbException
+     */
+    public function getConference()
+    {
+        $params = $this->request->param();
+        $year = $params['year'];
+        $month = $params['month'];
+        if (empty($year)) {
+            $year = date('Y', time());
+        }
+        if (empty($month)) {
+            $month = date('m', time());
+        }
+
+        $start_time = $year . '-' . $month;
+
+        $end_time = date('Y-m-d', strtotime("$start_time +1 month -1 day"));
+
+        $conferences = Conference::whereTime('createtime', 'between', [$start_time, $end_time])->select();
+        $this->success('', $conferences);
+    }
 }

+ 46 - 10
application/api/controller/User.php

@@ -479,7 +479,7 @@ class User extends Api
      *
      * @return void
      */
-    public function manummscript()
+    public function submit_manuscript()
     {
         $params = $this->request->post('row/a');
         if (!$params['manuscript_zip']) $this->error('Manuscript (Word/Zip) Cannot be Empty');
@@ -491,14 +491,6 @@ class User extends Api
         if (!$params['number_page']) $this->error('Number of Pages Cannot be Empty');
         if (!$params['author']) $this->error('Author Cannot be Empty');
         if (!$params['reviewer']) $this->error('Reviewer Cannot be Empty');
-        if (!$params['country']) $this->error('Country Cannot be Empty');
-        if (!$params['affiliation']) $this->error('Affiliation Cannot be Empty');
-        if (!$params['name']) $this->error('Name Cannot be Empty');
-        if (!$params['invoice_email']) $this->error('Invoice Email Cannot be Empty');
-        if (!$params['order_email']) $this->error('Order Email Cannot be Empty');
-        if (!$params['address']) $this->error('Address Cannot be Empty');
-        if (!$params['zip_code']) $this->error('Zip Code Cannot be Empty');
-        if (!$params['city']) $this->error('City Cannot be Empty');
         // 添加
         if (!$params['id']) {
             $result = false;
@@ -528,7 +520,7 @@ class User extends Api
             try {
                 // 数组内容需转换为字符串
                 $params['author_content'] = json_encode($params['author']);
-                $params['review_contnet'] = json_encode($params['reviewer']);
+                $params['review_content'] = json_encode($params['reviewer']);
 
                 $result = $row->allowField(true)->save($params);
                 Db::commit();
@@ -828,4 +820,48 @@ class User extends Api
 
         $this->success('Success');
     }
+
+    /**
+     * 提交手稿(未全部提交)
+     *
+     * @return void
+     */
+    public function incomplete_submit()
+    {
+        $params = $this->request->post('row/a');
+        // 数组内容需转换为字符串
+        if (array_key_exists('author', $params) && !empty($params['author'])) {
+            $params['author_content'] = json_encode($params['author']);
+        }
+        if (array_key_exists('reviewer', $params) && !empty($params['reviewer'])) {
+            $params['review_content'] = json_encode($params['reviewer']);
+        }
+        if (empty($params['title'])) {
+            $params['title'] = 'Incomplete editing' . rand(0, 4);
+        }
+        if (empty($params['image'])) {
+            $params['image'] = 'https://dummyimage.com/205x128';
+        }
+        $params['status'] = 'incomplete_submission';
+        $params['user_id'] = $this->auth->id;
+        // 因使用create方法返回自增id,但是验证字段有前端自定义字段所以需要删除
+        unset($params['author']);
+        unset($params['reviewer']);
+        $manuscript = new AuthorManuscript();
+
+        Db::startTrans();
+        try {
+            if (!empty($params['id'])) {
+                $manuscript = AuthorManuscript::where(['id' => $params['id']])->find();
+                $manuscript = $manuscript->allowField(true)->save($params);
+            } else {
+                $manuscript = $manuscript->allowField(true)->create($params);
+            }
+            Db::commit();
+        } catch (ValidateException|PDOException|Exception $e) {
+            Db::rollback();
+            $this->error($e->getMessage());
+        }
+        $this->success('Success', $manuscript->id ?? $params['id']);
+    }
 }

+ 2 - 0
application/extra/site.php

@@ -99,6 +99,7 @@ return array (
   ),
   'manuscript_status' => 
   array (
+    'incomplete_submission' => 'Incomplete submission',
     'processing' => 'processing',
     'reject_recall_archive' => 'reject_recall_archive',
     'comment_submission' => 'comment_submission',
@@ -114,6 +115,7 @@ return array (
   'author_manuscript_status' => 
   array (
     'all' => 'All',
+    'incomplete_submission' => 'Incomplete submission',
     'processing' => 'Processing',
     'reject_recall_archive' => 'Reject/ Recall/ Archive',
   ),

+ 77 - 5
application/index/controller/User.php

@@ -8,6 +8,7 @@ use app\admin\model\cms\AuthorManuscript;
 use app\admin\model\cms\Channel;
 use app\admin\model\cms\Comments;
 use app\admin\model\cms\InviteReviewer;
+use app\admin\model\cms\Issue;
 use app\admin\model\cms\Participate;
 use app\admin\model\EmailContent;
 use app\common\controller\Frontend;
@@ -18,6 +19,7 @@ use app\common\model\UserRoleContent;
 use app\common\model\UserRoleLog;
 use think\Config;
 use think\Cookie;
+use think\Db;
 use think\Hook;
 use think\Session;
 use think\Validate;
@@ -460,9 +462,9 @@ class User extends Frontend
     {
         // 构建分页参数
         $limit = $this->request->param('limit', 10);
-        $status = $this->request->param('status', 'All');
+        $status = $this->request->param('status', 'all');
         $where = [];
-        if ($status != 'All') {
+        if ($status != 'all') {
             $where = ['status' => $status];
         }
         // 查询当前用户手稿
@@ -498,7 +500,7 @@ class User extends Frontend
      */
     public function reviewer_information()
     {
-        $user_role_count = UserRoleLog::where(['user_id' => $this->auth->id, 'type' => 'review', 'is_adopt' => ['in', ['review', 'fault']]])->count();
+        $user_role = UserRoleLog::where(['user_id' => $this->auth->id, 'type' => 'review', 'is_adopt' => ['in', ['review', 'fault']]])->order('createtime', 'DESC')->find();
         $user_content = UserRoleContent::where(['user_id' => $this->auth->id, 'type' => 'review'])->find();
         if (empty($user_content)) {
             $user_content['field'] = '';
@@ -513,7 +515,7 @@ class User extends Frontend
             $user_content['journal_ids'] = '';
         }
         $this->view->assign('row', $user_content);
-        $this->view->assign('user_role_count', $user_role_count);
+        $this->view->assign('user_role', $user_role);
         $this->view->assign('title', 'Reviewer Information');
         return $this->view->fetch();
     }
@@ -655,8 +657,22 @@ class User extends Frontend
     /**
      * 申请创建特刊
      */
-    public function special_issue()
+    public function special_issue($id = null)
     {
+        $special_issue = [
+            'image' => '',
+            'journal' => '',
+            'issue_name' => '',
+            'proposal_text' => '',
+            'publication_cycle' => '',
+            'editor' => '',
+            'statement_type' => '',
+        ];
+        if ($id) {
+            $special_issue = Issue::where(['id' => $id])->find();
+            $special_issue->editor = json_decode($special_issue['editor']);
+        }
+        $this->view->assign('row', $special_issue);
         $this->view->assign('title', 'Apply to creat a special issue');
         return $this->view->fetch();
     }
@@ -666,6 +682,7 @@ class User extends Frontend
      */
     public function become_an_editor()
     {
+        $user_role = UserRoleLog::where(['user_id' => $this->auth->id, 'type' => 'editor', 'is_adopt' => ['in', ['review', 'fault']]])->order('createtime', 'DESC')->find();
         $user_content = UserRoleContent::where(['user_id' => $this->auth->id, 'type' => 'editor'])->find();
         if (empty($user_content)) {
             $user_content['degree'] = '';
@@ -679,6 +696,7 @@ class User extends Frontend
             $user_content['journal_ids'] = '';
         }
         $this->view->assign('row', $user_content);
+        $this->view->assign('user_role', $user_role);
         $this->view->assign('title', 'Apply to become an editor');
         return $this->view->fetch();
     }
@@ -807,4 +825,58 @@ class User extends Frontend
         $this->view->assign('title', 'Submit Conference');
         return $this->view->fetch();
     }
+
+    /**
+     * 特刊列表页
+     *
+     * @return string
+     * @throws \think\Exception
+     * @throws \think\exception\DbException
+     */
+    public function special_issue_list()
+    {
+        $status = $this->request->param('status', 'All');
+        $where = ['user_id' => $this->auth->id];
+        if ($status != 'All') {
+            $where = ['status' => $status, 'user_id' => $this->auth->id];
+        }
+        if ($status == '') {
+            unset($where['status']);
+        }
+
+        $special_issues = Issue::where($where)->order('createtime', 'DESC')->paginate();
+
+        if ($this->request->isAjax()) {
+            $keyword = $this->request->param('keyword');
+            if ($status == 'All') {
+                $status = '';
+            }
+            $special_issues = Issue::where(['user_id' => $this->auth->id, 'issue_name' => ['like', '%'. $keyword .'%']])
+                ->where(function ($query) use ($status) {
+                    if ($status) {
+                        $query->where(['status' => $status]);
+                    }
+                })->field('id,issue_name,image,createtime,journal')
+                ->order('createtime', 'DESC')
+                ->paginate();
+
+            foreach ($special_issues as $special_issue) {
+                $special_issue['createtime'] = date('Y-m-d', $special_issue['createtime']);
+                $special_issue['journal'] = Channel::where(['id' => $special_issue['journal']])->value('name');
+            }
+
+            $this->success('', '', $special_issues);
+        }
+
+        foreach ($special_issues as $special_issue) {
+            $special_issue['createtime'] = date('Y-m-d', $special_issue['createtime']);
+            $special_issue['journal'] = Channel::where(['id' => $special_issue['journal']])->value('name');
+        }
+
+        $this->view->assign('status', $status);
+        $this->view->assign('title', 'Special Issue List');
+        $this->view->assign('list', $special_issues);
+
+        return $this->view->fetch();
+    }
 }

+ 6 - 0
application/index/view/common/sidenav.html

@@ -108,6 +108,12 @@
                 <img src="__CDN__/assets/img/index/arrow_right_icon.png" alt="">
             </a>
         </li>
+        <li class="list-group-item {:check_nav_active('user/special_issue_list')}">
+            <a href="{:url('user/special_issue_list')}">
+                Special Issue List
+                <img src="__CDN__/assets/img/index/arrow_right_icon.png" alt="">
+            </a>
+        </li>
         <li class="list-group-item {:check_nav_active('user/editing_manuscripts')}">
             <a href="{:url('user/editing_manuscripts')}">
                 Editing Manuscripts

+ 12 - 1
application/index/view/user/become_an_editor.html

@@ -15,7 +15,15 @@
                     <div class="header-content">
                         <h2 class="page-header">Edit personal information</h2>
                     </div>
-
+                    {if condition="$user_role"}
+                        {if condition="$user_role.is_adopt == 'fault'"}
+                            <p class="text-danger">Status:Fault</p>
+                        {/if}
+                        {if condition="$user_role.is_adopt == 'review'"}
+                            <p class="text-warning">Status:Review</p>
+                        {/if}
+                    {/if}
+                    {if condition="!$user_role || $user_role.is_adopt == 'fault' || $user_role.is_adopt == 'correct'"}
                     <form id="become-an-editor-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="{:url('api/user/apply_role?type=editor')}">
                         {:token()}
 
@@ -117,6 +125,9 @@
                             </div>
                         </div>
                     </form>
+                    {else}
+                    Information is currently under review.
+                    {/if}
                 </div>
             </div>
         </div>

+ 1 - 1
application/index/view/user/display_submitted.html

@@ -53,7 +53,7 @@
                     <nav aria-label="breadcrumb" class="breadcrumb-content">
                         <ol class="breadcrumb">
                             {foreach name="$site.author_manuscript_status" item="item"}
-                            <li class="breadcrumb-item <?php if($status == $item) echo 'active'; ?>"><a href="?status={$item}">{$item}</a></li>
+                            <li class="breadcrumb-item <?php if($status == $key) echo 'active'; ?>"><a href="?status={$key}">{$item}</a></li>
                             {/foreach}
                         </ol>
                     </nav>

+ 10 - 1
application/index/view/user/reviewer_information.html

@@ -13,7 +13,15 @@
             <div class="panel panel-default">
                 <div class="panel-body">
                     <h2 class="page-header">Personal information of edit and reviewer</h2>
-                    {if condition="$user_role_count == 0"}
+                    {if condition="$user_role"}
+                        {if condition="$user_role.is_adopt == 'fault'"}
+                            <p class="text-danger">Status:Fault</p>
+                        {/if}
+                        {if condition="$user_role.is_adopt == 'review'"}
+                            <p class="text-warning">Status:Review</p>
+                        {/if}
+                    {/if}
+                    {if condition="!$user_role || $user_role.is_adopt == 'fault' || $user_role.is_adopt == 'correct'"}
                     <form id="reviewer-information-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="{:url('api/user/apply_role?type=review')}">
                         {:token()}
 
@@ -114,6 +122,7 @@
                         </div>
                     </form>
                     {else}
+                    Information is currently under review.
                     {/if}
                 </div>
             </div>

+ 40 - 8
application/index/view/user/special_issue.html

@@ -20,6 +20,23 @@
                     <form id="submit-issue-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="{:url('api/user/submit_issue')}">
                         {:token()}
                         <div class="form-item">
+                            <div class="form-group">
+                                <label class="control-label col-xs-12 col-sm-4">
+                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Image:
+                                </label>
+                                <div class="col-xs-12 col-sm-8">
+                                    <div class="input-group">
+                                        <input id="c-image" data-rule="required" class="form-control" name="row[image]" type="text" value="{$row.image}">
+                                        <div class="input-group-addon no-border no-padding">
+                                            <span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-maxsize="4M" data-input-id="c-image" data-multiple="true" data-preview-id="p-image"><i class="fa fa-upload"></i> Upload</button></span>
+                                            <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-maxsize="4M" data-input-id="c-image" data-preview-id="p-manuscript-zip" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> Choose</button></span>
+                                            <span class="msg-box n-right" for="c-image"></span>
+                                        </div>
+                                    </div>
+                                    <ul class="row list-inline plupload-preview" id="p-image"></ul>
+                                    <span class="msg-box tf tf-home_button" style="color: #f00;line-height: 25px">Image size:375*655px</span>
+                                </div>
+                            </div>
 
                             <div class="form-group">
                                 <label class="control-label col-xs-12 col-sm-4">
@@ -29,7 +46,7 @@
                                     <select id="c-journal" data-rule="required" class="form-control" name="row[journal]">
                                         <option value="">Please select</option>
                                         {cms:channellist id="channel" type="son" typeid="1"}
-                                        <option value="{$channel.id}">{$channel.name}</option>
+                                        <option value="{$channel.id}" {in name="$channel.id" value="$row.journal" }selected{/in}>{$channel.name}</option>
                                         {/cms:channellist}
                                     </select>
                                 </div>
@@ -40,7 +57,7 @@
                                     <span style="color:#ed534b;margin-right: 10px;">*</span>Special Issue Name:
                                 </label>
                                 <div class="col-xs-12 col-sm-8">
-                                    <input type="text" data-rule="required" class="form-control" id="c-issue_name" name="row[issue_name]" value="" placeholder="Issue name">
+                                    <input type="text" data-rule="required" class="form-control" id="c-issue_name" name="row[issue_name]" value="{$row.issue_name}" placeholder="Issue name">
                                 </div>
                             </div>
 
@@ -49,7 +66,7 @@
                                     Proposal text:
                                 </label>
                                 <div class="col-xs-12 col-sm-8">
-                                    <textarea id="c-proposal_text" class="form-control editor" name="row[proposal_text]" rows="15" placeholder="Type here..."></textarea>
+                                    <textarea id="c-proposal_text" class="form-control editor" name="row[proposal_text]" rows="15" placeholder="Type here...">{$row.proposal_text}</textarea>
                                 </div>
                             </div>
 
@@ -58,7 +75,7 @@
                                     Publication cycle:
                                 </label>
                                 <div class="col-xs-12 col-sm-8">
-                                    <input type="text" class="form-control" id="c-publication_cycle" name="row[publication_cycle]" value="" placeholder="Publication cycle">
+                                    <input type="text" class="form-control" id="c-publication_cycle" name="row[publication_cycle]" value="{$row.publication_cycle}" placeholder="Publication cycle">
                                 </div>
                             </div>
 
@@ -73,7 +90,13 @@
                             </h2>
                             <div class="form-group">
                                 <div class="form-group editor-hidden-content">
-
+                                    {foreach name="row.editor" item="editor"}
+                                    <input type="hidden" name="row[editor][{$key}][email]" value="{$editor->email}">
+                                    <input type="hidden" name="row[editor][{$key}][first_name]" value="{$editor->first_name}">
+                                    <input type="hidden" name="row[editor][{$key}][last_name]" value="{$editor->last_name}">
+                                    <input type="hidden" name="row[editor][{$key}][affiliation]" value="{$editor->affiliation}">
+                                    <input type="hidden" name="row[editor][{$key}][record_link]" value="{$editor->record_link}">
+                                    {/foreach}
                                 </div>
 
                                 <div class="col-xs-12 col-sm-12">
@@ -90,6 +113,16 @@
                                             </tr>
                                             </thead>
                                             <tbody class="tbody">
+                                            {foreach name="row.editor" item="editor"}
+                                            <tr>
+                                                <td>{$editor->email}</td>
+                                                <td>{$editor->first_name}</td>
+                                                <td>{$editor->last_name}</td>
+                                                <td>{$editor->affiliation}</td>
+                                                <td>{$editor->record_link}</td>
+                                                <td class="recommended-del" data-index="{$key}"><a href="#">删除</a></td>
+                                            </tr>
+                                            {/foreach}
                                             </tbody>
                                         </table>
                                     </div>
@@ -107,8 +140,8 @@
                                 <div class="col-xs-12 col-sm-8">
                                     <div class="input-group mb-3">
                                         <div class="radio radio-inline pl-0" style="display: flex;flex-direction: column;">
-                                            <label for="statement-type-yes"><input id="statement-type-yes" name="row[statement_type]" type="radio" value="yes" data-tip="" />I declare that no guest editor has a conflict of interest</label>
-                                            <label for="statement-type-no"><input id="statement-type-no" name="row[statement_type]" type="radio" value="no" data-tip="" />One or more editors have conflicts </label>
+                                            <label for="statement-type-yes"><input id="statement-type-yes" name="row[statement_type]" type="radio" value="yes" {if condition="$row.statement_type == 'yes'" }checked{/if} />I declare that no guest editor has a conflict of interest</label>
+                                            <label for="statement-type-no"><input id="statement-type-no" name="row[statement_type]" type="radio" value="no" {if condition="$row.statement_type == 'no'" }checked{/if} />One or more editors have conflicts </label>
                                         </div>
                                     </div>
                                 </div>
@@ -120,7 +153,6 @@
                             <label class="control-label col-xs-12 col-sm-4"></label>
                             <div class="col-xs-12 col-sm-8">
                                 <button type="submit" class="btn btn-primary btn-embossed disabled">Submit</button>
-                                <button type="reset" class="btn btn-default btn-embossed">Reset</button>
                             </div>
                         </div>
                     </form>

+ 119 - 0
application/index/view/user/special_issue_list.html

@@ -0,0 +1,119 @@
+<style>
+    .profile-avatar-container {
+        position:relative;
+        width:100px;
+    }
+    .profile-avatar-container .profile-user-img{
+        width:100px;
+        height:100px;
+    }
+    .profile-avatar-container .profile-avatar-text {
+        display:none;
+    }
+    .profile-avatar-container:hover .profile-avatar-text {
+        display:block;
+        position:absolute;
+        height:100px;
+        width:100px;
+        background:#444;
+        opacity: .6;
+        color: #fff;
+        top:0;
+        left:0;
+        line-height: 100px;
+        text-align: center;
+    }
+    .profile-avatar-container button{
+        position:absolute;
+        top:0;left:0;width:100px;height:100px;opacity: 0;
+    }
+</style>
+<link href="__CDN__/assets/css/user/display_submitted.css?v={$Think.config.site.version|htmlentities}" rel="stylesheet">
+<div class="common-bg">
+    <div class="common-font">
+        Special Issue List
+    </div>
+</div>
+<div id="content-container" class="container">
+    <div class="row">
+        <div class="col-md-3">
+            {include file="common/sidenav" /}
+        </div>
+        <div class="col-md-9">
+            <div class="panel panel-default">
+                <div class="panel-body">
+                    <h2 class="page-header">
+                        Special Issue List
+
+                        <div class="col-xs-12 col-sm-4" style="float:right">
+                            <input type="text" class="form-control" id="c-search" name="search" value="" placeholder="Enter content for search">
+                        </div>
+                    </h2>
+
+                    <nav aria-label="breadcrumb" class="breadcrumb-content">
+                        <ol class="breadcrumb">
+                            <li class="breadcrumb-item <?php if($status == '') echo 'active'; ?>"><a href="?status=">All</a></li>
+                            <li class="breadcrumb-item <?php if($status == 'review') echo 'active'; ?>"><a href="?status=review">Review</a></li>
+                            <li class="breadcrumb-item <?php if($status == 'correct') echo 'active'; ?>"><a href="?status=correct">Correct</a></li>
+                            <li class="breadcrumb-item <?php if($status == 'fault') echo 'active'; ?>"><a href="?status=fault">Fault</a></li>
+                        </ol>
+                    </nav>
+
+                    <div class="row">
+                        <div class="col-md-12 col-sm-12">
+                            <div class="tab-inner" style="background:#fff;">
+                                <div class="article-list">
+                                    {foreach name="list" item="vo"}
+                                    <article class="article-item">
+                                        <div class="media">
+                                            <div class="media-left">
+                                                <a href="special_issue?id={$vo.id}">
+                                                    <div class="embed-responsive embed-responsive-4by3 img-zoom p-0">
+                                                        <img src="{$vo.image}">
+                                                    </div>
+                                                </a>
+                                            </div>
+                                            <div class="media-body">
+                                                <h3 class="article-title">
+                                                    <a href="special_issue?id={$vo.id}">{$vo.issue_name}</a>
+                                                    <div class="article-title-id">
+                                                        ID:{$vo.id}
+                                                    </div>
+                                                </h3>
+                                                <div class="article-intro">
+                                                    <span class="label label-info article-intro-label">{$vo.journal}</span>
+                                                </div>
+                                                <div class="article-tag">
+                                                    <div itemprop="date">Submission date:{$vo.createtime}</div>
+                                                </div>
+                                                <div class="article-tag">
+                                                    <div class="article-read">
+                                                        <a href="special_issue?id={$vo.id}" style="color: #007bff;" target="_blank">
+                                                            <img src="__CDN__/assets/img/index/personal_data_icon.png" alt="">
+                                                            Edit
+                                                        </a>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </article>
+                                    {/foreach}
+                                </div>
+
+                                <!--@formatter:off-->
+
+                                <!-- S 分页栏 -->
+                                <div class="pager">
+                                    {$list->render()}
+                                </div>
+                                <!-- E 分页栏 -->
+                                <!--@formatter:on-->
+
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>

+ 12 - 131
application/index/view/user/submit_manuscript.html

@@ -29,6 +29,7 @@
     }
 </style>
 <link href="__CDN__/assets/css/user/submit_manuscript.css?v={$Think.config.site.version|htmlentities}" rel="stylesheet">
+<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
 <div class="common-bg pt-4">
     <div class="common-font" style="position: static;transform: none">
         Author Menu
@@ -151,7 +152,7 @@
 
                         <div class="header-button-content author-button" style="display: none">
                             <div class="author-button-item">
-                                <div class="header-button-item" style="margin-right: 70px">
+                                <div class="header-button-item" style="margin-right: 5px">
                                     + Add Author
                                 </div>
                             </div>
@@ -159,7 +160,7 @@
                     </div>
 
                     {if condition="$user.workplace != '' && $user.job_type != '' && $user.title != '' && $user.first_name != '' && $user.last_name != '' && $user.affiliation != '' && $user.address != '' && $user.zip_code != ''"}
-                    <form id="submit-manuscript-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="{:url('api/user/manummscript')}">
+                    <form id="submit-manuscript-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="{:url('api/user/submit_manuscript')}">
                         {:token()}
                         <input id="c-manuscript_id" type="hidden" name="row[id]" value="{$row.id}">
                         <div class="form-item manuscript-content">
@@ -368,14 +369,12 @@
                         </div>
 
                         <!-- 作者信息 -->
-                        <div class="form-item add-author-content" style="display: none">
+                        <div class="form-item add-author-content" id="box" style="display: none">
                             {if condition="!$row.id"}
-                            <div class="add-author-item">
-                                <div class="form-group">
-                                    <label class="control-label col-xs-12 col-sm-9">
-                                    </label>
-                                    <div class="author-delete-button text-delete-button mb-3 col-xs-12 col-sm-3">
-                                        - Delete
+                            <div class="add-author-item pt-4">
+                                <div class="form-group author-content-button-item">
+                                    <div class="author-delete-button text-delete-button">
+                                        <i class="fa fa-trash"></i> Delete
                                     </div>
                                 </div>
                                 <div class="form-group">
@@ -423,7 +422,7 @@
                                     <div class="col-xs-12 col-sm-8">
                                         <div class="input-group mb-3">
                                             <div class="radio radio-inline pl-0">
-                                                <label for="c-e-mail-yes"><input data-rule="required" id="c-e-mail-yes" name="row[author][0][display_email]" type="radio" value="yes"/>Yes</label>
+                                                <label for="c-e-mail-yes"><input data-rule="required" id="c-e-mail-yes" name="row[author][0][display_email]" type="radio" value="yes" checked/>Yes</label>
                                                 <label for="c-e-mail-no"><input data-rule="required" id="c-e-mail-no" name="row[author][0][display_email]" type="radio" value="no"/>No</label>
                                             </div>
                                         </div>
@@ -436,7 +435,7 @@
                                     <div class="col-xs-12 col-sm-8">
                                         <div class="input-group mb-3">
                                             <div class="radio radio-inline pl-0">
-                                                <label for="c-correspondsing-author-yes"><input data-rule="required" id="c-correspondsing-author-yes" name="row[author][0][correspondsing_author]" type="radio" value="yes"/>Yes</label>
+                                                <label for="c-correspondsing-author-yes"><input data-rule="required" id="c-correspondsing-author-yes" name="row[author][0][correspondsing_author]" type="radio" value="yes" checked/>Yes</label>
                                                 <label for="c-correspondsing-author-no"><input data-rule="required" id="c-correspondsing-author-no" name="row[author][0][correspondsing_author]" type="radio" value="no" />No</label>
                                             </div>
                                         </div>
@@ -474,7 +473,7 @@
                                     <label class="control-label col-xs-12 col-sm-9">
                                     </label>
                                     <div class="author-delete-button text-delete-button mb-3 col-xs-12 col-sm-3">
-                                        - Delete
+                                        <i class="fa fa-trash"></i> Delete
                                     </div>
                                 </div>
                                 <div class="form-group">
@@ -746,124 +745,6 @@
                             </div>
                         </div>
 
-                        <div class="form-item author-content" style="display: none">
-                            <h2 class="page-header">Corresponding author information</h2>
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-3">
-                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Country/Temitory:
-                                </label>
-                                <div class="col-xs-12 col-sm-8">
-                                    <select id="c-country" data-rule="required" class="form-control" name="row[country]">
-                                        <option value="">Please select</option>
-                                        {foreach name="site.country" item="vo"}
-                                        <option value="{$key}" {in name="key" value="$row.country" }selected{/in}>{$vo}</option>
-                                        {/foreach}
-                                    </select>
-                                </div>
-                            </div>
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-3">
-                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Affiliation:
-                                </label>
-                                <div class="col-xs-12 col-sm-8">
-                                    <input type="text" data-rule="required" class="form-control" id="c-affiliation" name="row[affiliation]" value="{$row.affiliation|htmlentities}" placeholder="Type here...">
-                                    <div class="input-group-addon no-border no-padding">
-                                        <span class="msg-box n-right" for="c-affiliation"></span>
-                                    </div>
-                                </div>
-                            </div>
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-3">
-                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Name:
-                                </label>
-                                <div class="col-xs-12 col-sm-8">
-                                    <input type="text" data-rule="required" class="form-control" id="c-name" name="row[name]" value="{$row.name|htmlentities}" placeholder="Type here...">
-                                    <div class="input-group-addon no-border no-padding">
-                                        <span class="msg-box n-right" for="c-name"></span>
-                                    </div>
-                                </div>
-                            </div>
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-3">
-                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Invoice Email:
-                                </label>
-                                <div class="col-xs-12 col-sm-8">
-                                    <input type="text" data-rule="required" class="form-control" id="c-invoice-email" name="row[invoice_email]" value="{$row.invoice_email|htmlentities}" placeholder="Type here...">
-                                    <div class="input-group-addon no-border no-padding">
-                                        <span class="msg-box n-right" for="c-invoice-email"></span>
-                                    </div>
-                                </div>
-                            </div>
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-3">
-                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Order Email:
-                                </label>
-                                <div class="col-xs-12 col-sm-8">
-                                    <input type="text" data-rule="required" class="form-control" id="c-order-email" name="row[order_email]" value="{$row.order_email|htmlentities}" placeholder="Type here...">
-                                    <div class="input-group-addon no-border no-padding">
-                                        <span class="msg-box n-right" for="c-order-email"></span>
-                                    </div>
-                                </div>
-                            </div>
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-3">
-                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Address:
-                                </label>
-                                <div class="col-xs-12 col-sm-8">
-                                    <input type="text" data-rule="required" class="form-control" id="c-address" name="row[address]" value="{$row.address|htmlentities}" placeholder="Type here...">
-                                    <div class="input-group-addon no-border no-padding">
-                                        <span class="msg-box n-right" for="c-address"></span>
-                                    </div>
-                                </div>
-                            </div>
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-3">
-                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Zip Code:
-                                </label>
-                                <div class="col-xs-12 col-sm-8">
-                                    <input type="text" data-rule="required" class="form-control" id="c-zip-code" name="row[zip_code]" value="{$row.zip_code|htmlentities}" placeholder="Type here...">
-                                    <div class="input-group-addon no-border no-padding">
-                                        <span class="msg-box n-right" for="c-zip-code"></span>
-                                    </div>
-                                </div>
-                            </div>
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-3">
-                                    <span style="color:#ed534b;margin-right: 10px;">*</span>City:
-                                </label>
-                                <div class="col-xs-12 col-sm-8">
-                                    <input type="text" data-rule="required" class="form-control" id="c-city" name="row[city]" value="{$row.city|htmlentities}" placeholder="Type here...">
-                                    <div class="input-group-addon no-border no-padding">
-                                        <span class="msg-box n-right" for="c-city"></span>
-                                    </div>
-                                </div>
-                            </div>
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-3">
-                                    Telephone:
-                                </label>
-                                <div class="col-xs-12 col-sm-8">
-                                    <input type="text" class="form-control" id="c-telephone" name="row[telephone]" value="{$row.telephone|htmlentities}" placeholder="Type here...">
-                                </div>
-                            </div>
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-3">
-                                    Fax:
-                                </label>
-                                <div class="col-xs-12 col-sm-8">
-                                    <input type="text" class="form-control" id="c-fax" name="row[fax]" value="{$row.fax|htmlentities}" placeholder="Type here...">
-                                </div>
-                            </div>
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-3">
-                                    VAT:
-                                </label>
-                                <div class="col-xs-12 col-sm-8">
-                                    <input type="text" class="form-control" id="c-vat" name="row[vat]" value="{$row.vat|htmlentities}" placeholder="Type here...">
-                                </div>
-                            </div>
-                        </div>
-
                         <div class="form-group normal-footer">
                             <label class="control-label col-xs-12 col-sm-4"></label>
                             <div class="col-xs-12 col-sm-8">
@@ -951,7 +832,7 @@
                             <label class="control-label col-xs-12 col-sm-11">
                             </label>
                             <div class="reviewer-delete-button text-delete-button mb-3 col-xs-12 col-sm-1">
-                                - Delete
+                                <i class="fa fa-trash"></i> Delete
                             </div>
                         </div>
                         <div class="form-group">

+ 27 - 0
public/assets/css/user/submit_manuscript.css

@@ -145,10 +145,37 @@
     font-weight: 600;
 }
 .text-delete-button {
+    z-index: 50;
     padding-left: 30px;
     font-size: 14px;
     color: #497BFF;
     letter-spacing: 0.16px;
     font-weight: 400;
     cursor: pointer;
+}
+.div-dash {
+    position: absolute;
+    width: 700px;
+    height: 520px;
+    border: 1px solid black;
+    opacity: 0.7;
+}
+.dash {
+    width: 700px;
+    height: 520px;
+    border: 1px dashed #f00;
+}
+.author-content-button-item {
+    padding-right:20px;
+    display: flex;
+    justify-content: flex-end;
+}
+ul {
+    list-style-type: none;
+}
+.add-author-content {
+    position: relative;
+}
+.add-author-item {
+    z-index: 1;
 }

BIN
public/assets/img/.DS_Store


BIN
public/assets/img/index/author-sort.png


+ 10 - 10
public/assets/js/backend/cms/archives.js

@@ -111,11 +111,11 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function
                                 return '<a href="javascript:"><img class="' + classname + '" src="' + Fast.api.cdnurl(value) + '" /></a>';
                             }
                         },
-                        {
-                            field: 'price', title: __('Price'), operate: 'BETWEEN', sortable: true, formatter: function (value, row, index) {
-                                return parseFloat(value) > 0 ? "<span class='text-danger'>" + value + "</span>" : value;
-                            }
-                        },
+                        // {
+                        //     field: 'price', title: __('Price'), operate: 'BETWEEN', sortable: true, formatter: function (value, row, index) {
+                        //         return parseFloat(value) > 0 ? "<span class='text-danger'>" + value + "</span>" : value;
+                        //     }
+                        // },
                         {
                             field: 'spiders', title: __('Spiders'), visible: Config.spiderRecord || false, operate: false, formatter: function (value, row, index) {
                                 if (!$.isArray(value) || value.length === 0) {
@@ -137,11 +137,11 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function
                             }
                         },
                         {field: 'views', title: __('Views'), operate: 'BETWEEN', sortable: true},
-                        {
-                            field: 'comments', title: __('Comments'), operate: 'BETWEEN', sortable: true, formatter: function (value, row, index) {
-                                return '<a href="javascript:" data-url="cms/comment/index?type=archives&aid=' + row['id'] + '" title="评论列表" class="dialogit">' + value + '</a>';
-                            }
-                        },
+                        // {
+                        //     field: 'comments', title: __('Comments'), operate: 'BETWEEN', sortable: true, formatter: function (value, row, index) {
+                        //         return '<a href="javascript:" data-url="cms/comment/index?type=archives&aid=' + row['id'] + '" title="评论列表" class="dialogit">' + value + '</a>';
+                        //     }
+                        // },
                         {field: 'weigh', title: __('Weigh'), operate: false, sortable: true},
                         {
                             field: 'createtime',

+ 0 - 8
public/assets/js/backend/cms/manuscript.js

@@ -38,14 +38,6 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         {field: 'user.nickname', title: __('User_id'), 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: 'country', title: __('Country'), operate: 'like'},
-                        {field: 'affiliation', title: __('Affiliation'), operate: 'like'},
-                        {field: 'name', title: __('Name'), operate: 'like'},
-                        {field: 'invoice_email', title: __('Invoice email'), operate: 'like'},
-                        {field: 'order_email', title: __('Order email'), operate: 'like'},
-                        {field: 'address', title: __('Address'), operate: 'like'},
-                        {field: 'zip_code', title: __('Zip code'), operate: 'like'},
-                        {field: 'city', title: __('City'), operate: 'like'},
                         {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},
                         {

+ 41 - 0
public/assets/js/backend/cms/special_issue.js

@@ -36,6 +36,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         {field: 'issue_name', title: __('Issue name'), operate: false},
                         {field: 'publication_cycle', title: __('Publication cycle'), operate: false},
                         {field: 'statement_type', title: __('Statement type'), operate: false},
+                        {field: 'status', title: __('Status'), searchList: {"review": __('Review'), "Fault": __('Fault'), "Correct": __('Correct')}, formatter: Table.api.formatter.status},
                         {field: 'createtime', title: __('Createtime'), sortable: true, operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
                         {
                             field: 'operate',
@@ -49,6 +50,46 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                                 that.table = table;
                                 return Table.api.formatter.operate.call(that, value, row, index);
                             },
+                            buttons:[
+                                {
+                                    name: 'pass',
+                                    text: __('Correct'),
+                                    title: __('Correct'),
+                                    classname: 'btn btn-xs btn-success btn-view btn-ajax',
+                                    icon: 'fa fa-check',
+                                    url: function (row) {
+                                        return 'cms/special_issue/is_adopt?status=correct&ids=' + row.id;
+                                    },
+                                    visible: function(row){
+                                        if(row.status == 'fault' || row.status == 'review'){
+                                            return true; //显示
+                                        } else {
+                                            return false; //隐藏
+                                        }
+                                    },
+                                    refresh: true
+                                },
+                                {
+                                    name: 'fault',
+                                    text: __('Fault'),
+                                    title: __('Fault'),
+                                    classname: 'btn btn-xs btn-danger btn-view btn-ajax',
+                                    icon: 'fa fa-times',
+                                    url: function (row) {
+                                        return 'cms/special_issue/is_adopt?status=fault&ids=' + row.id;
+                                    },
+                                    visible: function(row){
+                                        if(row.status == 'fault'){
+                                            return false; //不显示
+                                        } else if (row.status == 'review') {
+                                            return true;
+                                        } else {
+                                            return true;
+                                        }
+                                    },
+                                    refresh: true
+                                }
+                            ]
                         }
                     ]
                 ]

+ 423 - 175
public/assets/js/frontend/user.js

@@ -256,18 +256,18 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
             });
         },
         submit_manuscript: function () {
-            $(document).ready(function () {
-                // 初始化分页参数
-                var currentPage = 1;
-                var pageSize = 10;
-
-                var index = 0;
-                var is_next = false;
-                var button_next = false;
+            // 初始化分页参数
+            var currentPage = 1;
+            var pageSize = 10;
 
-                var manuscript_id = $("#c-manuscript_id").val();
-                console.log(manuscript_id);
+            var index = 0;
+            var is_next = false;
+            var button_next = false;
+            var manuscript_id = $("#c-manuscript_id").val();
 
+            var custom_mousemove_x = 490;
+            var custom_mousemove_y = 350;
+            $(document).ready(function () {
                 // 下一步按钮
                 $('.next-button').on('click', function () {
                     // 规则验证
@@ -307,8 +307,12 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                             $('.submit-button').css('display', 'block');
                             $(".manuscript-content").show();
                             $(".journal-content").show();
-                            $(".author-content").show();
+                            $(".add-author-content").show();
                             $('.recommended-button').hide();
+
+                            // 最后一步设置鼠标移动时div的x与y轴的减少距离
+                            custom_mousemove_x = 500;
+                            custom_mousemove_y = 2000;
                         } else if (index == 4) {
                             $('.recommended-button').show();
                             $(".form-item").hide();
@@ -348,8 +352,12 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                             $('.submit-button').css('display', 'block');
                             $(".manuscript-content").show();
                             $(".journal-content").show();
-                            $(".author-content").show();
+                            $(".add-author-content").show();
                             $('.recommended-button').hide();
+
+                            // 最后一步设置鼠标移动时div的x与y轴的减少距离
+                            custom_mousemove_x = 500;
+                            custom_mousemove_y = 2000;
                         } else if (li_index == 4) {
                             $('.recommended-button').show();
                             $(".form-item").hide();
@@ -388,8 +396,12 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                                 $('.submit-button').css('display', 'block');
                                 $(".manuscript-content").show();
                                 $(".journal-content").show();
-                                $(".author-content").show();
+                                $(".add-author-content").show();
                                 $('.recommended-button').hide();
+
+                                // 最后一步设置鼠标移动时div的x与y轴的减少距离
+                                custom_mousemove_x = 500;
+                                custom_mousemove_y = 2000;
                             } else if (li_index == 4) {
                                 $('.recommended-button').show();
                                 $(".form-item").hide();
@@ -416,131 +428,6 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                     }
                 });
 
-                // 添加作者
-                $('.author-button').click(function () {
-                    let input_index = $('.add-author-content').children('.add-author-item').length;
-                    // let input_index = author_content_length - 1;
-                    // 克隆作者信息
-                    let str = `
-                              <div class="add-author-item">
-                                <hr style="background: #B8B8B8;">
-                                
-                                <div class="form-group">
-                                  <label class="control-label col-xs-12 col-sm-9">
-                                  </label>
-                                  
-                                  <div class="author-delete-button mb-3 col-xs-12 col-sm-3">
-                                    - Delete
-                                  </div>  
-                                </div>
-                                
-                                <div class="form-group">
-                                  <label class="control-label col-xs-12 col-sm-4">
-                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Institution E-Mail Address:
-                                  </label>
-                                  <div class="col-xs-12 col-sm-8">
-                                    <input type="text" data-rule="required" class="form-control" id="c-email" name="row[author][${input_index}][email]" value="" placeholder="Type here...">
-                                    
-                                    <div class="input-group-addon no-border no-padding">
-                                      <span class="msg-box n-right" for="c-email"></span>
-                                    </div>
-                                  </div>
-                                </div>
-                            
-                                <div class="form-group">
-                                  <label class="control-label col-xs-12 col-sm-4">  
-                                    <span style="color:#ed534b;margin-right: 10px;">*</span>First Name:
-                                  </label>
-                                  <div class="col-xs-12 col-sm-8">
-                                    <input type="text" data-rule="required" class="form-control" id="c-first-name" name="row[author][${input_index}][first_name]" value="" placeholder="Type here...">
-                                    
-                                    <div class="input-group-addon no-border no-padding">
-                                      <span class="msg-box n-right" for="c-first_name"></span>
-                                    </div>
-                                  </div>
-                                </div>
-                            
-                                <div class="form-group">
-                                  <label class="control-label col-xs-12 col-sm-4">
-                                    Middle Name:
-                                  </label>
-                                  <div class="col-xs-12 col-sm-8">  
-                                    <input type="text" class="form-control" id="c-middle-name" name="row[author][${input_index}][middle_name]" value="" placeholder="Type here...">
-                                  </div>
-                                </div>
-                            
-                                <div class="form-group">
-                                  <label class="control-label col-xs-12 col-sm-4">
-                                    Last Name:
-                                  </label>
-                                  <div class="col-xs-12 col-sm-8">
-                                    <input type="text" class="form-control" id="c-last-name" name="row[author][${input_index}][last_name]" value="" placeholder="Type here...">
-                                  </div>
-                                </div>
-                            
-                                <div class="form-group">
-                                  <label class="control-label col-xs-12 col-sm-4">
-                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Display E-Mail:
-                                  </label>
-                                  <div class="col-xs-12 col-sm-8">
-                                    <div class="input-group mb-3">
-                                      <div class="radio radio-inline pl-0">
-                                        <label for="c-display-e-mail-yes-${input_index}"><input data-rule="required" id="c-display-e-mail-yes-${input_index}" name="row[author][${input_index}][display_email]" type="radio" value="yes" data-tip="" checked/>Yes</label>
-                                        <label for="c-display-e-mail-no-${input_index}"><input data-rule="required" id="c-display-e-mail-no-${input_index}" name="row[author][${input_index}][display_email]" type="radio" value="no" data-tip="" />No</label>
-                                      </div>
-                                    </div>
-                                  </div>
-                                </div>
-                            
-                                <div class="form-group">
-                                  <label class="control-label col-xs-12 col-sm-4">
-                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Correspondsing Author:
-                                  </label>
-                                  <div class="col-xs-12 col-sm-8">
-                                    <div class="input-group mb-3">
-                                      <div class="radio radio-inline pl-0">
-                                        <label for="c-correspondsing-author-yes-${input_index}"><input data-rule="required" id="c-correspondsing-author-yes-${input_index}" name="row[author][${input_index}][correspondsing_author]" type="radio" value="yes" checked/>Yes</label>
-                                        <label for="c-correspondsing-author-no-${input_index}"><input data-rule="required" id="c-correspondsing-author-no-${input_index}" name="row[author][${input_index}][correspondsing_author]" type="radio" value="no" />No</label>
-                                      </div>
-                                    </div>
-                                  </div>
-                                </div>
-                            
-                                <div class="form-group">
-                                  <label class="control-label col-xs-12 col-sm-4">
-                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Affiliation:
-                                  </label>
-                                  <div class="col-xs-12 col-sm-8">
-                                    <input data-rule="required" type="text" class="form-control" id="c-author-affiliation" name="row[author][${input_index}][author_affiliation]" value="" placeholder="Type here...">
-                                    
-                                    <div class="input-group-addon no-border no-padding">
-                                      <span class="msg-box n-right" for="c-author-affiliation"></span>
-                                    </div>
-                                  </div> 
-                                </div>
-                            
-                                <div class="form-group">
-                                  <label class="control-label col-xs-12 col-sm-4">
-                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Country / Temitory:  
-                                  </label>
-                                  <div class="col-xs-12 col-sm-8">
-                                    <select id="c-author_country" data-rule="required" class="form-control" name="row[author][${input_index}][author_country]">
-                                      <option value="">Please select</option>
-                                      <option value="china">china</option>
-                                      <option value="japan">japan</option>
-                                      <option value="england">england</option>
-                                    </select>
-                                  </div>
-                                </div>
-                                
-                              </div>
-                            `;
-                    $('.add-author-content').append(str);
-
-                    // 更新 name 值为按顺序增加的索引值
-                    updateInputNames();
-                });
-
                 // 删除对应作者信息
                 $(document).on('click', '.author-delete-button', function () {
                     let author_content_length = $('.add-author-content').children('.add-author-item').length;
@@ -552,36 +439,6 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                     }
                 });
 
-                // 排序input 的 name 值
-                var updateInputNames = function () {
-                    // 遍历所有的div元素
-                    $(".add-author-item").each(function (index) {
-                        var email_input = $(this).find('input[id="c-email"]');
-                        var first_name_input = $(this).find('input[id="c-first-name"]');
-                        var middle_name_input = $(this).find('input[id="c-middle-name"]');
-                        var last_name_input = $(this).find('input[id="c-last-name"]');
-                        var author_affiliation_input = $(this).find('input[id="c-author-affiliation"]');
-                        var display_email_yes_radio = $(this).find("input[type=radio][id=c-display-e-mail-yes]");
-                        var display_email_no_radio = $(this).find("input[type=radio][id=c-display-e-mail-no]");
-                        var correspondsing_author_yes_radio = $(this).find("input[type=radio][id=c-correspondsing-author-yes]");
-                        var correspondsing_author_no_radio = $(this).find("input[type=radio][id=c-correspondsing-author-no]");
-                        var select = $(this).find("select");
-
-                        email_input.attr('name', "row[author]["+ index +"][email]");
-                        first_name_input.attr('name', "row[author]["+ index +"][first_name]");
-                        middle_name_input.attr('name', "row[author]["+ index +"][middle_name]");
-                        last_name_input.attr('name', "row[author]["+ index +"][last_name]");
-                        author_affiliation_input.attr('name', "row[author]["+ index +"][author_affiliation]");
-
-                        display_email_yes_radio.attr('name', "row[author]["+ index +"][display_email]");
-                        display_email_no_radio.attr('name', "row[author]["+ index +"][display_email]");
-                        correspondsing_author_yes_radio.attr('name', "row[author]["+ index +"][correspondsing_author]");
-                        correspondsing_author_no_radio.attr('name', "row[author]["+ index +"][correspondsing_author]");
-
-                        select.attr('name', "row[author]["+ index +"][author_country]");
-                    });
-                };
-
                 // 审稿人列表按钮
                 $(document).on('click', '.reviewer-list-button', function () {
                     let selected_id = [];
@@ -770,7 +627,7 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                         '                            <label class="control-label col-xs-12 col-sm-11">\n' +
                         '                            </label>\n' +
                         '                            <div class="reviewer-delete-button text-delete-button mb-3 col-xs-12 col-sm-1">\n' +
-                        '                                - Delete\n' +
+                        '                                <i class="fa fa-trash"></i> Delete\n' +
                         '                            </div>\n' +
                         '                        </div>\n' +
                         '                        <div class="form-group">\n' +
@@ -926,7 +783,7 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                         '                            <label class="control-label col-xs-12 col-sm-11">\n' +
                         '                            </label>\n' +
                         '                            <div class="reviewer-delete-button text-delete-button mb-3 col-xs-12 col-sm-1">\n' +
-                        '                                - Delete\n' +
+                        '                                <i class="fa fa-trash"></i> Delete\n' +
                         '                            </div>\n' +
                         '                        </div>\n' +
                         '                        <div class="form-group">\n' +
@@ -1033,10 +890,334 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                     return pageHtml;
                 }
             });
+            // 添加作者
+            $('.author-button').click(function () {
+                let input_index = $('.add-author-content').children('.add-author-item').length;
+                // let input_index = author_content_length - 1;
+                // 克隆作者信息
+                let str = `<div class="add-author-item div">
+                                <hr style="background: #B8B8B8;">
+                                <div class="form-group author-content-button-item">
+                                    <div class="author-delete-button text-delete-button">
+                                        <i class="fa fa-trash"></i> Delete
+                                    </div>
+                                </div>
+                                <div class="form-group">
+                                  <label class="control-label col-xs-12 col-sm-4">
+                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Institution E-Mail Address:
+                                  </label>
+                                  <div class="col-xs-12 col-sm-8">
+                                    <input type="text" data-rule="required" class="form-control" id="c-email" name="row[author][${input_index}][email]" value="" placeholder="Type here...">
+                                    
+                                    <div class="input-group-addon no-border no-padding">
+                                      <span class="msg-box n-right" for="c-email"></span>
+                                    </div>
+                                  </div>
+                                </div>
+                            
+                                <div class="form-group">
+                                  <label class="control-label col-xs-12 col-sm-4">  
+                                    <span style="color:#ed534b;margin-right: 10px;">*</span>First Name:
+                                  </label>
+                                  <div class="col-xs-12 col-sm-8">
+                                    <input type="text" data-rule="required" class="form-control" id="c-first-name" name="row[author][${input_index}][first_name]" value="" placeholder="Type here...">
+                                    
+                                    <div class="input-group-addon no-border no-padding">
+                                      <span class="msg-box n-right" for="c-first_name"></span>
+                                    </div>
+                                  </div>
+                                </div>
+                            
+                                <div class="form-group">
+                                  <label class="control-label col-xs-12 col-sm-4">
+                                    Middle Name:
+                                  </label>
+                                  <div class="col-xs-12 col-sm-8">  
+                                    <input type="text" class="form-control" id="c-middle-name" name="row[author][${input_index}][middle_name]" value="" placeholder="Type here...">
+                                  </div>
+                                </div>
+                            
+                                <div class="form-group">
+                                  <label class="control-label col-xs-12 col-sm-4">
+                                    Last Name:
+                                  </label>
+                                  <div class="col-xs-12 col-sm-8">
+                                    <input type="text" class="form-control" id="c-last-name" name="row[author][${input_index}][last_name]" value="" placeholder="Type here...">
+                                  </div>
+                                </div>
+                            
+                                <div class="form-group">
+                                  <label class="control-label col-xs-12 col-sm-4">
+                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Display E-Mail:
+                                  </label>
+                                  <div class="col-xs-12 col-sm-8">
+                                    <div class="input-group mb-3">
+                                      <div class="radio radio-inline pl-0">
+                                        <label for="c-display-e-mail-yes-${input_index}"><input data-rule="required" id="c-display-e-mail-yes-${input_index}" name="row[author][${input_index}][display_email]" type="radio" value="yes" data-tip="" checked/>Yes</label>
+                                        <label for="c-display-e-mail-no-${input_index}"><input data-rule="required" id="c-display-e-mail-no-${input_index}" name="row[author][${input_index}][display_email]" type="radio" value="no" data-tip="" />No</label>
+                                      </div>
+                                    </div>
+                                  </div>
+                                </div>
+                            
+                                <div class="form-group">
+                                  <label class="control-label col-xs-12 col-sm-4">
+                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Correspondsing Author:
+                                  </label>
+                                  <div class="col-xs-12 col-sm-8">
+                                    <div class="input-group mb-3">
+                                      <div class="radio radio-inline pl-0">
+                                        <label for="c-correspondsing-author-yes-${input_index}"><input data-rule="required" id="c-correspondsing-author-yes-${input_index}" name="row[author][${input_index}][correspondsing_author]" type="radio" value="yes" checked/>Yes</label>
+                                        <label for="c-correspondsing-author-no-${input_index}"><input data-rule="required" id="c-correspondsing-author-no-${input_index}" name="row[author][${input_index}][correspondsing_author]" type="radio" value="no" />No</label>
+                                      </div>
+                                    </div>
+                                  </div>
+                                </div>
+                            
+                                <div class="form-group">
+                                  <label class="control-label col-xs-12 col-sm-4">
+                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Affiliation:
+                                  </label>
+                                  <div class="col-xs-12 col-sm-8">
+                                    <input data-rule="required" type="text" class="form-control" id="c-author-affiliation" name="row[author][${input_index}][author_affiliation]" value="" placeholder="Type here...">
+                                    
+                                    <div class="input-group-addon no-border no-padding">
+                                      <span class="msg-box n-right" for="c-author-affiliation"></span>
+                                    </div>
+                                  </div> 
+                                </div>
+                            
+                                <div class="form-group">
+                                  <label class="control-label col-xs-12 col-sm-4">
+                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Country / Temitory:  
+                                  </label>
+                                  <div class="col-xs-12 col-sm-8">
+                                    <select id="c-author_country" data-rule="required" class="form-control" name="row[author][${input_index}][author_country]">
+                                      <option value="">Please select</option>
+                                      <option value="china">china</option>
+                                      <option value="japan">japan</option>
+                                      <option value="england">england</option>
+                                    </select>
+                                  </div>
+                                </div>
+                            </div>`;
+                $('.add-author-content').append(str);
+
+                // 更新 name 值为按顺序增加的索引值
+                updateInputNames();
+            });
+
+            // 排序input 的 name 值
+            function updateInputNames () {
+                drags('add-author-item', 'div-dash', 'dash');
+
+                // 遍历所有的div元素
+                $(".add-author-item").each(function (index) {
+                    var email_input = $(this).find('input[id="c-email"]');
+                    var first_name_input = $(this).find('input[id="c-first-name"]');
+                    var middle_name_input = $(this).find('input[id="c-middle-name"]');
+                    var last_name_input = $(this).find('input[id="c-last-name"]');
+                    var author_affiliation_input = $(this).find('input[id="c-author-affiliation"]');
+                    var display_email_yes_radio = $(this).find("input[type=radio][id=c-display-e-mail-yes]");
+                    var display_email_no_radio = $(this).find("input[type=radio][id=c-display-e-mail-no]");
+                    var correspondsing_author_yes_radio = $(this).find("input[type=radio][id=c-correspondsing-author-yes]");
+                    var correspondsing_author_no_radio = $(this).find("input[type=radio][id=c-correspondsing-author-no]");
+                    var select = $(this).find("select");
+
+                    email_input.attr('name', "row[author]["+ index +"][email]");
+                    first_name_input.attr('name', "row[author]["+ index +"][first_name]");
+                    middle_name_input.attr('name', "row[author]["+ index +"][middle_name]");
+                    last_name_input.attr('name', "row[author]["+ index +"][last_name]");
+                    author_affiliation_input.attr('name', "row[author]["+ index +"][author_affiliation]");
+
+                    display_email_yes_radio.attr('name', "row[author]["+ index +"][display_email]");
+                    display_email_no_radio.attr('name', "row[author]["+ index +"][display_email]");
+                    correspondsing_author_yes_radio.attr('name', "row[author]["+ index +"][correspondsing_author]");
+                    correspondsing_author_no_radio.attr('name', "row[author]["+ index +"][correspondsing_author]");
+
+                    select.attr('name', "row[author]["+ index +"][author_country]");
+                });
+            };
+
+            // 拖拽初始化
+            drags('add-author-item', 'div-dash', 'dash');
+
+            // 拖拽方法
+            function drags(name, name2, name3) {
+                var range = {x: 0, y: 0}; // 鼠标元素偏移量
+                var lastPos = {x: 0, y: 0, x1: 0, y1: 0}; // 拖拽对象的四个坐标
+                var tarPos = {x: 0, y: 0, x1: 0, y1: 0}; // 目标元素对象的坐标初始化
+                var thidDiv = null, move = false, choose = false; // 拖拽对象 拖拽状态 选中状态
+                //拖拽对象的索引、高度、的初始化。
+                var thidDivWidth = 0, thidDivHeight = 0, thidDivHalfW = 0, thidDivHalfH = 0, tarFirstX = 0, tarFirstY = 0;
+                var tarDiv = null, tarFirst, tempDiv; // 要插入的目标元素的对象, 临时的虚线对象
+                var initPos = {x: 0, y: 0};  // 记录拖拽元素初始鼠标元素偏移量
+
+                // 当鼠标按下时
+                $('.' + name).on('mousedown', function (event) {
+                    console.log(event.target.tagName);
+                    // 判断是否点击了 input 元素
+                    if (event.target.tagName === 'INPUT') {
+                        return;
+                    }
+
+                    if (event.target.tagName === 'SELECT') {
+                        return;
+                    }
+
+                    if (event.target.tagName === 'LABEL') {
+                        return;
+                    }
+
+                    // 判断如果鼠标是删除按钮则终止拖拽
+                    let class_name = event.target.className.split(" ");
+                    if (class_name[0] == 'author-delete-button') {
+                        return;
+                    }
+
+                    choose = true;
+                    // 拖拽对象
+                    thidDiv = $(this);
+                    // 记录拖拽元素初始位置
+                    initPos.x = thidDiv.offset().left;
+                    initPos.y = thidDiv.offset().top;
+                    // 鼠标元素相对偏移量
+                    range.x = event.pageX - thidDiv.offset().left;
+                    range.y = event.pageY - thidDiv.offset().top;
+
+                    thidDivWidth = thidDiv.width();
+                    thidDivHeight = thidDiv.height();
+                    thidDivHalfW = thidDivWidth / 2;
+                    thidDivHalfH = thidDivHeight / 2;
+                    thidDiv.attr("class", name2);
+                    thidDiv.css({
+                        left: (event.pageX + range.x) + 'px',
+                        top: (event.pageY + range.y) + 'px',
+                    });
+
+                    // 创建新元素 插入拖拽元素之前的位置(虚线框)
+                    $("<div class='" + name3 + "' style='float: right;'></div>").insertBefore(thidDiv);
+                    tempDiv = $("." + name3);
+                });
+
+                // 当鼠标抬起时
+                $(document).on('mouseup', function (event) {
+                    if (!choose) {
+                        return false;
+                    }
+
+                    if (!move) {
+                        thidDiv.attr("class", name);
+                        tempDiv.remove(); // 删除新建的虚线div
+                        choose = false;
+                        return false;
+                    }
+
+                    thidDiv.insertBefore(tempDiv); // 拖拽元素插入到 虚线div的位置上
+                    thidDiv.attr("class", name); //恢复对象的初始样式
+                    tempDiv.remove(); // 删除新建的虚线div
+                    move = false;
+                    choose = false;
+
+                    // 当鼠标移动时
+                }).on('mousemove', function (event) {
+
+                    if (!choose) return false;
+
+                    move = true;
+                    lastPos.x = event.pageX - range.x;
+                    lastPos.y = event.pageY - range.y;
+                    lastPos.x1 = lastPos.x + thidDivWidth;
+                    lastPos.y1 = lastPos.y + thidDivHeight;
+                    // 拖拽元素随鼠标移动
+                    thidDiv.css({
+                        left: lastPos.x - custom_mousemove_x + 'px',
+                        top: lastPos.y - custom_mousemove_y + 'px'
+                    });
+                    // 拖拽元素随鼠标移动 查找插入目标元素
+                    var $main = $('.' + name); // 局部变量:按照重新排列过的顺序 再次获取 各个元素的坐标,
+
+                    $main.each(function () {
+
+                        tarDiv = $(this);
+                        tarPos.x = tarDiv.offset().left;
+                        tarPos.y = tarDiv.offset().top;
+                        tarPos.x1 = tarPos.x + tarDiv.width() / 2;
+                        tarPos.y1 = tarPos.y + tarDiv.height() / 2;
+                        tarFirst = $main.eq(0); // 获得第一个元素
+                        tarFirstX = tarFirst.offset().left + thidDivHalfW; // 第一个元素对象的中心纵坐标
+                        tarFirstY = tarFirst.offset().top + thidDivHalfH; // 第一个元素对象的中心横坐标
+
+                        // 根据 拖拽对象x坐标 与 目标元素对象x坐标 对比,来显示 虚线div 在节点前、后出现的位置
+                        if (lastPos.x > tarPos.x) {
+
+                            // 判断要插入目标元素的 坐标后, 直接插入
+                            if (lastPos.x >= tarPos.x - thidDivHalfW && lastPos.x1 >= tarPos.x1 && lastPos.y >= tarPos.y - thidDivHalfH && lastPos.y1 >= tarPos.y1) {
+                                tempDiv.insertAfter(tarDiv);
+                            }
+
+                            //拖拽对象 移动到第一个位置
+                            if (lastPos.x <= tarFirstX && lastPos.y <= tarFirstY) {
+                                tempDiv.insertBefore(tarFirst);
+                            }
+
+                        } else {
+
+                            //拖拽对象 移动到第一个位置
+                            if (lastPos.x <= tarFirstX && lastPos.y <= tarFirstY) {
+                                tempDiv.insertBefore(tarFirst);
+                            }
+
+                            // 判断要插入目标元素的 坐标后, 直接插入
+                            if (lastPos.x >= tarPos.x - thidDivHalfW && lastPos.x1 >= tarPos.x1 && lastPos.y >= tarPos.y - thidDivHalfH && lastPos.y1 >= tarPos.y1) {
+                                tempDiv.insertAfter(tarDiv);
+                            }
+
+                        }
+
+                    });
+                });
+            }
+
+            $.fn.serializeObject = function() {
+                var obj = {};
+                var arrayTmp = this.serializeArray();
+                $.each(arrayTmp, function() {
+                    if (obj[this.name]) {
+                        if (!obj[this.name].push) {
+                            obj[this.name] = [ obj[this.name] ];
+                        }
+                        obj[this.name].push(this.value || '');
+                    } else {
+                        obj[this.name] = this.value || '';
+                    }
+                });
+
+                return obj;
+            };
+
+            $(document).on('mouseup', function () {
+                let values = $('#submit-manuscript-form').serializeObject();
+                $.ajax({
+                    url: '/api/user/incomplete_submit',
+                    type: 'POST',
+                    dataType: 'json',
+                    data: values,
+                    success: function(res) {
+                        // 如果保存了就代表接下来都是修改,所以记录返回的id
+                        if (res.code == 1) {
+                            $('#c-manuscript_id').val(res.data);
+                        }
+                    },
+                    error: function(xhr, status, error) {
+                        top.window.Toastr.error('Save failed');
+                    }
+                });
+            })
 
             Form.api.bindevent($("#submit-manuscript-form"), function () {
                 setTimeout(function () {
-                    location.href = "index/user/display_submitted";
+                    location.href = "/index/user/display_submitted";
                 }, 2000);
             });
         },
@@ -1126,7 +1307,7 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                                         let html = '<article class="article-item">\n' +
                                             '                                        <div class="media">\n' +
                                             '                                            <div class="media-left">\n' +
-                                            '                                                <a href="/wearable/109.html">\n' +
+                                            '                                                <a href="submit_manuscript?id='+ rowData.id +'">\n' +
                                             '                                                    <div class="embed-responsive embed-responsive-4by3 img-zoom">\n' +
                                             '                                                        <img src="'+ rowData.image +'">\n' +
                                             '                                                    </div>\n' +
@@ -1134,7 +1315,7 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                                             '                                            </div>\n' +
                                             '                                            <div class="media-body">\n' +
                                             '                                                <h3 class="article-title">\n' +
-                                            '                                                    <a href="#">'+ rowData.title +'</a>\n' +
+                                            '                                                    <a href="submit_manuscript?id='+ rowData.id +'">'+ rowData.title +'</a>\n' +
                                             '                                                    <div class="article-title-id">\n' +
                                             '                                                        ID:'+ rowData.id +'\n' +
                                             '                                                    </div>\n' +
@@ -1334,7 +1515,7 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                     '                            <label class="control-label col-xs-12 col-sm-11">\n' +
                     '                            </label>\n' +
                     '                            <div class="editor-delete-button text-delete-button mb-3 col-xs-12 col-sm-1">\n' +
-                    '                                - Delete\n' +
+                    '                                <i class="fa fa-trash"></i> Delete\n' +
                     '                            </div>\n' +
                     '                        </div>\n' +
                     '                        <div class="form-group">\n' +
@@ -1474,7 +1655,7 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                     '                            <label class="control-label col-xs-12 col-sm-11">\n' +
                     '                            </label>\n' +
                     '                            <div class="editor-delete-button text-delete-button mb-3 col-xs-12 col-sm-1">\n' +
-                    '                                - Delete\n' +
+                    '                                <i class="fa fa-trash"></i> Delete\n' +
                     '                            </div>\n' +
                     '                        </div>\n' +
                     '                        <div class="form-group">\n' +
@@ -1629,6 +1810,73 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                 // $("input[name=captcha]").next(".input-group-btn").find("img").trigger("click");
             });
         },
+        special_issue_list: function () {
+            // 初始化分页参数
+            var currentPage = 1;
+            var pageSize = 10;
+            $('#c-search').on("keyup", function (e) {
+                if (e.keyCode === 13) {
+                    let keyword = $(this).val();
+                    // 点击回车后进行搜索
+                    $.ajax({
+                        url: 'user/special_issue_list',
+                        type: 'GET',
+                        dataType: 'json',
+                        data: {
+                            page: currentPage,
+                            limit: pageSize,
+                            keyword: keyword,
+                        },
+                        success: function(res) {
+                            if (res.code === 1) {
+                                $('.article-list').html('');
+                                var tableData = res.data.data;
+                                for (var i = 0; i < tableData.length; i++) {
+                                    let rowData = tableData[i];
+                                    let html = '<article class="article-item">\n' +
+                                        '                                        <div class="media">\n' +
+                                        '                                            <div class="media-left">\n' +
+                                        '                                                <a href="special_issue?id='+ rowData.id +'}">\n' +
+                                        '                                                    <div class="embed-responsive embed-responsive-4by3 img-zoom p-0">\n' +
+                                        '                                                        <img src="'+ rowData.image +'">\n' +
+                                        '                                                    </div>\n' +
+                                        '                                                </a>\n' +
+                                        '                                            </div>\n' +
+                                        '                                            <div class="media-body">\n' +
+                                        '                                                <h3 class="article-title">\n' +
+                                        '                                                    <a href="special_issue?id='+ rowData.id +'">'+ rowData.issue_name +'</a>\n' +
+                                        '                                                    <div class="article-title-id">\n' +
+                                        '                                                        ID:'+ rowData.id +'\n' +
+                                        '                                                    </div>\n' +
+                                        '                                                </h3>\n' +
+                                        '                                                <div class="article-intro">\n' +
+                                        '                                                    <span class="label label-info article-intro-label">'+ rowData.journal +'</span>\n' +
+                                        '                                                </div>\n' +
+                                        '                                                <div class="article-tag">\n' +
+                                        '                                                    <div itemprop="date">Submission date:'+ rowData.createtime +'</div>\n' +
+                                        '                                                </div>\n' +
+                                        '                                                <div class="article-tag">\n' +
+                                        '                                                    <div class="article-read">\n' +
+                                        '                                                        <a href="special_issue?id='+ rowData.id +'" style="color: #007bff;">\n' +
+                                        '                                                            <img src="__CDN__/assets/img/index/personal_data_icon.png" alt="">\n' +
+                                        '                                                            Edit\n' +
+                                        '                                                        </a>\n' +
+                                        '                                                    </div>\n' +
+                                        '                                                </div>\n' +
+                                        '                                            </div>\n' +
+                                        '                                        </div>\n' +
+                                        '                                    </article>';
+                                    $('.article-list').append(html);
+                                }
+                            }
+                        },
+                        error: function(xhr, status, error) {
+                            console.error(error);
+                        }
+                    });
+                }
+            });
+        },
     };
     return Controller;
 });