作者 郭盛
1 个管道 的构建 通过 耗费 27 秒

后台商品模块

@@ -12,7 +12,7 @@ return array ( @@ -12,7 +12,7 @@ return array (
12 'amap' => '高德地图', 12 'amap' => '高德地图',
13 'tencent' => '腾讯地图', 13 'tencent' => '腾讯地图',
14 ), 14 ),
15 - 'value' => 'baidu', 15 + 'value' => 'tencent',
16 'rule' => 'required', 16 'rule' => 'required',
17 'msg' => '', 17 'msg' => '',
18 'tip' => '', 18 'tip' => '',
@@ -117,7 +117,7 @@ return array ( @@ -117,7 +117,7 @@ return array (
117 'content' => 117 'content' =>
118 array ( 118 array (
119 ), 119 ),
120 - 'value' => '608d75903d29ad471362f8c58c550daf', 120 + 'value' => 'GUNBZ-MJZCU-NRTVH-2JYRC-4HFAH-44FWM',
121 'rule' => 'required', 121 'rule' => 'required',
122 'msg' => '', 122 'msg' => '',
123 'tip' => '', 123 'tip' => '',
  1 +<?php
  2 +
  3 +namespace app\admin\controller;
  4 +
  5 +use app\common\controller\Backend;
  6 +use think\Db;
  7 +
  8 +/**
  9 + * 商品管理
  10 + *
  11 + * @icon fa fa-circle-o
  12 + */
  13 +class Goods extends Backend
  14 +{
  15 +
  16 + /**
  17 + * Goods模型对象
  18 + * @var \app\admin\model\Goods
  19 + */
  20 + protected $model = null;
  21 +
  22 + public function _initialize()
  23 + {
  24 + parent::_initialize();
  25 + $this->model = new \app\admin\model\Goods;
  26 +
  27 + }
  28 +
  29 + /**
  30 + * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
  31 + * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
  32 + * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
  33 + */
  34 +
  35 +
  36 + /**
  37 + * 查看
  38 + */
  39 + public function index()
  40 + {
  41 + //当前是否为关联查询
  42 + $this->relationSearch = true;
  43 + //设置过滤方法
  44 + $this->request->filter(['strip_tags', 'trim']);
  45 + if ($this->request->isAjax())
  46 + {
  47 + //如果发送的来源是Selectpage,则转发到Selectpage
  48 + if ($this->request->request('keyField'))
  49 + {
  50 + return $this->selectpage();
  51 + }
  52 + list($where, $sort, $order, $offset, $limit) = $this->buildparams();
  53 + $total = $this->model
  54 + ->with(['store'])
  55 + ->where($where)
  56 + ->order($sort, $order)
  57 + ->count();
  58 +
  59 +
  60 + $list = $this->model
  61 + ->with(['store'])
  62 + ->where($where)
  63 + ->order($sort, $order)
  64 + ->limit($offset, $limit)
  65 + ->select();
  66 +
  67 + foreach ($list as $row) {
  68 +
  69 + $row->getRelation('store')->visible(['name']);
  70 + }
  71 + $list = collection($list)->toArray();
  72 + foreach ($list as &$v){
  73 + $v['goodstype_id'] = Db::name('goodstype')->where('id',$v['goodstype_id'])->column('name');
  74 + }
  75 + $result = array("total" => $total, "rows" => $list);
  76 +
  77 + return json($result);
  78 + }
  79 + return $this->view->fetch();
  80 + }
  81 +
  82 + /**
  83 + * 添加
  84 + */
  85 + public function add()
  86 + {
  87 + if ($this->request->isPost()) {
  88 + $params = $this->request->post("row/a");
  89 + if ($params) {
  90 + $params = $this->preExcludeFields($params);
  91 +
  92 + if ($this->dataLimit && $this->dataLimitFieldAutoFill) {
  93 + $params[$this->dataLimitField] = $this->auth->id;
  94 + }
  95 + if($params['is_impose'] == 1){
  96 + if(empty($params['imposenum'])){
  97 + $this->error('请输入限购数量');
  98 + }
  99 + }
  100 +
  101 +
  102 + $result = false;
  103 + Db::startTrans();
  104 + try {
  105 + //是否采用模型验证
  106 + if ($this->modelValidate) {
  107 + $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
  108 + $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate;
  109 + $this->model->validateFailException(true)->validate($validate);
  110 + }
  111 + $result = $this->model->allowField(true)->save($params);
  112 + Db::commit();
  113 + } catch (ValidateException $e) {
  114 + Db::rollback();
  115 + $this->error($e->getMessage());
  116 + } catch (PDOException $e) {
  117 + Db::rollback();
  118 + $this->error($e->getMessage());
  119 + } catch (Exception $e) {
  120 + Db::rollback();
  121 + $this->error($e->getMessage());
  122 + }
  123 + if ($result !== false) {
  124 + $this->success();
  125 + } else {
  126 + $this->error(__('No rows were inserted'));
  127 + }
  128 + }
  129 + $this->error(__('Parameter %s can not be empty', ''));
  130 + }
  131 + return $this->view->fetch();
  132 + }
  133 +
  134 + /**
  135 + * 编辑
  136 + */
  137 + public function edit($ids = null)
  138 + {
  139 + $row = $this->model->get($ids);
  140 + if (!$row) {
  141 + $this->error(__('No Results were found'));
  142 + }
  143 + $adminIds = $this->getDataLimitAdminIds();
  144 + if (is_array($adminIds)) {
  145 + if (!in_array($row[$this->dataLimitField], $adminIds)) {
  146 + $this->error(__('You have no permission'));
  147 + }
  148 + }
  149 + if ($this->request->isPost()) {
  150 + $params = $this->request->post("row/a");
  151 + if ($params) {
  152 + $params = $this->preExcludeFields($params);
  153 + if($params['is_impose'] == 1){
  154 + if(empty($params['imposenum'])){
  155 + $this->error('请输入限购数量');
  156 + }
  157 + }
  158 + $result = false;
  159 + Db::startTrans();
  160 + try {
  161 + //是否采用模型验证
  162 + if ($this->modelValidate) {
  163 + $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
  164 + $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;
  165 + $row->validateFailException(true)->validate($validate);
  166 + }
  167 + $result = $row->allowField(true)->save($params);
  168 + Db::commit();
  169 + } catch (ValidateException $e) {
  170 + Db::rollback();
  171 + $this->error($e->getMessage());
  172 + } catch (PDOException $e) {
  173 + Db::rollback();
  174 + $this->error($e->getMessage());
  175 + } catch (Exception $e) {
  176 + Db::rollback();
  177 + $this->error($e->getMessage());
  178 + }
  179 + if ($result !== false) {
  180 + $this->success();
  181 + } else {
  182 + $this->error(__('No rows were updated'));
  183 + }
  184 + }
  185 + $this->error(__('Parameter %s can not be empty', ''));
  186 + }
  187 + $this->view->assign("row", $row);
  188 + return $this->view->fetch();
  189 + }
  190 +
  191 +
  192 +}
  1 +<?php
  2 +
  3 +namespace app\admin\controller;
  4 +
  5 +use app\common\controller\Backend;
  6 +use think\Db;
  7 +
  8 +/**
  9 + * 店铺管理
  10 + *
  11 + * @icon fa fa-circle-o
  12 + */
  13 +class Store extends Backend
  14 +{
  15 +
  16 + /**
  17 + * Store模型对象
  18 + * @var \app\admin\model\Store
  19 + */
  20 + protected $model = null;
  21 +
  22 + public function _initialize()
  23 + {
  24 + parent::_initialize();
  25 + $this->model = new \app\admin\model\Store;
  26 +
  27 + }
  28 +
  29 + /**
  30 + * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
  31 + * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
  32 + * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
  33 + */
  34 +
  35 +
  36 + /**
  37 + * 查看
  38 + */
  39 + public function index()
  40 + {
  41 + //当前是否为关联查询
  42 + $this->relationSearch = true;
  43 + //设置过滤方法
  44 + $this->request->filter(['strip_tags', 'trim']);
  45 + if ($this->request->isAjax())
  46 + {
  47 + //如果发送的来源是Selectpage,则转发到Selectpage
  48 + if ($this->request->request('keyField'))
  49 + {
  50 + return $this->selectpage();
  51 + }
  52 + list($where, $sort, $order, $offset, $limit) = $this->buildparams();
  53 + $total = $this->model
  54 + ->with(['user'])
  55 + ->where($where)
  56 + ->order($sort, $order)
  57 + ->count();
  58 +
  59 + $list = $this->model
  60 + ->with(['user'])
  61 + ->where($where)
  62 + ->order($sort, $order)
  63 + ->limit($offset, $limit)
  64 + ->select();
  65 +
  66 + foreach ($list as $row) {
  67 +
  68 + $row->getRelation('user')->visible(['username']);
  69 + }
  70 + $list = collection($list)->toArray();
  71 + foreach ($list as &$v){
  72 + $v['province_ids'] = explode(',',$v['province_ids']);
  73 + $v['province_ids'] = Db::name('province')->whereIn('id',$v['province_ids'])->column('name');
  74 + if($v['viptype'] == 2){
  75 + $v['province_ids'] = '全部';
  76 + }
  77 + }
  78 + $result = array("total" => $total, "rows" => $list);
  79 +
  80 + return json($result);
  81 + }
  82 + return $this->view->fetch();
  83 + }
  84 +
  85 + /**
  86 + * 编辑
  87 + */
  88 + public function edit($ids = null)
  89 + {
  90 + $row = $this->model->get($ids);
  91 + if (!$row) {
  92 + $this->error(__('No Results were found'));
  93 + }
  94 + $adminIds = $this->getDataLimitAdminIds();
  95 + if (is_array($adminIds)) {
  96 + if (!in_array($row[$this->dataLimitField], $adminIds)) {
  97 + $this->error(__('You have no permission'));
  98 + }
  99 + }
  100 + if ($this->request->isPost()) {
  101 + $params = $this->request->post("row/a");
  102 + if ($params) {
  103 + $params = $this->preExcludeFields($params);
  104 + $result = false;
  105 + Db::startTrans();
  106 + try {
  107 + //是否采用模型验证
  108 + if ($this->modelValidate) {
  109 + $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
  110 + $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;
  111 + $row->validateFailException(true)->validate($validate);
  112 + }
  113 + $result = $row->allowField(true)->save($params);
  114 + Db::commit();
  115 + } catch (ValidateException $e) {
  116 + Db::rollback();
  117 + $this->error($e->getMessage());
  118 + } catch (PDOException $e) {
  119 + Db::rollback();
  120 + $this->error($e->getMessage());
  121 + } catch (Exception $e) {
  122 + Db::rollback();
  123 + $this->error($e->getMessage());
  124 + }
  125 + if ($result !== false) {
  126 + $this->success();
  127 + } else {
  128 + $this->error(__('No rows were updated'));
  129 + }
  130 + }
  131 + $this->error(__('Parameter %s can not be empty', ''));
  132 + }
  133 + $this->view->assign("row", $row);
  134 + return $this->view->fetch();
  135 + }
  136 +}
@@ -156,6 +156,7 @@ class Viporder extends Backend @@ -156,6 +156,7 @@ class Viporder extends Backend
156 156
157 Db::startTrans(); 157 Db::startTrans();
158 $a = Db::name('store')->insertGetId($store); //创建店铺 158 $a = Db::name('store')->insertGetId($store); //创建店铺
  159 + $admin['store_id'] = $a;
159 $b = Db::name('admin')->insertGetId($admin); //创建后台账号 160 $b = Db::name('admin')->insertGetId($admin); //创建后台账号
160 $c = Db::name('auth_group_access')->insert(['uid'=>$b,'group_id'=>6]); 161 $c = Db::name('auth_group_access')->insert(['uid'=>$b,'group_id'=>6]);
161 if($a && $b && $c){ 162 if($a && $b && $c){
  1 +<?php
  2 +
  3 +return [
  4 + 'Id' => 'id',
  5 + 'Store_id' => '店铺id',
  6 + 'Goodstype_id' => '商品分类',
  7 + 'Goodsname' => '商品型号',
  8 + 'Thumbnail' => '商品缩略图',
  9 + 'Brand' => '商品品牌',
  10 + 'Price' => '商品价格',
  11 + 'Lineation' => '划线价',
  12 + 'Inventory' => '商品库存',
  13 + 'Is_impose' => '是否限购',
  14 + 'Freight' => '商品运费',
  15 + 'Imposenum' => '限购数量',
  16 + 'Content' => '商品详情',
  17 + 'Sale' => '商品销量',
  18 + 'Createtime' => '创建时间',
  19 + 'Updatetime' => '修改时间',
  20 + 'Store.name' => '店铺名称'
  21 +];
  1 +<?php
  2 +
  3 +return [
  4 + 'Id' => 'id',
  5 + 'User_id' => '用户id',
  6 + 'Name' => '店铺名称',
  7 + 'Type' => '店铺分类',
  8 + 'Username' => '店铺后台账号',
  9 + 'Password' => '店铺后台密码',
  10 + 'Property' => '店铺属性',
  11 + 'Content' => '店铺简介',
  12 + 'Thumbnail' => '店铺图片',
  13 + 'Money' => '满多少免运费',
  14 + 'Phone' => '联系电话',
  15 + 'Address' => '店铺地址',
  16 + 'Lng' => '经度',
  17 + 'Lat' => '纬度',
  18 + 'Viptype' => '会员类型',
  19 + 'Expiration' => '会员到期时间',
  20 + 'Province_ids' => '开通省份id',
  21 + 'Createtime' => '创建时间',
  22 + 'Updatetime' => '修改时间',
  23 + 'User.username' => '用户名'
  24 +];
  1 +<?php
  2 +
  3 +namespace app\admin\model;
  4 +
  5 +use think\Model;
  6 +
  7 +
  8 +class Goods extends Model
  9 +{
  10 +
  11 +
  12 +
  13 +
  14 +
  15 + // 表名
  16 + protected $name = 'goods';
  17 +
  18 + // 自动写入时间戳字段
  19 + protected $autoWriteTimestamp = 'int';
  20 +
  21 + // 定义时间戳字段名
  22 + protected $createTime = 'createtime';
  23 + protected $updateTime = 'updatetime';
  24 + protected $deleteTime = false;
  25 +
  26 + // 追加属性
  27 + protected $append = [
  28 +
  29 + ];
  30 +
  31 +
  32 +
  33 +
  34 +
  35 +
  36 +
  37 +
  38 +
  39 +
  40 + public function store()
  41 + {
  42 + return $this->belongsTo('Store', 'store_id', 'id', [], 'LEFT')->setEagerlyType(0);
  43 + }
  44 +}
  1 +<?php
  2 +
  3 +namespace app\admin\model;
  4 +
  5 +use think\Model;
  6 +
  7 +
  8 +class Store extends Model
  9 +{
  10 +
  11 +
  12 +
  13 +
  14 +
  15 + // 表名
  16 + protected $name = 'store';
  17 +
  18 + // 自动写入时间戳字段
  19 + protected $autoWriteTimestamp = 'int';
  20 +
  21 + // 定义时间戳字段名
  22 + protected $createTime = 'createtime';
  23 + protected $updateTime = 'updatetime';
  24 + protected $deleteTime = false;
  25 +
  26 + // 追加属性
  27 + protected $append = [
  28 +
  29 + ];
  30 +
  31 +
  32 +
  33 +
  34 +
  35 +
  36 +
  37 +
  38 +
  39 +
  40 + public function user()
  41 + {
  42 + return $this->belongsTo('User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
  43 + }
  44 +}
  1 +<?php
  2 +
  3 +namespace app\admin\validate;
  4 +
  5 +use think\Validate;
  6 +
  7 +class Goods extends Validate
  8 +{
  9 + /**
  10 + * 验证规则
  11 + */
  12 + protected $rule = [
  13 + ];
  14 + /**
  15 + * 提示消息
  16 + */
  17 + protected $message = [
  18 + ];
  19 + /**
  20 + * 验证场景
  21 + */
  22 + protected $scene = [
  23 + 'add' => [],
  24 + 'edit' => [],
  25 + ];
  26 +
  27 +}
  1 +<?php
  2 +
  3 +namespace app\admin\validate;
  4 +
  5 +use think\Validate;
  6 +
  7 +class Store extends Validate
  8 +{
  9 + /**
  10 + * 验证规则
  11 + */
  12 + protected $rule = [
  13 + ];
  14 + /**
  15 + * 提示消息
  16 + */
  17 + protected $message = [
  18 + ];
  19 + /**
  20 + * 验证场景
  21 + */
  22 + protected $scene = [
  23 + 'add' => [],
  24 + 'edit' => [],
  25 + ];
  26 +
  27 +}
  1 +<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
  2 +
  3 + <div class="form-group">
  4 + <label class="control-label col-xs-12 col-sm-2">{:__('Store_id')}:</label>
  5 + <div class="col-xs-12 col-sm-8">
  6 + <input id="c-store_id" data-rule="required" data-source="store/index" class="form-control selectpage" name="row[store_id]" type="text" value="">
  7 + </div>
  8 + </div>
  9 + <div class="form-group">
  10 + <label class="control-label col-xs-12 col-sm-2">{:__('Goodstype_id')}:</label>
  11 + <div class="col-xs-12 col-sm-8">
  12 + <input id="c-goodstype_id" data-rule="required" data-source="goodstype/index" class="form-control selectpage" name="row[goodstype_id]" type="text" value="">
  13 + </div>
  14 + </div>
  15 + <div class="form-group">
  16 + <label class="control-label col-xs-12 col-sm-2">{:__('Goodsname')}:</label>
  17 + <div class="col-xs-12 col-sm-8">
  18 + <input id="c-goodsname" data-rule="required" class="form-control" name="row[goodsname]" type="text">
  19 + </div>
  20 + </div>
  21 + <div class="form-group">
  22 + <label class="control-label col-xs-12 col-sm-2">{:__('Thumbnail')}:</label>
  23 + <div class="col-xs-12 col-sm-8">
  24 + <div class="input-group">
  25 + <input id="c-thumbnail" data-rule="required" class="form-control" size="35" name="row[thumbnail]" type="text" placeholder="请选择图片">
  26 + <div class="input-group-addon no-border no-padding">
  27 + <span><button type="button" id="plupload-thumbnail" class="btn btn-danger plupload" data-input-id="c-thumbnail" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-thumbnail"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
  28 + <span><button type="button" id="fachoose-thumbnail" class="btn btn-primary fachoose" data-input-id="c-thumbnail" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
  29 + </div>
  30 + <span class="msg-box n-right"></span>
  31 + </div>
  32 + <ul class="row list-inline plupload-preview" id="p-thumbnail"></ul>
  33 + </div>
  34 + </div>
  35 + <div class="form-group">
  36 + <label class="control-label col-xs-12 col-sm-2">{:__('Brand')}:</label>
  37 + <div class="col-xs-12 col-sm-8">
  38 + <input id="c-brand" data-rule="required" class="form-control" name="row[brand]" type="text">
  39 + </div>
  40 + </div>
  41 + <div class="form-group">
  42 + <label class="control-label col-xs-12 col-sm-2">{:__('Price')}:</label>
  43 + <div class="col-xs-12 col-sm-8">
  44 + <input id="c-price" data-rule="required" class="form-control" step="0.01" name="row[price]" type="number">
  45 + </div>
  46 + </div>
  47 + <div class="form-group">
  48 + <label class="control-label col-xs-12 col-sm-2">{:__('Lineation')}:</label>
  49 + <div class="col-xs-12 col-sm-8">
  50 + <input id="c-lineation" class="form-control" step="0.01" name="row[lineation]" type="number">
  51 + </div>
  52 + </div>
  53 + <div class="form-group">
  54 + <label class="control-label col-xs-12 col-sm-2">{:__('Inventory')}:</label>
  55 + <div class="col-xs-12 col-sm-8">
  56 + <input id="c-inventory" data-rule="required" class="form-control" name="row[inventory]" type="number">
  57 + </div>
  58 + </div>
  59 + <div class="form-group">
  60 + <label class="control-label col-xs-12 col-sm-2">{:__('Is_impose')}:</label>
  61 + <div class="col-xs-12 col-sm-8">
  62 + {:build_radios('row[is_impose]', ['0'=>__('不限购'),'1'=>__('限购')])}
  63 + </div>
  64 + </div>
  65 + <div class="form-group">
  66 + <label class="control-label col-xs-12 col-sm-2">{:__('Imposenum')}:</label>
  67 + <div class="col-xs-12 col-sm-8">
  68 + <input id="c-imposenum" class="form-control" name="row[imposenum]" type="number">
  69 + </div>
  70 + </div>
  71 + <div class="form-group">
  72 + <label class="control-label col-xs-12 col-sm-2">{:__('Freight')}:</label>
  73 + <div class="col-xs-12 col-sm-8">
  74 + <input id="c-freight" data-rule="required" class="form-control" step="0.01" name="row[freight]" type="number">
  75 + </div>
  76 + </div>
  77 +
  78 + <div class="form-group">
  79 + <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
  80 + <div class="col-xs-12 col-sm-8">
  81 + <textarea id="c-content" data-rule="required" class="form-control editor" rows="5" name="row[content]" cols="50"></textarea>
  82 + </div>
  83 + </div>
  84 + <div class="form-group layer-footer">
  85 + <label class="control-label col-xs-12 col-sm-2"></label>
  86 + <div class="col-xs-12 col-sm-8">
  87 + <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
  88 + <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
  89 + </div>
  90 + </div>
  91 +</form>
  1 +<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
  2 +
  3 + <!--<div class="form-group">-->
  4 + <!--<label class="control-label col-xs-12 col-sm-2">{:__('Store_id')}:</label>-->
  5 + <!--<div class="col-xs-12 col-sm-8">-->
  6 + <!--<input id="c-store_id" data-rule="required" data-source="store/index" class="form-control selectpage" name="row[store_id]" type="text" value="{$row.store_id|htmlentities}">-->
  7 + <!--</div>-->
  8 + <!--</div>-->
  9 + <!--<div class="form-group">-->
  10 + <!--<label class="control-label col-xs-12 col-sm-2">{:__('Goodstype_id')}:</label>-->
  11 + <!--<div class="col-xs-12 col-sm-8">-->
  12 + <!--<input id="c-goodstype_id" data-rule="required" data-source="goodstype/index" class="form-control selectpage" name="row[goodstype_id]" type="text" value="{$row.goodstype_id|htmlentities}">-->
  13 + <!--</div>-->
  14 + <!--</div>-->
  15 + <div class="form-group">
  16 + <label class="control-label col-xs-12 col-sm-2">{:__('Goodsname')}:</label>
  17 + <div class="col-xs-12 col-sm-8">
  18 + <input id="c-goodsname" data-rule="required" class="form-control" name="row[goodsname]" type="text" value="{$row.goodsname|htmlentities}">
  19 + </div>
  20 + </div>
  21 + <div class="form-group">
  22 + <label class="control-label col-xs-12 col-sm-2">{:__('Thumbnail')}:</label>
  23 + <div class="col-xs-12 col-sm-8">
  24 + <div class="input-group">
  25 + <input id="c-thumbnail" data-rule="required" class="form-control" size="35" name="row[thumbnail]" type="text" value="{$row.thumbnail}" placeholder="请选择图片">
  26 + <div class="input-group-addon no-border no-padding">
  27 + <span><button type="button" id="plupload-thumbnail" class="btn btn-danger plupload" data-input-id="c-thumbnail" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-thumbnail"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
  28 + <span><button type="button" id="fachoose-thumbnail" class="btn btn-primary fachoose" data-input-id="c-thumbnail" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
  29 + </div>
  30 + <span class="msg-box n-right"></span>
  31 + </div>
  32 + <ul class="row list-inline plupload-preview" id="p-thumbnail"></ul>
  33 + </div>
  34 + </div>
  35 + <div class="form-group">
  36 + <label class="control-label col-xs-12 col-sm-2">{:__('Brand')}:</label>
  37 + <div class="col-xs-12 col-sm-8">
  38 + <input id="c-brand" data-rule="required" class="form-control" name="row[brand]" type="text" value="{$row.brand|htmlentities}">
  39 + </div>
  40 + </div>
  41 + <div class="form-group">
  42 + <label class="control-label col-xs-12 col-sm-2">{:__('Price')}:</label>
  43 + <div class="col-xs-12 col-sm-8">
  44 + <input id="c-price" data-rule="required" class="form-control" step="0.01" name="row[price]" type="number" value="{$row.price|htmlentities}">
  45 + </div>
  46 + </div>
  47 + <div class="form-group">
  48 + <label class="control-label col-xs-12 col-sm-2">{:__('Lineation')}:</label>
  49 + <div class="col-xs-12 col-sm-8">
  50 + <input id="c-lineation" class="form-control" step="0.01" name="row[lineation]" type="number" value="{$row.lineation|htmlentities}">
  51 + </div>
  52 + </div>
  53 + <div class="form-group">
  54 + <label class="control-label col-xs-12 col-sm-2">{:__('Inventory')}:</label>
  55 + <div class="col-xs-12 col-sm-8">
  56 + <input id="c-inventory" data-rule="required" class="form-control" name="row[inventory]" type="number" value="{$row.inventory|htmlentities}">
  57 + </div>
  58 + </div>
  59 + <div class="form-group">
  60 + <label class="control-label col-xs-12 col-sm-2">{:__('Is_impose')}:</label>
  61 + <div class="col-xs-12 col-sm-8">
  62 + {:build_radios('row[is_impose]', ['0'=>__('不限购'),'1'=>__('限购')],$row['is_impose'])}
  63 + </div>
  64 + </div>
  65 + <div class="form-group">
  66 + <label class="control-label col-xs-12 col-sm-2">{:__('Imposenum')}:</label>
  67 + <div class="col-xs-12 col-sm-8">
  68 + <input id="c-imposenum" class="form-control" name="row[imposenum]" type="number" value="{$row.imposenum|htmlentities}">
  69 + </div>
  70 + </div>
  71 + <div class="form-group">
  72 + <label class="control-label col-xs-12 col-sm-2">{:__('Freight')}:</label>
  73 + <div class="col-xs-12 col-sm-8">
  74 + <input id="c-freight" class="form-control" step="0.01" name="row[freight]" type="number" value="{$row.freight|htmlentities}">
  75 + </div>
  76 + </div>
  77 +
  78 + <div class="form-group">
  79 + <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
  80 + <div class="col-xs-12 col-sm-8">
  81 + <textarea id="c-content" class="form-control editor" rows="5" name="row[content]" cols="50">{$row.content|htmlentities}</textarea>
  82 + </div>
  83 + </div>
  84 + <!--<div class="form-group">-->
  85 + <!--<label class="control-label col-xs-12 col-sm-2">{:__('Sale')}:</label>-->
  86 + <!--<div class="col-xs-12 col-sm-8">-->
  87 + <!--<input id="c-sale" class="form-control" name="row[sale]" type="number" value="{$row.sale|htmlentities}">-->
  88 + <!--</div>-->
  89 + <!--</div>-->
  90 + <div class="form-group layer-footer">
  91 + <label class="control-label col-xs-12 col-sm-2"></label>
  92 + <div class="col-xs-12 col-sm-8">
  93 + <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
  94 + <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
  95 + </div>
  96 + </div>
  97 +</form>
  1 +<div class="panel panel-default panel-intro">
  2 + {:build_heading()}
  3 +
  4 + <div class="panel-body">
  5 + <div id="myTabContent" class="tab-content">
  6 + <div class="tab-pane fade active in" id="one">
  7 + <div class="widget-body no-padding">
  8 + <div id="toolbar" class="toolbar">
  9 + <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
  10 + <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('goods/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
  11 + <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('goods/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
  12 + <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('goods/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
  13 + <a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('goods/import')?'':'hide'}" title="{:__('Import')}" id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"><i class="fa fa-upload"></i> {:__('Import')}</a>
  14 +
  15 + <div class="dropdown btn-group {:$auth->check('goods/multi')?'':'hide'}">
  16 + <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
  17 + <ul class="dropdown-menu text-left" role="menu">
  18 + <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
  19 + <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
  20 + </ul>
  21 + </div>
  22 +
  23 +
  24 + </div>
  25 + <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
  26 + data-operate-edit="{:$auth->check('goods/edit')}"
  27 + data-operate-del="{:$auth->check('goods/del')}"
  28 + width="100%">
  29 + </table>
  30 + </div>
  31 + </div>
  32 +
  33 + </div>
  34 + </div>
  35 +</div>
  1 +<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
  2 +
  3 + <div class="form-group">
  4 + <label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
  5 + <div class="col-xs-12 col-sm-8">
  6 + <input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[user_id]" type="text" value="">
  7 + </div>
  8 + </div>
  9 + <div class="form-group">
  10 + <label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
  11 + <div class="col-xs-12 col-sm-8">
  12 + <input id="c-name" class="form-control" name="row[name]" type="text">
  13 + </div>
  14 + </div>
  15 + <div class="form-group">
  16 + <label class="control-label col-xs-12 col-sm-2">{:__('Type')}:</label>
  17 + <div class="col-xs-12 col-sm-8">
  18 + <input id="c-type" class="form-control" name="row[type]" type="number">
  19 + </div>
  20 + </div>
  21 + <div class="form-group">
  22 + <label class="control-label col-xs-12 col-sm-2">{:__('Username')}:</label>
  23 + <div class="col-xs-12 col-sm-8">
  24 + <input id="c-username" class="form-control" name="row[username]" type="text">
  25 + </div>
  26 + </div>
  27 + <div class="form-group">
  28 + <label class="control-label col-xs-12 col-sm-2">{:__('Password')}:</label>
  29 + <div class="col-xs-12 col-sm-8">
  30 + <input id="c-password" class="form-control" name="row[password]" type="text">
  31 + </div>
  32 + </div>
  33 + <div class="form-group">
  34 + <label class="control-label col-xs-12 col-sm-2">{:__('Property')}:</label>
  35 + <div class="col-xs-12 col-sm-8">
  36 + <input id="c-property" class="form-control" name="row[property]" type="text">
  37 + </div>
  38 + </div>
  39 + <div class="form-group">
  40 + <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
  41 + <div class="col-xs-12 col-sm-8">
  42 + <textarea id="c-content" class="form-control editor" rows="5" name="row[content]" cols="50"></textarea>
  43 + </div>
  44 + </div>
  45 + <div class="form-group">
  46 + <label class="control-label col-xs-12 col-sm-2">{:__('Thumbnail')}:</label>
  47 + <div class="col-xs-12 col-sm-8">
  48 + <input id="c-thumbnail" class="form-control" name="row[thumbnail]" type="text">
  49 + </div>
  50 + </div>
  51 + <div class="form-group">
  52 + <label class="control-label col-xs-12 col-sm-2">{:__('Money')}:</label>
  53 + <div class="col-xs-12 col-sm-8">
  54 + <input id="c-money" class="form-control" name="row[money]" type="text">
  55 + </div>
  56 + </div>
  57 + <div class="form-group">
  58 + <label class="control-label col-xs-12 col-sm-2">{:__('Phone')}:</label>
  59 + <div class="col-xs-12 col-sm-8">
  60 + <input id="c-phone" class="form-control" name="row[phone]" type="text">
  61 + </div>
  62 + </div>
  63 + <div class="form-group">
  64 + <label class="control-label col-xs-12 col-sm-2">{:__('Address')}:</label>
  65 + <div class="col-xs-12 col-sm-8">
  66 + <input id="c-address" class="form-control" name="row[address]" type="text">
  67 + </div>
  68 + </div>
  69 + <div class="form-group">
  70 + <label class="control-label col-xs-12 col-sm-2">{:__('Lng')}:</label>
  71 + <div class="col-xs-12 col-sm-8">
  72 + <input id="c-lng" class="form-control" name="row[lng]" type="text">
  73 + </div>
  74 + </div>
  75 + <div class="form-group">
  76 + <label class="control-label col-xs-12 col-sm-2">{:__('Lat')}:</label>
  77 + <div class="col-xs-12 col-sm-8">
  78 + <input id="c-lat" class="form-control" name="row[lat]" type="text">
  79 + </div>
  80 + </div>
  81 + <div class="form-group">
  82 + <label class="control-label col-xs-12 col-sm-2">{:__('Viptype')}:</label>
  83 + <div class="col-xs-12 col-sm-8">
  84 + <input id="c-viptype" class="form-control" name="row[viptype]" type="number">
  85 + </div>
  86 + </div>
  87 + <div class="form-group">
  88 + <label class="control-label col-xs-12 col-sm-2">{:__('Expiration')}:</label>
  89 + <div class="col-xs-12 col-sm-8">
  90 + <input id="c-expiration" class="form-control" name="row[expiration]" type="number">
  91 + </div>
  92 + </div>
  93 + <div class="form-group">
  94 + <label class="control-label col-xs-12 col-sm-2">{:__('Province_ids')}:</label>
  95 + <div class="col-xs-12 col-sm-8">
  96 + <input id="c-province_ids" data-rule="required" data-source="province/index" data-multiple="true" class="form-control selectpage" name="row[province_ids]" type="text" value="">
  97 + </div>
  98 + </div>
  99 + <div class="form-group layer-footer">
  100 + <label class="control-label col-xs-12 col-sm-2"></label>
  101 + <div class="col-xs-12 col-sm-8">
  102 + <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
  103 + <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
  104 + </div>
  105 + </div>
  106 +</form>
  1 +<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
  2 + <div class="form-group">
  3 + <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
  4 + <div class="col-xs-12 col-sm-8">
  5 + <textarea id="c-content" class="form-control editor" rows="5" name="row[content]" cols="50">{$row.content|htmlentities}</textarea>
  6 + </div>
  7 + </div>
  8 + <div class="form-group">
  9 + <label class="control-label col-xs-12 col-sm-2">{:__('Thumbnail')}:</label>
  10 + <div class="col-xs-12 col-sm-8">
  11 + <div class="input-group">
  12 + <input id="c-thumbnail" data-rule="required" class="form-control" size="35" name="row[thumbnail]" type="text" value="{$row.thumbnail}" placeholder="请选择图片">
  13 + <div class="input-group-addon no-border no-padding">
  14 + <span><button type="button" id="plupload-thumbnail" class="btn btn-danger plupload" data-input-id="c-thumbnail" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-thumbnail"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
  15 + <span><button type="button" id="fachoose-thumbnail" class="btn btn-primary fachoose" data-input-id="c-thumbnail" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
  16 + </div>
  17 + <span class="msg-box n-right"></span>
  18 + </div>
  19 + <ul class="row list-inline plupload-preview" id="p-thumbnail"></ul>
  20 + </div>
  21 + </div>
  22 + <div class="form-group">
  23 + <label class="control-label col-xs-12 col-sm-2">{:__('Money')}:</label>
  24 + <div class="col-xs-12 col-sm-8">
  25 + <input id="c-money" class="form-control" name="row[money]" type="text" value="{$row.money|htmlentities}">
  26 + </div>
  27 + </div>
  28 + <div class="form-group">
  29 + <label class="control-label col-xs-12 col-sm-2">{:__('Phone')}:</label>
  30 + <div class="col-xs-12 col-sm-8">
  31 + <input id="c-phone" class="form-control" name="row[phone]" type="text" value="{$row.phone|htmlentities}">
  32 + </div>
  33 + </div>
  34 +
  35 +
  36 +
  37 + <div class="form-group">
  38 + <label class="control-label col-xs-12 col-sm-2">{:__('Address')}:</label>
  39 + <div class="col-xs-12 col-sm-8">
  40 + <input type="text" class="form-control" name="row[address]" id="address" placeholder="地址" value="{$row.address|htmlentities}">
  41 + </div>
  42 + </div>
  43 + <div class="form-group">
  44 + <label class="control-label col-xs-12 col-sm-2">{:__('Lng')}:</label>
  45 + <div class="col-xs-12 col-sm-8">
  46 + <input type="text" class="form-control" name="row[lng]" id="lng" placeholder="经度" value="{$row.lng|htmlentities}">
  47 + </div>
  48 + </div>
  49 + <div class="form-group">
  50 + <label class="control-label col-xs-12 col-sm-2">{:__('Lat')}:</label>
  51 + <div class="col-xs-12 col-sm-8">
  52 + <input type="text" class="form-control" name="row[lat]" id="lat" placeholder="纬度" value="{$row.lat|htmlentities}">
  53 + </div>
  54 + </div>
  55 +
  56 + <div class="form-group">
  57 + <div class="col-xs-12 col-sm-8">
  58 + <button type="button" class="btn btn-primary" data-toggle='addresspicker' data-input-id="address" data-lng-id="lng" data-lat-id="lat">点击选择地址获取经纬度</button>
  59 + </div>
  60 + </div>
  61 +
  62 +
  63 + <div class="form-group layer-footer">
  64 + <label class="control-label col-xs-12 col-sm-2"></label>
  65 + <div class="col-xs-12 col-sm-8">
  66 + <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
  67 + <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
  68 + </div>
  69 + </div>
  70 +</form>
  1 +<div class="panel panel-default panel-intro">
  2 + {:build_heading()}
  3 +
  4 + <div class="panel-body">
  5 + <div id="myTabContent" class="tab-content">
  6 + <div class="tab-pane fade active in" id="one">
  7 + <div class="widget-body no-padding">
  8 + <div id="toolbar" class="toolbar">
  9 + <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
  10 + <!--<a href="javascript:;" class="btn btn-success btn-add {:$auth->check('store/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>-->
  11 + <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('store/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
  12 + <!--<a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('store/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>-->
  13 + <!--<a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('store/import')?'':'hide'}" title="{:__('Import')}" id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"><i class="fa fa-upload"></i> {:__('Import')}</a>-->
  14 +
  15 + <!--<div class="dropdown btn-group {:$auth->check('store/multi')?'':'hide'}">-->
  16 + <!--<a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>-->
  17 + <!--<ul class="dropdown-menu text-left" role="menu">-->
  18 + <!--<li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>-->
  19 + <!--<li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>-->
  20 + <!--</ul>-->
  21 + <!--</div>-->
  22 +
  23 +
  24 + </div>
  25 + <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
  26 + data-operate-edit="{:$auth->check('store/edit')}"
  27 + data-operate-del="{:$auth->check('store/del')}"
  28 + width="100%">
  29 + </table>
  30 + </div>
  31 + </div>
  32 +
  33 + </div>
  34 + </div>
  35 +</div>
  1 +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
  2 +
  3 + var Controller = {
  4 + index: function () {
  5 + // 初始化表格参数配置
  6 + Table.api.init({
  7 + extend: {
  8 + index_url: 'goods/index' + location.search,
  9 + add_url: 'goods/add',
  10 + edit_url: 'goods/edit',
  11 + del_url: 'goods/del',
  12 + multi_url: 'goods/multi',
  13 + table: 'goods',
  14 + }
  15 + });
  16 +
  17 + var table = $("#table");
  18 +
  19 + // 初始化表格
  20 + table.bootstrapTable({
  21 + url: $.fn.bootstrapTable.defaults.extend.index_url,
  22 + pk: 'id',
  23 + sortName: 'id',
  24 + columns: [
  25 + [
  26 + {checkbox: true},
  27 + {field: 'id', title: __('Id')},
  28 + {field: 'store.name', title: __('Store.name')},
  29 + {field: 'goodstype_id', title: __('Goodstype_id')},
  30 + {field: 'goodsname', title: __('Goodsname')},
  31 + {field: 'thumbnail', title: __('Thumbnail'), operate:false, events: Table.api.events.image, formatter: Table.api.formatter.image},
  32 + {field: 'brand', title: __('Brand')},
  33 + {field: 'price', title: __('Price'), operate:'BETWEEN'},
  34 + {field: 'lineation', title: __('Lineation'), operate:'BETWEEN'},
  35 + {field: 'inventory', title: __('Inventory')},
  36 + {field: 'is_impose', title: __('Is_impose'),formatter: Table.api.formatter.status,searchList:{'0':'不限购','1': '限购'}},
  37 + {field: 'freight', title: __('Freight'), operate:'BETWEEN'},
  38 + {field: 'imposenum', title: __('Imposenum')},
  39 + {field: 'sale', title: __('Sale')},
  40 + {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  41 + {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  42 + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
  43 + ]
  44 + ]
  45 + });
  46 +
  47 + // 为表格绑定事件
  48 + Table.api.bindevent(table);
  49 + },
  50 + add: function () {
  51 + Controller.api.bindevent();
  52 + },
  53 + edit: function () {
  54 + Controller.api.bindevent();
  55 + },
  56 + api: {
  57 + bindevent: function () {
  58 + Form.api.bindevent($("form[role=form]"));
  59 + }
  60 + }
  61 + };
  62 + return Controller;
  63 +});
  1 +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
  2 +
  3 + var Controller = {
  4 + index: function () {
  5 + // 初始化表格参数配置
  6 + Table.api.init({
  7 + extend: {
  8 + index_url: 'store/index' + location.search,
  9 + add_url: 'store/add',
  10 + edit_url: 'store/edit',
  11 + del_url: 'store/del',
  12 + multi_url: 'store/multi',
  13 + table: 'store',
  14 + }
  15 + });
  16 +
  17 + var table = $("#table");
  18 +
  19 + // 初始化表格
  20 + table.bootstrapTable({
  21 + url: $.fn.bootstrapTable.defaults.extend.index_url,
  22 + pk: 'id',
  23 + sortName: 'id',
  24 + columns: [
  25 + [
  26 + {checkbox: true},
  27 + {field: 'id', title: __('Id')},
  28 + // {field: 'user_id', title: __('User_id')},
  29 + {field: 'user.username', title: __('User.username')},
  30 + {field: 'name', title: __('Name')},
  31 + {field: 'type', title: __('Type'),formatter:Table.api.formatter.label,searchList:{'1':'个人店铺','2':'企业店铺'}},
  32 + {field: 'username', title: __('Username')},
  33 + {field: 'password', title: __('Password')},
  34 + {field: 'property', title: __('Property')},
  35 + {field: 'thumbnail', title: __('Thumbnail'), operate:false, events: Table.api.events.image, formatter: Table.api.formatter.image},
  36 + {field: 'money', title: __('Money')},
  37 + {field: 'phone', title: __('Phone')},
  38 + {field: 'address', title: __('Address'), operate:false},
  39 + // {field: 'lng', title: __('Lng'), operate:false},
  40 + // {field: 'lat', title: __('Lat'), operate:false},
  41 + {field: 'viptype', title: __('Viptype'),formatter:Table.api.formatter.label,searchList:{'1':'普通会员','2':'超级会员'}},
  42 + {field: 'expiration', title: __('Expiration'), operate:false, addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  43 + {field: 'province_ids', title: __('Province_ids')},
  44 + {field: 'createtime', title: __('Createtime'), operate:false, addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  45 + {field: 'updatetime', title: __('Updatetime'), operate:false, addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  46 + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
  47 + ]
  48 + ]
  49 + });
  50 +
  51 + // 为表格绑定事件
  52 + Table.api.bindevent(table);
  53 + },
  54 + add: function () {
  55 + Controller.api.bindevent();
  56 + },
  57 + edit: function () {
  58 + Controller.api.bindevent();
  59 + },
  60 + api: {
  61 + bindevent: function () {
  62 + Form.api.bindevent($("form[role=form]"));
  63 + }
  64 + }
  65 + };
  66 + return Controller;
  67 +});