瀏覽代碼

自定义上传手稿第四步骤表单

Xiahai 11 月之前
父節點
當前提交
dc3b3b4534

+ 2 - 11
application/admin/controller/user/RoleLog.php

@@ -123,21 +123,12 @@ class RoleLog extends Backend
                     }
                     if ($user_log->type == 'chief') {
                         $user->is_chief = $adopt;
-                        if ($adopt == 'correct') {
-                            $user->is_editor = 'fault';
-                        }
                     }
                     if ($user_log->type == 'editor') {
                         $user->is_editor = $adopt;
-                        if ($adopt == 'correct') {
-                            $user->is_chief = 'fault';
-                        }
-                    }
-                    if ($user->save()) {
-                        $this->success();
-                    } else {
-                        $this->error('用户信息保存失败');
                     }
+                    $user->save();
+                    $this->success();
                 } else {
                     $this->error('用户信息不正确');
                 }

+ 65 - 0
application/admin/controller/workorder/Fields.php

@@ -0,0 +1,65 @@
+<?php
+
+namespace app\admin\controller\workorder;
+
+use app\common\controller\Backend;
+use app\common\model\Config;
+
+/**
+ * 工单字段管理
+ *
+ * @icon fa fa-circle-o
+ */
+class Fields extends Backend
+{
+
+    /**
+     * Fields模型对象
+     * @var \app\admin\model\workorder\Fields
+     */
+    protected $model       = null;
+    protected $noNeedRight = ['rulelist'];
+
+    public function _initialize()
+    {
+        parent::_initialize();
+        $this->model = new \app\admin\model\workorder\Fields;
+        $this->view->assign("positionList", $this->model->getPositionList());
+        $this->view->assign("typeListList", $this->model->getTypeListList());
+        $this->view->assign("statusList", $this->model->getStatusList());
+        $this->view->assign("isbasicinfoList", $this->model->getIsbasicinfoList());
+        $this->view->assign('isformdataList', $this->model->getIsformdataList());
+    }
+
+    public function import()
+    {
+        parent::import();
+    }
+
+    /**
+     * 规则列表
+     * @internal
+     */
+    public function rulelist()
+    {
+        //主键
+        $primarykey = $this->request->request("keyField");
+        //主键值
+        $keyValue = $this->request->request("keyValue", "");
+
+        $keyValueArr = array_filter(explode(',', $keyValue));
+        $regexList   = Config::getRegexList();
+        $list        = [];
+        foreach ($regexList as $k => $v) {
+            if ($keyValueArr) {
+                if (in_array($k, $keyValueArr)) {
+                    $list[] = ['id' => $k, 'name' => $v];
+                }
+            } else {
+                $list[] = ['id' => $k, 'name' => $v];
+            }
+        }
+        return json(['list' => $list]);
+    }
+
+}

+ 54 - 0
application/admin/lang/zh-cn/workorder/fields.php

@@ -0,0 +1,54 @@
+<?php
+
+return [
+    'Id'                                            => 'ID',
+    'Position'                                      => '字段位置',
+    'Position 0'                                    => '手稿声明表单',
+    'Name'                                          => '名称',
+    'Title'                                         => '标题',
+    'Decimals'                                      => '小数点长度',
+    'Minimum'                                       => '最少选择',
+    'Maximum'                                       => '最多选择',
+    'Type_list'                                     => '类型',
+    'Type_list string'                              => '输入框',
+    'Type_list textarea'                            => '多行输入框',
+    'Type_list text'                                => '文本',
+    'Type_list editor'                              => '富文本',
+    'Type_list number'                              => '数字',
+    'Type_list date'                                => '日期',
+    'Type_list time'                                => '时间',
+    'Type_list datetime'                            => '日期时间',
+    'Type_list select'                              => '列表',
+    'Type_list selects'                             => '多选列表',
+    'Type_list image'                               => '图片',
+    'Type_list images'                              => '图片(多)',
+    'Type_list file'                                => '文件',
+    'Type_list files'                               => '文件(多)',
+    'Type_list switch'                              => '开关',
+    'Type_list checkbox'                            => '复选框',
+    'Type_list radio'                               => '单选框',
+    'Type_list city'                                => '城市选择框',
+    'Default'                                       => '默认值',
+    'Values'                                        => '条目列表',
+    'Isfilter'                                      => '是否列表筛选',
+    'Isbasicinfo'                                   => '基本信息字段',
+    'Isbasicinfo 0'                                 => '否',
+    'Isbasicinfo 1'                                 => '是',
+    'Rule'                                          => '验证规则',
+    'Errormsg'                                      => '错误消息',
+    'Notice'                                        => '提示消息',
+    'Field_length'                                  => '字段长度',
+    'Status'                                        => '状态',
+    'Status 0'                                      => '隐藏',
+    'Status 1'                                      => '正常',
+    'Extend'                                        => '扩展属性',
+    'Weigh'                                         => '权重',
+    'Createtime'                                    => '创建时间',
+    'Isfilter Tip'                                  => '工单管理功能内,可通过此字段进行筛选',
+    'Isbasicinfo Tip'                               => '显示至前台工单详情的工单基本信息框内',
+    'Fields only support alphanumeric underscores!' => '字段只支持字母数字下划线!',
+    'Field cannot start with a number!'             => '字段不能以数字开始!',
+    'This field already exists!'                    => '该字段已存在!',
+    'Isformdata'                                    => '是否表单内数据显示',
+    'IsAssociation'                                 => '是否关联显示',
+];

+ 39 - 0
application/admin/model/cms/AuthorManuscript.php

@@ -25,4 +25,43 @@ class AuthorManuscript extends Model
     {
         return $this->belongsTo("\app\common\model\User", 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
     }
+
+    public static function getFields($values = null, $position = -1)
+    {
+        $where['status'] = 1;
+        if ($position != -1) {
+            $where['position'] = $position;
+        }
+        if ($position == 0 || $position == 4) {
+            $where['isformdata'] = 1;
+        }
+        $fields = \app\admin\model\workorder\Fields::where($where)->order('weigh', 'DESC')->select();
+        foreach ($fields as $k => $v) {
+            $v->value = isset($values[$v['name']]) ? $values[$v['name']] : '';
+            if (!$v->value && $v->type_list != 'switch') {
+                $v->value = $v->default;
+            }
+            $v->rule = str_replace(',', '; ', $v->rule);
+            if (in_array($v->type_list, ['checkbox', 'lists', 'images'])) {
+                $checked = '';
+                if ($v['minimum'] && $v['maximum']) {
+                    $checked = "{$v['minimum']}~{$v['maximum']}";
+                } elseif ($v['minimum']) {
+                    $checked = "{$v['minimum']}~";
+                } elseif ($v['maximum']) {
+                    $checked = "~{$v['maximum']}";
+                }
+                if ($checked) {
+                    $v->rule .= (';checked(' . $checked . ')');
+                }
+            }
+            if (in_array($v->type_list, ['checkbox', 'radio']) && stripos($v->rule, 'required') !== false) {
+                $v->rule = str_replace('required', 'checked', $v->rule);
+            }
+            if (in_array($v->type_list, ['selects'])) {
+                $v->extend .= (' ' . 'data-max-options="' . $v['maximum'] . '"');
+            }
+        }
+        return $fields;
+    }
 }

+ 206 - 0
application/admin/model/workorder/Fields.php

@@ -0,0 +1,206 @@
+<?php
+
+namespace app\admin\model\workorder;
+
+use think\Model;
+use think\Exception;
+use app\common\model\Config;
+use think\exception\PDOException;
+use addons\workorder\library\SQLLib;
+
+
+class Fields extends Model
+{
+
+    // 表名
+    protected $name = 'workorder_fields';
+
+    // 数据表名
+    protected static $dataTable = 'cms_author_manuscript';
+
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = false;
+    protected $deleteTime = false;
+
+    // 追加属性
+    protected $append = [
+        'position_text',
+        'type_list_text',
+        'status_text',
+        'values_list',
+        'isrequire',
+        'isbasicinfo_text'
+    ];
+
+    protected static $listField = ['select', 'selects', 'checkbox', 'radio'];
+
+
+    protected static function init()
+    {
+        $beforeUpdateCallback = function ($row) {
+
+            if (!preg_match("/^([a-zA-Z0-9_]+)$/i", $row['name'])) {
+                throw new Exception(__('Fields only support alphanumeric underscores!'));
+            }
+            if (is_numeric(substr($row['name'], 0, 1))) {
+                throw new Exception(__('Field cannot start with a number!'));
+            }
+
+            if (isset($row['oldname']) && $row['oldname'] != $row['name'] && $row['position'] != 0) {
+                $tableFields = \think\Db::name(self::$dataTable)->getTableFields();
+                if (in_array(strtolower($row['name']), $tableFields)) {
+                    throw new Exception(__('This field already exists!'));
+                }
+            }
+        };
+
+        self::beforeInsert($beforeUpdateCallback);
+        self::beforeUpdate($beforeUpdateCallback);
+
+        self::afterInsert(function ($row) {
+            if ($row['position'] == 0) {
+                $pk = $row->getPk();
+                $row->getQuery()->where($pk, $row[$pk])->update(['weigh' => $row[$pk]]);
+
+                // 向数据表添加字段
+                $sql = SQLLib::instance()
+                    ->setTable(self::$dataTable)
+                    ->setName($row['name'])
+                    ->setFieldLength($row['field_length'])
+                    ->setValues($row['values'])
+                    ->setDecimals($row['decimals'])
+                    ->setDefaultvalue($row['default'])
+                    ->setComment($row['title'])
+                    ->setType($row['type_list'])
+                    ->getAddSql();
+                try {
+                    db()->query($sql);
+                } catch (PDOException $e) {
+                    $row->getQuery()->where('id', $row->id)->delete();
+                    throw new Exception($e->getMessage());
+                }
+            }
+        });
+
+        self::afterUpdate(function ($row) {
+            if ($row['position'] == 0) {
+                $sqlLib = SQLLib::instance();
+                if (isset($row['oldname']) && $row['oldname'] != $row['name']) {
+                    $sqlLib->setOldname($row['oldname']);
+                }
+                $sql = $sqlLib->setTable(self::$dataTable)
+                    ->setName($row['name'])
+                    ->setFieldLength($row['field_length'])
+                    ->setValues($row['values'])
+                    ->setDecimals($row['decimals'])
+                    ->setDefaultvalue($row['default'])
+                    ->setComment($row['title'])
+                    ->setType($row['type_list'])
+                    ->getModifySql();
+                try {
+                    db()->query($sql);
+                } catch (PDOException $e) {
+                    throw new Exception($e->getMessage());
+                }
+            }
+        });
+
+        self::afterDelete(function ($row) {
+            if ($row['position'] == 0) {
+                $sql = SQLLib::instance()->setTable(self::$dataTable)->setName($row['name'])->getDropSql();
+                db()->query($sql);
+            }
+        });
+    }
+
+    public function getIsrequireAttr($value, $data)
+    {
+        return $data['rule'] && in_array('required', explode('; ', $data['rule']));
+    }
+
+    public function getValuesListAttr($value, $data)
+    {
+        return in_array($data['type_list'], self::$listField) ? Config::decode($data['values']) : $data['values'];
+    }
+
+    public function getPositionList()
+    {
+        return [
+            '0' => __('Position 0'),
+        ];
+    }
+
+    public function getTypeListList()
+    {
+        return [
+            'string'   => __('Type_list string'),
+            'textarea' => __('Type_list textarea'),
+            'text'     => __('Type_list text'),
+            'editor'   => __('Type_list editor'),
+            'number'   => __('Type_list number'),
+            'date'     => __('Type_list date'),
+            'time'     => __('Type_list time'),
+            'datetime' => __('Type_list datetime'),
+            'select'   => __('Type_list select'),
+            'selects'  => __('Type_list selects'),
+            'image'    => __('Type_list image'),
+            'images'   => __('Type_list images'),
+            'file'     => __('Type_list file'),
+            'files'    => __('Type_list files'),
+            'switch'   => __('Type_list switch'),
+            'checkbox' => __('Type_list checkbox'),
+            'radio'    => __('Type_list radio'),
+            'city'     => __('Type_list city')
+        ];
+    }
+
+    public function getStatusList()
+    {
+        return ['0' => __('Status 0'), '1' => __('Status 1')];
+    }
+
+    public function getIsbasicinfoList()
+    {
+        return ['0' => __('Isbasicinfo 0'), '1' => __('Isbasicinfo 1')];
+    }
+
+    public function getIsformdataList()
+    {
+        return ['0' => __('Isbasicinfo 0'), '1' => __('Isbasicinfo 1')];
+    }
+
+    public function getIsbasicinfoTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['isbasicinfo']) ? $data['isbasicinfo'] : '');
+        $list  = $this->getIsbasicinfoList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+
+    public function getTypeListTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['type_list']) ? $data['type_list'] : '');
+        $list  = $this->getTypeListList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+    public function getPositionTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['position']) ? $data['position'] : '');
+        $list  = $this->getPositionList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+
+    public function getStatusTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['status']) ? $data['status'] : '');
+        $list  = $this->getStatusList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+}

+ 54 - 54
application/admin/view/cms/diyform/add.html

@@ -24,12 +24,12 @@
             <input id="c-title" data-rule="required" class="form-control" name="row[title]" type="text">
         </div>
     </div>
-    <div class="form-group">
-        <label for="c-seotitle" class="control-label col-xs-12 col-sm-2">{:__('Seotitle')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input id="c-seotitle" data-rule="" class="form-control" name="row[seotitle]" type="text" value="" placeholder="为空时将使用表单标题">
-        </div>
-    </div>
+<!--    <div class="form-group">-->
+<!--        <label for="c-seotitle" class="control-label col-xs-12 col-sm-2">{:__('Seotitle')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-seotitle" data-rule="" class="form-control" name="row[seotitle]" type="text" value="" placeholder="为空时将使用表单标题">-->
+<!--        </div>-->
+<!--    </div>-->
     <div class="form-group">
         <label for="c-keywords" class="control-label col-xs-12 col-sm-2">{:__('Keywords')}:</label>
         <div class="col-xs-12 col-sm-8">
@@ -72,54 +72,54 @@
             <input id="c-showtpl" data-rule="" class="form-control selectpage" name="row[showtpl]" data-source="cms/ajax/get_template_list" data-params='{"type":"diyform_show"}' data-primary-key="name" data-field="name" type="text" placeholder="自定义模板文件必须以diyform_show开头">
         </div>
     </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('isedit')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input  id="c-isedit" name="row[isedit]" type="hidden" value="0">
-            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-isedit" data-yes="1" data-no="0" >
-                <i class="fa fa-toggle-on text-success fa-flip-horizontal text-gray fa-2x"></i>
-            </a>
-        </div>
-    </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('iscaptcha')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input  id="c-iscaptcha" name="row[iscaptcha]" type="hidden" value="0">
-            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-iscaptcha" data-yes="1" data-no="0" >
-                <i class="fa fa-toggle-on text-success fa-flip-horizontal text-gray fa-2x"></i>
-            </a>
-        </div>
-    </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('isguest')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input  id="c-isguest" name="row[isguest]" type="hidden" value="0">
-            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-isguest" data-yes="1" data-no="0" >
-                <i class="fa fa-toggle-on text-success fa-flip-horizontal text-gray fa-2x"></i>
-            </a>
-        </div>
-    </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Needlogin')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input  id="c-needlogin" name="row[needlogin]" type="hidden" value="0">
-            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-needlogin" data-yes="1" data-no="0" >
-                <i class="fa fa-toggle-on text-success fa-flip-horizontal text-gray fa-2x"></i>
-            </a>
-        </div>
-    </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Usermode')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            {:Form::radios("row[usermode]", ['all'=>'全部', 'user'=>'仅用户本人数据'], 'user')}
-        </div>
-    </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Statusmode')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            {:Form::radios("row[statusmode]", ['all'=>'全部', 'normal'=>'仅已审核数据(状态正常)'], 'normal')}
-        </div>
-    </div>
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('isedit')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input  id="c-isedit" name="row[isedit]" type="hidden" value="0">-->
+<!--            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-isedit" data-yes="1" data-no="0" >-->
+<!--                <i class="fa fa-toggle-on text-success fa-flip-horizontal text-gray fa-2x"></i>-->
+<!--            </a>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('iscaptcha')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input  id="c-iscaptcha" name="row[iscaptcha]" type="hidden" value="0">-->
+<!--            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-iscaptcha" data-yes="1" data-no="0" >-->
+<!--                <i class="fa fa-toggle-on text-success fa-flip-horizontal text-gray fa-2x"></i>-->
+<!--            </a>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('isguest')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input  id="c-isguest" name="row[isguest]" type="hidden" value="0">-->
+<!--            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-isguest" data-yes="1" data-no="0" >-->
+<!--                <i class="fa fa-toggle-on text-success fa-flip-horizontal text-gray fa-2x"></i>-->
+<!--            </a>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Needlogin')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input  id="c-needlogin" name="row[needlogin]" type="hidden" value="0">-->
+<!--            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-needlogin" data-yes="1" data-no="0" >-->
+<!--                <i class="fa fa-toggle-on text-success fa-flip-horizontal text-gray fa-2x"></i>-->
+<!--            </a>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Usermode')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            {:Form::radios("row[usermode]", ['all'=>'全部', 'user'=>'仅用户本人数据'], 'user')}-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Statusmode')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            {:Form::radios("row[statusmode]", ['all'=>'全部', 'normal'=>'仅已审核数据(状态正常)'], 'normal')}-->
+<!--        </div>-->
+<!--    </div>-->
     <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
         <div class="col-xs-12 col-sm-8">

+ 54 - 54
application/admin/view/cms/diyform/edit.html

@@ -24,12 +24,12 @@
             <input id="c-title" data-rule="required" class="form-control" name="row[title]" type="text" value="{$row.title|htmlentities}">
         </div>
     </div>
-    <div class="form-group">
-        <label for="c-seotitle" class="control-label col-xs-12 col-sm-2">{:__('Seotitle')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input id="c-seotitle" data-rule="" class="form-control" name="row[seotitle]" type="text" value="{$row.seotitle|htmlentities}" placeholder="为空时将使用表单标题">
-        </div>
-    </div>
+<!--    <div class="form-group">-->
+<!--        <label for="c-seotitle" class="control-label col-xs-12 col-sm-2">{:__('Seotitle')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-seotitle" data-rule="" class="form-control" name="row[seotitle]" type="text" value="{$row.seotitle|htmlentities}" placeholder="为空时将使用表单标题">-->
+<!--        </div>-->
+<!--    </div>-->
     <div class="form-group">
         <label for="c-keywords" class="control-label col-xs-12 col-sm-2">{:__('Keywords')}:</label>
         <div class="col-xs-12 col-sm-8">
@@ -72,54 +72,54 @@
             <input id="c-showtpl" data-rule="" class="form-control selectpage" value="{$row['showtpl']}" name="row[showtpl]" data-source="cms/ajax/get_template_list" data-params='{"type":"diyform_show"}' data-primary-key="name" data-field="name" type="text" placeholder="自定义模板文件必须以diyform_show开头">
         </div>
     </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('isedit')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input  id="c-isedit" name="row[isedit]" type="hidden" value="{$row['isedit']}">
-            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-isedit" data-yes="1" data-no="0" >
-                <i class="fa fa-toggle-on text-success fa-flip-horizontal {eq name="$row.isedit" value="0"}fa-flip-horizontal text-gray{/eq} fa-2x"></i>
-            </a>
-        </div>
-    </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('iscaptcha')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input  id="c-iscaptcha" name="row[iscaptcha]" type="hidden" value="{$row['iscaptcha']}">
-            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-iscaptcha" data-yes="1" data-no="0" >
-                <i class="fa fa-toggle-on text-success fa-flip-horizontal {eq name="$row.iscaptcha" value="0"}fa-flip-horizontal text-gray{/eq} fa-2x"></i>
-            </a>
-        </div>
-    </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('isguest')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input  id="c-isguest" name="row[isguest]" type="hidden" value="{$row['isguest']}">
-            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-isguest" data-yes="1" data-no="0" >
-                <i class="fa fa-toggle-on text-success fa-flip-horizontal {eq name="$row.isguest" value="0"}fa-flip-horizontal text-gray{/eq} fa-2x"></i>
-            </a>
-        </div>
-    </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Needlogin')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            <input  id="c-needlogin" name="row[needlogin]" type="hidden" value="{$row['needlogin']}">
-            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-needlogin" data-yes="1" data-no="0" >
-                <i class="fa fa-toggle-on text-success fa-flip-horizontal {eq name="$row.needlogin" value="0"}fa-flip-horizontal text-gray{/eq} fa-2x"></i>
-            </a>
-        </div>
-    </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Usermode')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            {:Form::radios("row[usermode]", ['all'=>'全部', 'user'=>'仅用户本人数据'], $row['usermode'])}
-        </div>
-    </div>
-    <div class="form-group">
-        <label class="control-label col-xs-12 col-sm-2">{:__('Statusmode')}:</label>
-        <div class="col-xs-12 col-sm-8">
-            {:Form::radios("row[statusmode]", ['all'=>'全部', 'normal'=>'仅已审核数据(状态正常)'], $row['statusmode'])}
-        </div>
-    </div>
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('isedit')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input  id="c-isedit" name="row[isedit]" type="hidden" value="{$row['isedit']}">-->
+<!--            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-isedit" data-yes="1" data-no="0" >-->
+<!--                <i class="fa fa-toggle-on text-success fa-flip-horizontal {eq name="$row.isedit" value="0"}fa-flip-horizontal text-gray{/eq} fa-2x"></i>-->
+<!--            </a>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('iscaptcha')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input  id="c-iscaptcha" name="row[iscaptcha]" type="hidden" value="{$row['iscaptcha']}">-->
+<!--            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-iscaptcha" data-yes="1" data-no="0" >-->
+<!--                <i class="fa fa-toggle-on text-success fa-flip-horizontal {eq name="$row.iscaptcha" value="0"}fa-flip-horizontal text-gray{/eq} fa-2x"></i>-->
+<!--            </a>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('isguest')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input  id="c-isguest" name="row[isguest]" type="hidden" value="{$row['isguest']}">-->
+<!--            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-isguest" data-yes="1" data-no="0" >-->
+<!--                <i class="fa fa-toggle-on text-success fa-flip-horizontal {eq name="$row.isguest" value="0"}fa-flip-horizontal text-gray{/eq} fa-2x"></i>-->
+<!--            </a>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Needlogin')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input  id="c-needlogin" name="row[needlogin]" type="hidden" value="{$row['needlogin']}">-->
+<!--            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-needlogin" data-yes="1" data-no="0" >-->
+<!--                <i class="fa fa-toggle-on text-success fa-flip-horizontal {eq name="$row.needlogin" value="0"}fa-flip-horizontal text-gray{/eq} fa-2x"></i>-->
+<!--            </a>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Usermode')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            {:Form::radios("row[usermode]", ['all'=>'全部', 'user'=>'仅用户本人数据'], $row['usermode'])}-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Statusmode')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            {:Form::radios("row[statusmode]", ['all'=>'全部', 'normal'=>'仅已审核数据(状态正常)'], $row['statusmode'])}-->
+<!--        </div>-->
+<!--    </div>-->
     <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
         <div class="col-xs-12 col-sm-8">

+ 163 - 0
application/admin/view/workorder/fields/add.html

@@ -0,0 +1,163 @@
+<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Position')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select id="c-position" data-rule="required" class="form-control selectpicker" name="row[position]">
+                {foreach name="positionList" item="vo"}
+                <option value="{$key}" {in name="key" value="0" }selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-name" data-rule="required" class="form-control" name="row[name]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Title')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-title" data-rule="required" class="form-control" name="row[title]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Type_list')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select id="c-type_list" data-rule="required" class="form-control selectpicker" name="row[type_list]">
+                {foreach name="typeListList" item="vo"}
+                    <option value="{$key}" {in name="key" value="string" }selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group hidden tf tf-number">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Decimals')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-decimals" class="form-control" name="row[decimals]" type="number" value="0">
+        </div>
+    </div>
+    <div class="form-group hidden tf tf-checkbox">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Minimum')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-minimum" class="form-control" name="row[minimum]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group hidden tf tf-selects tf-images tf-files tf-checkbox">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Maximum')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-maximum" class="form-control" name="row[maximum]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Default')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-default" class="form-control" name="row[default]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group hidden tf tf-select tf-selects tf-checkbox tf-radio">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Values')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-values" class="form-control" name="row[values]">value1|title1
+value2|title2</textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Rule')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-rule" class="form-control selectpage" data-source="workorder/fields/rulelist" data-multiple="true" name="row[rule]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Errormsg')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-errormsg" class="form-control" name="row[errormsg]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Notice')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-notice" class="form-control" name="row[notice]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Field_length')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-field_length" data-rule="required" class="form-control" name="row[field_length]" type="number" value="255">
+        </div>
+    </div>
+    <div class="form-group pp position-0">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Isfilter')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-isfilter" name="row[isfilter]" type="hidden" value="0">
+            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-isfilter" data-yes="1" data-no="0">
+                <i class="fa fa-toggle-on text-success fa-flip-horizontal text-gray fa-2x"></i>
+            </a>
+            <span class="help-block">{:__('Isfilter Tip')}</span>
+        </div>
+    </div>
+    <div class="form-group pp position-0">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Isbasicinfo')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <div class="radio">
+                {foreach name="isbasicinfoList" item="vo"}
+                <label for="row[isbasicinfo]-{$key}"><input id="row[isbasicinfo]-{$key}" name="row[isbasicinfo]" type="radio" value="{$key}" {in name="key" value="1" }checked{/in} /> {$vo}</label>
+                {/foreach}
+            </div>
+            <span class="help-block">{:__('Isbasicinfo Tip')}</span>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Isformdata')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="radio">
+                {foreach name="isformdataList" item="vo"}
+                <label for="row[isformdata]-{$key}"><input id="row[isformdata]-{$key}" name="row[isformdata]" type="radio" value="{$key}" {in name="key" value="1" }checked{/in} /> {$vo}</label>
+                {/foreach}
+            </div>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('IsAssociation')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="radio">
+                {foreach name="isformdataList" item="vo"}
+                <label for="row[isassociation]-{$key}"><input id="row[isassociation]-{$key}" name="row[isassociation]" type="radio" value="{$key}" {in name="key" value="0" }checked{/in} /> {$vo}</label>
+                {/foreach}
+            </div>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <div class="radio">
+            {foreach name="statusList" item="vo"}
+            <label for="row[status]-{$key}"><input id="row[status]-{$key}" name="row[status]" type="radio" value="{$key}" {in name="key" value="1" }checked{/in} /> {$vo}</label>
+            {/foreach}
+            </div>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Extend')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-extend" class="form-control" placeholder='如:id="1" data-test="test"' rows="3" name="row[extend]" type="text" value=""></textarea>
+        </div>
+    </div>
+    
+    <div class="form-group layer-footer">
+        <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-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 168 - 0
application/admin/view/workorder/fields/edit.html

@@ -0,0 +1,168 @@
+<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+    <input type="hidden" name="row[oldname]" value="{$row.name|htmlentities}"/>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Position')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select id="c-position" data-rule="required" class="form-control selectpicker" name="row[position]">
+                {foreach name="positionList" item="vo"}
+                <option value="{$key}" {in name="key" value="$row.position" }selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-name" data-rule="required" class="form-control" name="row[name]" type="text" value="{$row.name|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Title')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-title" data-rule="required" class="form-control" name="row[title]" type="text" value="{$row.title|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Type_list')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select id="c-type_list" data-rule="required" class="form-control selectpicker" name="row[type_list]">
+                {foreach name="typeListList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.type_list" }selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group hidden tf tf-number">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Decimals')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-decimals" class="form-control" name="row[decimals]" type="text" value="{$row.decimals|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group hidden tf tf-checkbox">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Minimum')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-minimum" class="form-control" name="row[minimum]" type="text" value="{$row.minimum|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group hidden tf tf-selects tf-images tf-files tf-checkbox">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Maximum')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-maximum" class="form-control" name="row[maximum]" type="text" value="{$row.maximum|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Default')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-default" class="form-control" name="row[default]" type="text" value="{$row.default|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group hidden tf tf-select tf-selects tf-checkbox tf-radio">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Values')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-values" class="form-control" name="row[values]" rows="5">{$row.values|htmlentities}</textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Rule')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-rule" class="form-control selectpage" data-source="workorder/fields/rulelist" data-multiple="true" name="row[rule]" type="text" value="{$row.rule|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Errormsg')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-errormsg" class="form-control" name="row[errormsg]" type="text" value="{$row.errormsg|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Notice')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-notice" class="form-control" name="row[notice]" type="text" value="{$row.notice|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Field_length')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-field_length" data-rule="required" class="form-control" name="row[field_length]" type="number" value="{$row.field_length|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Isfilter')}:</label>
+
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-isfilter" name="row[isfilter]" type="hidden" value="{$row.isfilter}">
+            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-isfilter" data-yes="1" data-no="0">
+                <i class="fa fa-toggle-on text-success {eq name=" $row.isfilter" value="0"}fa-flip-horizontal text-gray{/eq} fa-2x"></i>
+            </a>
+            <span class="help-block">{:__('Isfilter Tip')}</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Isbasicinfo')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <div class="radio">
+                {foreach name="isbasicinfoList" item="vo"}
+                <label for="row[isbasicinfo]-{$key}"><input id="row[isbasicinfo]-{$key}" name="row[isbasicinfo]" type="radio" value="{$key}" {in name="key" value="$row.isbasicinfo" }checked{/in} /> {$vo}</label>
+                {/foreach}
+            </div>
+            <span class="help-block">{:__('Isbasicinfo Tip')}</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Isformdata')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="radio">
+                {foreach name="isformdataList" item="vo"}
+                <label for="row[isformdata]-{$key}"><input id="row[isformdata]-{$key}" name="row[isformdata]" type="radio" value="{$key}" {in name="key" value="$row.isformdata" }checked{/in} /> {$vo}</label>
+                {/foreach}
+            </div>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('IsAssociation')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="radio">
+                {foreach name="isformdataList" item="vo"}
+                <label for="row[isassociation]-{$key}"><input id="row[isassociation$key}" name="row[isassociation]" type="radio" value="{$key}" {in name="key" value="$row.isassociation" }checked{/in} /> {$vo}</label>
+                {/foreach}
+            </div>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <div class="radio">
+            {foreach name="statusList" item="vo"}
+            <label for="row[status]-{$key}"><input id="row[status]-{$key}" name="row[status]" type="radio" value="{$key}" {in name="key" value="$row.status" }checked{/in} /> {$vo}</label>
+            {/foreach}
+            </div>
+
+        </div>
+    </div>
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Extend')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-extend" class="form-control" rows="3" name="row[extend]" placeholder='如:id="1" data-test="test"' type="text" value="">{$row.extend|htmlentities}</textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Weigh')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-weigh" data-rule="required" class="form-control" name="row[weigh]" type="number" value="{$row.weigh|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <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-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 45 - 0
application/admin/view/workorder/fields/index.html

@@ -0,0 +1,45 @@
+<div class="panel panel-default panel-intro">
+    
+    <div class="panel-heading">
+        {:build_heading(null,FALSE)}
+        <ul class="nav nav-tabs" data-field="status">
+            <li class="active"><a href="#t-all" data-value="" data-toggle="tab">{:__('All')}</a></li>
+            {foreach name="statusList" item="vo"}
+            <li><a href="#t-{$key}" data-value="{$key}" data-toggle="tab">{$vo}</a></li>
+            {/foreach}
+        </ul>
+    </div>
+
+
+    <div class="panel-body">
+        <div id="myTabContent" class="tab-content">
+            <div class="tab-pane fade active in" id="one">
+                <div class="widget-body no-padding">
+                    <div id="toolbar" class="toolbar">
+                        <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}"><i class="fa fa-refresh"></i> </a>
+                        <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('workorder/fields/add')?'':'hide'}" title="{:__('Add')}"><i class="fa fa-plus"></i> {:__('Add')}</a>
+                        <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('workorder/fields/edit')?'':'hide'}" title="{:__('Edit')}"><i class="fa fa-pencil"></i> {:__('Edit')}</a>
+                        <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('workorder/fields/del')?'':'hide'}" title="{:__('Delete')}"><i class="fa fa-trash"></i> {:__('Delete')}</a>
+                        
+
+                        <div class="dropdown btn-group {:$auth->check('workorder/fields/multi')?'':'hide'}">
+                            <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
+                            <ul class="dropdown-menu text-left" role="menu">
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=1"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=0"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
+                            </ul>
+                        </div>
+
+                        
+                    </div>
+                    <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
+                           data-operate-edit="{:$auth->check('workorder/fields/edit')}"
+                           data-operate-del="{:$auth->check('workorder/fields/del')}"
+                           width="100%">
+                    </table>
+                </div>
+            </div>
+
+        </div>
+    </div>
+</div>

+ 24 - 0
application/index/controller/User.php

@@ -37,11 +37,14 @@ class User extends Frontend
     protected $layout = 'default';
     protected $noNeedLogin = ['login', 'register', 'third', 'jump'];
     protected $noNeedRight = ['*'];
+    protected $position = 0;
+    protected $model = null;
 
     public function _initialize()
     {
         parent::_initialize();
         $auth = $this->auth;
+        $this->model = new AuthorManuscript();
 
         if (!Config::get('fastadmin.usercenter')) {
             $this->error(__('User center already closed'), '/');
@@ -65,6 +68,27 @@ class User extends Frontend
             Cookie::delete('uid');
             Cookie::delete('token');
         });
+
+        // 根据不同用户展示不同字段
+        $fieldsList = \app\admin\model\workorder\Fields::where([
+            'status' => 1,
+            'position' => $this->position,
+            'type_list' => ['<>', 'text']
+        ])->order('weigh', 'DESC')->select();
+        $fields     = [];
+        foreach ($fieldsList as $index => $item) {
+            if ($item['isfilter']) {
+                $fields[] = [
+                    'field'  => $item['name'],
+                    'title'  => $item['title'],
+                    'type'   => $item['type_list'],
+                    'values' => $item['values_list']
+                ];
+            }
+        }
+        $this->assignconfig('fields', $fields);
+
+        $this->view->assign('fields', $this->model->getFields(null, 0));
     }
 
     /**

+ 10 - 10
application/index/view/user/become_an_editor.html

@@ -14,15 +14,15 @@
                 <div class="panel-body">
                     <h2 class="page-header">Edit personal information</h2>
                     {if condition="$user_role"}
-                    {if condition="$user_role.is_adopt == 'correct'"}
-                    <p class="text-success">Status:Correct</p>
-                    {/if}
-                    {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 condition="$user_role.is_adopt == 'correct'"}
+                            <p class="text-success">Status:Correct</p>
+                        {/if}
+                        {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.workplace != '' || $user.job_type != '' || $user.first_name != '' || $user.last_name != '' || $user.affiliation != '' || $user.address != '' || $user.zip_code != ''"}
                     <form id="become-an-editor-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="{:url('api/user/apply_role')}">
@@ -129,7 +129,7 @@
                         </div>
                     </form>
                     {else}
-                    Information is currently under review.
+                        Please click on the jump link to complete the information <a href="/index/user/profile">Click me!</a>
                     {/if}
                 </div>
             </div>

+ 127 - 0
application/index/view/user/common/fields.html

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

+ 5 - 2
application/index/view/user/reviewer_information.html

@@ -20,6 +20,9 @@
                         {if condition="$user_role.is_adopt == 'review'"}
                             <p class="text-warning">Status:Review</p>
                         {/if}
+                        {if condition="$user_role.is_adopt == 'correct'"}
+                            <p class="text-success">Status:Correct</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')}">
@@ -32,7 +35,7 @@
                                 Field:
                             </label>
                             <div class="col-xs-12 col-sm-8">
-                                <input type="text" class="form-control" id="field" name="field" value="{$row.field}" placeholder="Field">
+                                <input id="c-field" data-source="user/choose_field" data-primary-key="id" data-search-field="name" class="form-control selectpage" name="row[field]" type="text" value="{$row.field}">
                             </div>
                         </div>
                         <div class="form-group">
@@ -104,7 +107,7 @@
                                 Select a journal:
                             </label>
                             <div class="col-xs-12 col-sm-8">
-                                <input id="c-journal_id" data-rule="required" data-source="user/choose_journal" data-primary-key="id" data-search-field="name" data-multiple="true" class="form-control selectpage" name="journal_ids[]" type="text" value="{$row.journal_ids}">
+                                <input id="c-journal_id" data-rule="required" data-source="user/choose_journal" data-primary-key="id" data-search-field="name" data-multiple="true" class="form-control selectpage" name="journal_ids" type="text" value="{$row.journal_ids}">
                             </div>
                         </div>
 

+ 100 - 98
application/index/view/user/submit_manuscript.html

@@ -166,14 +166,14 @@
                         <div class="form-item manuscript-content">
                             <div class="form-group">
                                 <label class="control-label col-xs-12 col-sm-4">
-                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Manuscript ( Word / Zip ):
+                                    <span style="color:#ed534b;margin-right: 10px;">*</span>Manuscript ( Word / Psd ):
                                 </label>
                                 <div class="col-xs-12 col-sm-8">
                                     <div class="input-group">
                                         <input id="c-manuscript-zip" data-rule="required" class="form-control" name="row[manuscript_zip]" type="text" value="{$row.manuscript_zip|htmlentities}">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-input-id="c-manuscript-zip" data-multiple="true" data-mimetype="word,zip,doc,docx,psd" data-preview-id="p-manuscript-zip"><i class="fa fa-upload"></i> Upload</button></span>
-                                            <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-manuscript-zip" data-preview-id="p-manuscript-zip" data-mimetype="word,zip,doc,docx,psd" data-multiple="true"><i class="fa fa-list"></i> Choose</button></span>
+                                            <span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-input-id="c-manuscript-zip" data-multiple="true" data-mimetype="word,doc,docx,psd" data-preview-id="p-manuscript-zip"><i class="fa fa-upload"></i> Upload</button></span>
+                                            <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-manuscript-zip" data-preview-id="p-manuscript-zip" data-mimetype="word,doc,docx,psd" data-multiple="true"><i class="fa fa-list"></i> Choose</button></span>
                                             <span class="msg-box n-right" for="c-manuscript-zip"></span>
                                         </div>
                                     </div>
@@ -569,101 +569,103 @@
 
                         <!-- 陈述 -->
                         <div class="form-item statement-content" style="display: none">
-                            <div class="form-group">
-                                <div class="col-xs-12 col-sm-12 statement-item-text">
-                                    Please indicate if you received funding (institutional, private and/or corporate/private financial support) for the research reported in the manuscript.
-                                </div>
-                            </div>
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-3" style="text-align: left">
-                                    Funding information
-                                </label>
-                            </div>
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-3" style="text-align: left">
-                                    I have received funding:
-                                </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-funding-yes"><input id="c-funding-yes" name="row[is_funding]" type="radio" value="normal" {if condition="$row.is_funding == 'normal'"}checked{/if} />Yes</label>
-                                            <label for="c-funding-no"><input id="c-funding-no" name="row[is_funding]" type="radio" value="hidden" {if condition="$row.is_funding == 'hidden'"}checked{/if} />No</label>
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
-                            <div class="form-group funding_content" style="display: none;">
-                                <label class="control-label col-xs-12 col-sm-3"></label>
-                                <div class="col-xs-12 col-sm-8">
-                                    <textarea id="c-funding_content" class="form-control editor" name="row[funding_content]" rows="15" placeholder="If 'yes', please add your funding unit and funding number...">{$row.funding_content|htmlentities}</textarea>
-                                </div>
-                            </div>
-
-                            <hr>
-
-                            <div class="form-group">
-                                <div class="col-xs-12 col-sm-12 statement-item-text">
-                                    We wish to draw the attention of the Editor to the following facts, which may be considered as potential conflicts of interest, and to significant financial contributions to this work.
-                                </div>
-                            </div>
-
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-4" style="text-align: left">
-                                    Potential confilict of interest exists
-                                </label>
-                            </div>
-
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-3">
-                                    choose:
-                                </label>
-                                <div class="col-xs-12 col-sm-8">
-                                    <div class="input-group mb-3">
-                                        <div class="radio radio-inline pl-0">
-                                            <label for="is-interest-yes"><input id="is-interest-yes" name="row[is_interest]" type="radio" value="normal" {if condition="$row.is_interest == 'normal'"}checked{/if} />Yes</label>
-                                            <label for="is-interest-no"><input id="is-interest-no" name="row[is_interest]" type="radio" value="hidden" {if condition="$row.is_interest == 'hidden'"}checked{/if} />No</label>
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
-
-                            <div class="form-group interest_content" style="display: none;">
-                                <label class="control-label col-xs-12 col-sm-3"></label>
-                                <div class="col-xs-12 col-sm-8">
-                                    <textarea id="c-interest_content" class="form-control editor" name="row[interest_content]" rows="15" placeholder="Type here...">{$row.interest_content|htmlentities}</textarea>
-                                </div>
-                            </div>
-
-                            <div class="form-group">
-                                <div class="col-xs-12 col-sm-12 statement-item-text" style="color: rgba(159,159,159,0.85);">
-                                    <p>All forms of financial support received for this research by any institution, organization or private company.</p>
-                                    <p>Any personal commercial or financial interest in the findings of the research.</p>
-                                    <p>Any relationship with institutions, organizations or private companies, and other activities or relationships that may be perceived as unduly influencing the findings of the research.</p>
-                                    <p>If in doubt, please select "Yes" and disclose any possible conflicts of interest.</p>
-                                </div>
-                            </div>
-
-                            <hr>
-
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-12" style="text-align: left">
-                                    Has your article been published in another journal or has it been submitted to another journal
-                                </label>
-                            </div>
-
-                            <div class="form-group">
-                                <label class="control-label col-xs-12 col-sm-3">
-                                    choose:
-                                </label>
-                                <div class="col-xs-12 col-sm-8">
-                                    <div class="input-group mb-3">
-                                        <div class="radio radio-inline pl-0">
-                                            <label for="is-another-choose-yes"><input id="is-another-choose-yes" name="row[statement_type]" type="radio" value="normal" {if condition="$row.statement_type == 'normal'"}checked{/if} />Yes</label>
-                                            <label for="is-another-choose-no"><input id="is-another-choose-no" name="row[statement_type]" type="radio" value="hidden" {if condition="$row.statement_type == 'hidden'"}checked{/if} />No</label>
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
+<!--                            <div class="form-group">-->
+<!--                                <div class="col-xs-12 col-sm-12 statement-item-text">-->
+<!--                                    Please indicate if you received funding (institutional, private and/or corporate/private financial support) for the research reported in the manuscript.-->
+<!--                                </div>-->
+<!--                            </div>-->
+<!--                            <div class="form-group">-->
+<!--                                <label class="control-label col-xs-12 col-sm-3" style="text-align: left">-->
+<!--                                    Funding information-->
+<!--                                </label>-->
+<!--                            </div>-->
+<!--                            <div class="form-group">-->
+<!--                                <label class="control-label col-xs-12 col-sm-3" style="text-align: left">-->
+<!--                                    I have received funding:-->
+<!--                                </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-funding-yes"><input id="c-funding-yes" name="row[is_funding]" type="radio" value="normal" {if condition="$row.is_funding == 'normal'"}checked{/if} />Yes</label>-->
+<!--                                            <label for="c-funding-no"><input id="c-funding-no" name="row[is_funding]" type="radio" value="hidden" {if condition="$row.is_funding == 'hidden'"}checked{/if} />No</label>-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--                            </div>-->
+<!--                            <div class="form-group funding_content" style="display: none;">-->
+<!--                                <label class="control-label col-xs-12 col-sm-3"></label>-->
+<!--                                <div class="col-xs-12 col-sm-8">-->
+<!--                                    <textarea id="c-funding_content" class="form-control editor" name="row[funding_content]" rows="15" placeholder="If 'yes', please add your funding unit and funding number...">{$row.funding_content|htmlentities}</textarea>-->
+<!--                                </div>-->
+<!--                            </div>-->
+
+<!--                            <hr>-->
+
+<!--                            <div class="form-group">-->
+<!--                                <div class="col-xs-12 col-sm-12 statement-item-text">-->
+<!--                                    We wish to draw the attention of the Editor to the following facts, which may be considered as potential conflicts of interest, and to significant financial contributions to this work.-->
+<!--                                </div>-->
+<!--                            </div>-->
+
+<!--                            <div class="form-group">-->
+<!--                                <label class="control-label col-xs-12 col-sm-4" style="text-align: left">-->
+<!--                                    Potential confilict of interest exists-->
+<!--                                </label>-->
+<!--                            </div>-->
+
+<!--                            <div class="form-group">-->
+<!--                                <label class="control-label col-xs-12 col-sm-3">-->
+<!--                                    choose:-->
+<!--                                </label>-->
+<!--                                <div class="col-xs-12 col-sm-8">-->
+<!--                                    <div class="input-group mb-3">-->
+<!--                                        <div class="radio radio-inline pl-0">-->
+<!--                                            <label for="is-interest-yes"><input id="is-interest-yes" name="row[is_interest]" type="radio" value="normal" {if condition="$row.is_interest == 'normal'"}checked{/if} />Yes</label>-->
+<!--                                            <label for="is-interest-no"><input id="is-interest-no" name="row[is_interest]" type="radio" value="hidden" {if condition="$row.is_interest == 'hidden'"}checked{/if} />No</label>-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--                            </div>-->
+
+<!--                            <div class="form-group interest_content" style="display: none;">-->
+<!--                                <label class="control-label col-xs-12 col-sm-3"></label>-->
+<!--                                <div class="col-xs-12 col-sm-8">-->
+<!--                                    <textarea id="c-interest_content" class="form-control editor" name="row[interest_content]" rows="15" placeholder="Type here...">{$row.interest_content|htmlentities}</textarea>-->
+<!--                                </div>-->
+<!--                            </div>-->
+
+<!--                            <div class="form-group">-->
+<!--                                <div class="col-xs-12 col-sm-12 statement-item-text" style="color: rgba(159,159,159,0.85);">-->
+<!--                                    <p>All forms of financial support received for this research by any institution, organization or private company.</p>-->
+<!--                                    <p>Any personal commercial or financial interest in the findings of the research.</p>-->
+<!--                                    <p>Any relationship with institutions, organizations or private companies, and other activities or relationships that may be perceived as unduly influencing the findings of the research.</p>-->
+<!--                                    <p>If in doubt, please select "Yes" and disclose any possible conflicts of interest.</p>-->
+<!--                                </div>-->
+<!--                            </div>-->
+
+<!--                            <hr>-->
+
+<!--                            <div class="form-group">-->
+<!--                                <label class="control-label col-xs-12 col-sm-12" style="text-align: left">-->
+<!--                                    Has your article been published in another journal or has it been submitted to another journal-->
+<!--                                </label>-->
+<!--                            </div>-->
+
+<!--                            <div class="form-group">-->
+<!--                                <label class="control-label col-xs-12 col-sm-3">-->
+<!--                                    choose:-->
+<!--                                </label>-->
+<!--                                <div class="col-xs-12 col-sm-8">-->
+<!--                                    <div class="input-group mb-3">-->
+<!--                                        <div class="radio radio-inline pl-0">-->
+<!--                                            <label for="is-another-choose-yes"><input id="is-another-choose-yes" name="row[statement_type]" type="radio" value="normal" {if condition="$row.statement_type == 'normal'"}checked{/if} />Yes</label>-->
+<!--                                            <label for="is-another-choose-no"><input id="is-another-choose-no" name="row[statement_type]" type="radio" value="hidden" {if condition="$row.statement_type == 'hidden'"}checked{/if} />No</label>-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--                            </div>-->
+
+                            {include file="user/common/fields"}
                         </div>
 
                         <!-- 推荐 -->

+ 1 - 1
public/assets/css/user/submit_manuscript.css

@@ -163,7 +163,7 @@
 .dash {
     width: 700px;
     height: 520px;
-    /*border: 1px dashed #f00;*/
+    border: 1px dashed #497BFF;
 }
 .author-content-button-item {
     padding-right:20px;

+ 176 - 0
public/assets/js/backend/workorder/fields.js

@@ -0,0 +1,176 @@
+define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
+
+    var Controller = {
+        index: function () {
+            // 初始化表格参数配置
+            Table.api.init({
+                extend: {
+                    index_url: 'workorder/fields/index' + location.search,
+                    add_url: 'workorder/fields/add',
+                    edit_url: 'workorder/fields/edit',
+                    del_url: 'workorder/fields/del',
+                    multi_url: 'workorder/fields/multi',
+                    import_url: 'workorder/fields/import',
+                    table: 'workorder_fields',
+                }
+            });
+
+            var table = $("#table");
+
+            // 初始化表格
+            table.bootstrapTable({
+                url: $.fn.bootstrapTable.defaults.extend.index_url,
+                pk: 'id',
+                sortName: 'weigh',
+                columns: [
+                    [
+                        {checkbox: true},
+                        {field: 'id', title: __('Id')},
+                        {
+                            field: 'position',
+                            title: __('Position'),
+                            searchList: {
+                                "0": __('Position 0'),
+                            },
+                            formatter: Table.api.formatter.status
+                        },
+                        {field: 'name', title: __('Name')},
+                        {field: 'title', title: __('Title')},
+                        {
+                            field: 'type_list',
+                            title: __('Type_list'),
+                            searchList: {
+                                "string": __('Type_list string'),
+                                "textarea": __('Type_list textarea'),
+                                "text": __('Type_list text'),
+                                "editor": __('Type_list editor'),
+                                "number": __('Type_list number'),
+                                "date": __('Type_list date'),
+                                "time": __('Type_list time'),
+                                "datetime": __('Type_list datetime'),
+                                "select": __('Type_list select'),
+                                "selects": __('Type_list selects'),
+                                "image": __('Type_list image'),
+                                "images": __('Type_list images'),
+                                "file": __('Type_list file'),
+                                "files": __('Type_list files'),
+                                "switch": __('Type_list switch'),
+                                "checkbox": __('Type_list checkbox'),
+                                "radio": __('Type_list radio'),
+                                "city": __('Type_list city')
+                            },
+                            formatter: Table.api.formatter.normal
+                        },
+                        // {field: 'default', title: __('Default')},
+                        // {field: 'rule', title: __('Rule')},
+                        // {field: 'errormsg', title: __('Errormsg')},
+                        {field: 'notice', title: __('Notice')},
+                        {field: 'field_length', title: __('Field_length')},
+                        {
+                            field: 'isfilter',
+                            title: __('Isfilter'),
+                            searchList: {"1": __('Yes'), "0": __('No')},
+                            formatter: Controller.api.formatter.toggle
+                        },
+                        // {field: 'extend', title: __('Extend')},
+                        {
+                            field: 'isbasicinfo',
+                            title: __('Isbasicinfo'),
+                            searchList: {"0": __('Isbasicinfo 0'), "1": __('Isbasicinfo 1')},
+                            formatter: Controller.api.formatter.status
+                        },
+                        {
+                            field: 'status',
+                            title: __('Status'),
+                            searchList: {"0": __('Status 0'), "1": __('Status 1')},
+                            formatter: Table.api.formatter.status
+                        },
+                        {field: 'weigh', title: __('Weigh')},
+                        {
+                            field: 'createtime',
+                            title: __('Createtime'),
+                            operate: 'RANGE',
+                            addclass: 'datetimerange',
+                            formatter: Table.api.formatter.datetime
+                        },
+                        {
+                            field: 'operate',
+                            title: __('Operate'),
+                            table: table,
+                            events: Table.api.events.operate,
+                            formatter: function (value, row, index) {
+
+                                var ban_del = ['title', 'describe'];
+                                if (ban_del.includes(row.name)) {
+                                    var that = $.extend({}, this);
+                                    var table = $(that.table).clone(true);
+                                    $(table).data("operate-del", null);
+                                    that.table = table;
+                                    return Table.api.formatter.operate.call(that, value, row, index);
+                                }
+
+                                return Table.api.formatter.operate.call(this, value, row, index);
+                            }
+                        }
+                    ]
+                ]
+            });
+
+            // 为表格绑定事件
+            Table.api.bindevent(table);
+        },
+        add: function () {
+            Controller.api.bindevent();
+        },
+        edit: function () {
+            Controller.api.bindevent();
+        },
+        api: {
+            bindevent: function () {
+                $("form#add-form").data("validator-options", {ignore: ':hidden'});
+                $(document).on("change", "#c-type_list", function () {
+                    let typeList = $(this).val();
+                    $(".tf").addClass("hidden");
+                    $(".tf.tf-" + typeList).removeClass("hidden");
+
+                    if (typeList == 'switch') {
+                        let defaultEl = $('#c-default');
+                        defaultEl.val(defaultEl.val() ? defaultEl.val():'0')
+                    }
+                });
+
+                $(document).on("change", '#c-position', function () {
+                    $(".pp").addClass("hidden");
+                    $(".pp.position-" + $(this).val()).removeClass("hidden");
+                })
+
+                Form.api.bindevent($("form[role=form]"));
+                $("#c-type_list").trigger("change");
+                $("#c-position").trigger("change");
+            },
+            formatter: {
+                toggle: function (value, row, index) {
+                    // if (row.position == 0) {
+                        var that = $.extend({}, this);
+                        var table = $(that.table).clone(true);
+                        that.table = table;
+                        return Table.api.formatter.toggle.call(that, value, row, index);
+                    // } else {
+                    //     return '-';
+                    // }
+                },
+                status: function (value, row, index) {
+                    if (row.position == 0) {
+                        var that = $.extend({}, this);
+                        var table = $(that.table).clone(true);
+                        that.table = table;
+                        return Table.api.formatter.status.call(that, value, row, index);
+                    } else {
+                        return '-';
+                    }
+                }
+            }
+        }
+    };
+    return Controller;
+});