浏览代码

动态和回复,后台

lizhen 1 周之前
父节点
当前提交
6860c52293

+ 179 - 0
application/admin/controller/Topicdongtai.php

@@ -0,0 +1,179 @@
+<?php
+
+namespace app\admin\controller;
+
+use app\common\controller\Backend;
+use think\Db;
+/**
+ * 用户动态
+ *
+ * @icon fa fa-circle-o
+ */
+class Topicdongtai extends Backend
+{
+    protected $noNeedRight = ['delete_dongtai'];
+    /**
+     * Topicdongtai模型对象
+     * @var \app\admin\model\Topicdongtai
+     */
+    protected $model = null;
+
+    public function _initialize()
+    {
+        parent::_initialize();
+        $this->model = new \app\admin\model\Topicdongtai;
+        $this->view->assign("typeList", $this->model->getTypeList());
+        $this->view->assign("isPublicList", $this->model->getIsPublicList());
+        $this->view->assign("auditstatusList", $this->model->getAuditstatusList());
+    }
+
+    public function import()
+    {
+        parent::import();
+    }
+
+    /**
+     * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
+     * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
+     * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
+     */
+    
+
+    /**
+     * 查看
+     */
+    public function index()
+    {
+        //当前是否为关联查询
+        $this->relationSearch = true;
+        //设置过滤方法
+        $this->request->filter(['strip_tags', 'trim']);
+        if ($this->request->isAjax()) {
+            //如果发送的来源是Selectpage,则转发到Selectpage
+            if ($this->request->request('keyField')) {
+                return $this->selectpage();
+            }
+            list($where, $sort, $order, $offset, $limit) = $this->buildparams();
+
+            $list = $this->model
+                    ->with(['user','topichub'])
+                    ->where($where)
+                    ->order('topicdongtai.toptime desc')
+                    ->order($sort, $order)
+                    //->select(false);echo $list;exit;
+                    ->paginate($limit);
+
+            foreach ($list as $row) {
+                
+                $row->getRelation('user')->visible(['username']);
+				$row->getRelation('topichub')->visible(['name']);
+            }
+
+            $result = array("total" => $list->total(), "rows" => $list->items());
+
+            return json($result);
+        }
+        return $this->view->fetch();
+    }
+
+    /**
+     * 置顶
+     */
+    public function toptime(){
+
+        if ($this->request->isAjax()) {
+            $id = input('id',0);
+
+            $rs = Db::name('topic_dongtai')->where('id',$id)->update(['toptime'=>time()]);
+
+            $this->success('完成');
+        }
+
+    }
+
+    /**
+     * 取消置顶
+     */
+    public function untoptime(){
+
+        if ($this->request->isAjax()) {
+            $id = input('id',0);
+
+            $rs = Db::name('topic_dongtai')->where('id',$id)->update(['toptime'=>0]);
+
+            $this->success('完成');
+        }
+
+    }
+
+    /**
+     * 删除
+     */
+    public function del($ids = "")
+    {
+        if (!$this->request->isPost()) {
+            $this->error(__("Invalid parameters"));
+        }
+        $ids = $ids ? $ids : $this->request->post("ids");
+        if ($ids) {
+            $pk = $this->model->getPk();
+            $adminIds = $this->getDataLimitAdminIds();
+            if (is_array($adminIds)) {
+                $this->model->where($this->dataLimitField, 'in', $adminIds);
+            }
+            $list = $this->model->where($pk, 'in', $ids)->select();
+
+            $count = 0;
+            Db::startTrans();
+            try {
+                foreach ($list as $k => $v) {
+                    $count ++;
+
+                    $this->delete_dongtai($v['id']);
+                }
+                Db::commit();
+            } catch (PDOException $e) {
+                Db::rollback();
+                $this->error($e->getMessage());
+            } catch (Exception $e) {
+                Db::rollback();
+                $this->error($e->getMessage());
+            }
+            if ($count) {
+                $this->success();
+            } else {
+                $this->error(__('No rows were deleted'));
+            }
+        }
+        $this->error(__('Parameter %s can not be empty', 'ids'));
+    }
+
+    /**
+     * 动态删除
+     */
+    private function delete_dongtai($id){
+
+        $where['id'] = $id;
+        $dongtai = Db::name('topic_dongtai')->field('id,topic_ids')->where($where)->find();
+        if (empty($dongtai)) {
+            return true;
+        }
+
+        $delRes = Db::name('topic_dongtai')->where('id',$id)->delete();
+
+        //话题少一个贴
+        if (!empty($dongtai['topic_ids'])) {
+            $res = Db::name('topic_hub')->where('id','IN',$dongtai['topic_ids'])->setDec('t_number');
+        }
+        //删除对应的评论,
+        Db::name('topic_dongtai_answer')->where('dt_id',$id)->delete();
+        //点赞,
+        Db::name('topic_dongtai_good')->where('dt_id',$id)->delete();
+        //评论点赞
+        Db::name('topic_answer_good')->where('dt_id',$id)->delete();
+
+
+
+    }
+
+}

+ 145 - 0
application/admin/controller/Topicdongtaianswer.php

@@ -0,0 +1,145 @@
+<?php
+
+namespace app\admin\controller;
+
+use app\common\controller\Backend;
+use think\Db;
+/**
+ * 动态评论管理
+ *
+ * @icon fa fa-circle-o
+ */
+class Topicdongtaianswer extends Backend
+{
+
+    protected $noNeedRight = ['delete_answer'];
+    /**
+     * Topicdongtaianswer模型对象
+     * @var \app\admin\model\Topicdongtaianswer
+     */
+    protected $model = null;
+
+    public function _initialize()
+    {
+        parent::_initialize();
+        $this->model = new \app\admin\model\Topicdongtaianswer;
+        $this->view->assign("levelList", $this->model->getLevelList());
+    }
+
+    public function import()
+    {
+        parent::import();
+    }
+
+    /**
+     * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
+     * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
+     * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
+     */
+    
+
+    /**
+     * 查看
+     */
+    public function index()
+    {
+        //当前是否为关联查询
+        $this->relationSearch = true;
+        //设置过滤方法
+        $this->request->filter(['strip_tags', 'trim']);
+        if ($this->request->isAjax()) {
+            //如果发送的来源是Selectpage,则转发到Selectpage
+            if ($this->request->request('keyField')) {
+                return $this->selectpage();
+            }
+            list($where, $sort, $order, $offset, $limit) = $this->buildparams();
+
+            $list = $this->model
+                    ->with(['user'])
+                    ->where($where)
+                    ->order($sort, $order)
+                    ->paginate($limit);
+
+            foreach ($list as $row) {
+                
+                $row->getRelation('user')->visible(['username']);
+            }
+
+            $result = array("total" => $list->total(), "rows" => $list->items());
+
+            return json($result);
+        }
+        return $this->view->fetch();
+    }
+
+    /**
+     * 删除
+     */
+    public function del($ids = "")
+    {
+        if (!$this->request->isPost()) {
+            $this->error(__("Invalid parameters"));
+        }
+        $ids = $ids ? $ids : $this->request->post("ids");
+        if ($ids) {
+            $pk = $this->model->getPk();
+            $adminIds = $this->getDataLimitAdminIds();
+            if (is_array($adminIds)) {
+                $this->model->where($this->dataLimitField, 'in', $adminIds);
+            }
+            $list = $this->model->where($pk, 'in', $ids)->select();
+
+            $count = 0;
+            Db::startTrans();
+            try {
+                foreach ($list as $k => $v) {
+                    $count ++;
+
+                    $this->delete_answer($v['id']);
+                }
+                Db::commit();
+            } catch (PDOException $e) {
+                Db::rollback();
+                $this->error($e->getMessage());
+            } catch (Exception $e) {
+                Db::rollback();
+                $this->error($e->getMessage());
+            }
+            if ($count) {
+                $this->success();
+            } else {
+                $this->error(__('No rows were deleted'));
+            }
+        }
+        $this->error(__('Parameter %s can not be empty', 'ids'));
+    }
+
+    /**
+     * 删除
+     */
+    private function delete_answer($id){
+
+        $info = Db::name('topic_dongtai_answer')->where('id',$id)->find();
+        if(!$info){
+            return true;
+        }
+
+        if($info['level'] == 1){
+
+            //楼层内都删
+            $louceng_id = Db::name('topic_dongtai_answer')->where('dt_id',$info['dt_id'])->where('level',2)->where('floor',$info['floor'])->column('id');
+            if(!empty($louceng_id)){
+                Db::name('topic_dongtai')->where('id',$info['dt_id'])->setDec('answernum',count($louceng_id));//回复数减1
+                Db::name('topic_dongtai_answer')->where('id','IN',$louceng_id)->delete();//评论删掉
+                Db::name('topic_answer_good')->where('answer_id','IN',$louceng_id)->delete();//评论点赞删掉
+            }
+
+        }
+
+        Db::name('topic_dongtai')->where('id',$info['dt_id'])->setDec('answernum');//回复数减1
+        Db::name('topic_dongtai_answer')->where('id',$id)->delete();  //评论删掉
+        Db::name('topic_answer_good')->where('answer_id',$id)->delete();//评论点赞删掉
+
+    }
+
+}

+ 35 - 0
application/admin/lang/zh-cn/topicdongtai.php

@@ -0,0 +1,35 @@
+<?php
+
+return [
+    'Id'            => 'ID',
+    'Topic_ids'     => '话题id',
+    'User_id'       => '用户ID',
+    'Content'       => '内容',
+    'Images'        => '图片集',
+    'Audio_file'    => '语音地址',
+    'Audio_second'  => '语音秒数',
+    'Type'          => '媒体类型',
+    'Type 1'        => '图片',
+    'Type 2'        => '语音',
+    'Goodnum'       => '点赞数量',
+    'Answernum'     => '总的回复数量',
+    'Createtime'    => '创建时间',
+    'Updatetime'    => '更新时间',
+    'Cityname'      => '所在城市',
+    'Longitude'     => '经度',
+    'Latitude'      => '纬度',
+    'Aite'          => '艾特了谁',
+    'Is_public'     => '是否公开',
+    'Is_public 1'   => '公开',
+    'Is_public 2'   => '私密',
+    'Toptime'       => '置顶顺序',
+    'Auditstatus'   => '审核状态',
+    'Auditstatus 0' => '待审核',
+    'Auditstatus 1' => '审核通过',
+    'Auditstatus 2' => '审核驳回',
+    'Audittime'     => '审核时间',
+    'Auditremark'   => '审核备注',
+    'User.username' => '用户名',
+    'Topichub.name' => '话题名称',
+    'toptime'       => '置顶时间',
+];

+ 17 - 0
application/admin/lang/zh-cn/topicdongtaianswer.php

@@ -0,0 +1,17 @@
+<?php
+
+return [
+    'Id'            => 'ID',
+    'Dt_id'         => '动态ID',
+    'Floor'         => '楼层',
+    'User_id'       => '用户ID',
+    'Content'       => '内容',
+    'To_user_id'    => '对谁说',
+    'Goodnum'       => '点赞数量',
+    'Level'         => '回复类型',
+    'Level 1'       => '层主回复',
+    'Level 2'       => '层中回复',
+    'Createtime'    => '创建时间',
+    'Updatetime'    => '更新时间',
+    'User.username' => '用户名'
+];

+ 135 - 0
application/admin/model/Topicdongtai.php

@@ -0,0 +1,135 @@
+<?php
+
+namespace app\admin\model;
+
+use think\Model;
+
+
+class Topicdongtai extends Model
+{
+
+    
+
+    
+
+    // 表名
+    protected $name = 'topic_dongtai';
+    
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+    protected $deleteTime = false;
+
+    // 追加属性
+    protected $append = [
+        'type_text',
+        'is_public_text',
+        'toptime_text',
+        'auditstatus_text',
+        'audittime_text'
+    ];
+
+    protected static function init()
+    {
+        self::afterUpdate(function ($row) {
+            $changed = $row->getChangedData();
+            //如果有修改密码
+            if (isset($changed['auditstatus'])) {
+
+                //如果强制审核,默认不通过
+                $dongtai_audit_switch = config('site.dongtai_audit_switch');
+                if($dongtai_audit_switch == 1){
+                    //暂时不影响
+                }
+
+                if ($changed['auditstatus'] == 2) {
+                    //驳回
+                    $msg_id = \app\common\model\Message::addMessage($row['user_id'],'动态审核','动态审核不通过:'.$row['auditremark']);
+
+                } elseif($changed['auditstatus'] == 1) {
+                    //通过
+                    //$msg_id = \app\common\model\Message::addMessage($row['user_id'],'动态审核','动态审核通过');
+                }
+            }
+        });
+    }
+
+    
+    public function getTypeList()
+    {
+        return ['1' => __('Type 1'), '2' => __('Type 2')];
+    }
+
+    public function getIsPublicList()
+    {
+        return ['1' => __('Is_public 1'), '2' => __('Is_public 2')];
+    }
+
+    public function getAuditstatusList()
+    {
+        return ['0' => __('Auditstatus 0'), '1' => __('Auditstatus 1'), '2' => __('Auditstatus 2')];
+    }
+
+
+    public function getTypeTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['type']) ? $data['type'] : '');
+        $list = $this->getTypeList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+
+    public function getIsPublicTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['is_public']) ? $data['is_public'] : '');
+        $list = $this->getIsPublicList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+
+    public function getToptimeTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['toptime']) ? $data['toptime'] : '');
+        return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
+    }
+
+
+    public function getAuditstatusTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['auditstatus']) ? $data['auditstatus'] : '');
+        $list = $this->getAuditstatusList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+
+    public function getAudittimeTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['audittime']) ? $data['audittime'] : '');
+        return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
+    }
+
+    protected function setToptimeAttr($value)
+    {
+        return $value === '' ? 0 : ($value && !is_numeric($value) ? strtotime($value) : $value);
+    }
+
+    protected function setAudittimeAttr($value)
+    {
+        return $value === '' ? 0 : ($value && !is_numeric($value) ? strtotime($value) : $value);
+    }
+
+
+    public function user()
+    {
+        return $this->belongsTo('User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+
+
+    public function topichub()
+    {
+        return $this->belongsTo('Topichub', 'topic_ids', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+}

+ 53 - 0
application/admin/model/Topicdongtaianswer.php

@@ -0,0 +1,53 @@
+<?php
+
+namespace app\admin\model;
+
+use think\Model;
+
+
+class Topicdongtaianswer extends Model
+{
+
+    
+
+    
+
+    // 表名
+    protected $name = 'topic_dongtai_answer';
+    
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+    protected $deleteTime = false;
+
+    // 追加属性
+    protected $append = [
+        'level_text'
+    ];
+    
+
+    
+    public function getLevelList()
+    {
+        return ['1' => __('Level 1'), '2' => __('Level 2')];
+    }
+
+
+    public function getLevelTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['level']) ? $data['level'] : '');
+        $list = $this->getLevelList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+
+
+
+    public function user()
+    {
+        return $this->belongsTo('User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+}

+ 27 - 0
application/admin/validate/Topicdongtai.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace app\admin\validate;
+
+use think\Validate;
+
+class Topicdongtai extends Validate
+{
+    /**
+     * 验证规则
+     */
+    protected $rule = [
+    ];
+    /**
+     * 提示消息
+     */
+    protected $message = [
+    ];
+    /**
+     * 验证场景
+     */
+    protected $scene = [
+        'add'  => [],
+        'edit' => [],
+    ];
+    
+}

+ 27 - 0
application/admin/validate/Topicdongtaianswer.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace app\admin\validate;
+
+use think\Validate;
+
+class Topicdongtaianswer extends Validate
+{
+    /**
+     * 验证规则
+     */
+    protected $rule = [
+    ];
+    /**
+     * 提示消息
+     */
+    protected $message = [
+    ];
+    /**
+     * 验证场景
+     */
+    protected $scene = [
+        'add'  => [],
+        'edit' => [],
+    ];
+    
+}

+ 152 - 0
application/admin/view/topicdongtai/add.html

@@ -0,0 +1,152 @@
+<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">{:__('Topic_ids')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-topic_ids" data-rule="required" data-source="topic/index" data-multiple="true" class="form-control selectpage" name="row[topic_ids]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <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="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-content" data-rule="required" class="form-control" name="row[content]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Images')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-images" data-rule="required" class="form-control" size="50" name="row[images]" type="text" value="">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="faupload-images" class="btn btn-danger faupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="true" data-preview-id="p-images"><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-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-images"></span>
+            </div>
+            <ul class="row list-inline faupload-preview" id="p-images"></ul>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Audio_file')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-audio_file" data-rule="required" class="form-control" size="50" name="row[audio_file]" type="text" value="">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="faupload-audio_file" class="btn btn-danger faupload" data-input-id="c-audio_file" data-multiple="false" data-preview-id="p-audio_file"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-audio_file" class="btn btn-primary fachoose" data-input-id="c-audio_file" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-audio_file"></span>
+            </div>
+            <ul class="row list-inline faupload-preview" id="p-audio_file"></ul>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Audio_second')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-audio_second" data-rule="required" class="form-control" name="row[audio_second]" type="number" value="0">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-type" data-rule="required" class="form-control selectpicker" name="row[type]">
+                {foreach name="typeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="1"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goodnum')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goodnum" data-rule="required" class="form-control" name="row[goodnum]" type="number" value="0">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Answernum')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-answernum" data-rule="required" class="form-control" name="row[answernum]" type="number" value="0">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Cityname')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-cityname" data-rule="required" class="form-control" name="row[cityname]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Longitude')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-longitude" data-rule="required" class="form-control" name="row[longitude]" type="text">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Latitude')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-latitude" data-rule="required" class="form-control" name="row[latitude]" type="text">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Aite')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-aite" data-rule="required" class="form-control" name="row[aite]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Is_public')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-is_public" data-rule="required" class="form-control selectpicker" name="row[is_public]">
+                {foreach name="isPublicList" item="vo"}
+                    <option value="{$key}" {in name="key" value="1"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Toptime')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-toptime" data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[toptime]" type="text" value="{:date('Y-m-d H:i:s')}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Auditstatus')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <div class="radio">
+            {foreach name="auditstatusList" item="vo"}
+            <label for="row[auditstatus]-{$key}"><input id="row[auditstatus]-{$key}" name="row[auditstatus]" 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">{:__('Audittime')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-audittime" data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[audittime]" type="text" value="{:date('Y-m-d H:i:s')}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Auditremark')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-auditremark" data-rule="required" class="form-control" name="row[auditremark]" type="text" value="">
+        </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>

+ 147 - 0
application/admin/view/topicdongtai/edit.html

@@ -0,0 +1,147 @@
+<form id="edit-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">{:__('Topic_ids')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-topic_ids" data-source="topichub/index" data-multiple="true" class="form-control selectpage" name="row[topic_ids]" type="text" value="{$row.topic_ids|htmlentities}">
+        </div>
+    </div>
+    <!--<div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <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="{$row.user_id|htmlentities}">
+        </div>
+    </div>-->
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-content" class="form-control" name="row[content]" rows="10">{$row.content|htmlentities}</textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select  id="c-type" data-rule="required" class="form-control selectpicker" name="row[type]">
+                {foreach name="typeList" item="vo"}
+                <option value="{$key}" {in name="key" value="$row.type"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Images')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-images" class="form-control" size="50" name="row[images]" type="text" value="{$row.images|htmlentities}">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="faupload-images" class="btn btn-danger faupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="true" data-preview-id="p-images"><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-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-images"></span>
+            </div>
+            <ul class="row list-inline faupload-preview" id="p-images"></ul>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Audio_file')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-audio_file" class="form-control" size="50" name="row[audio_file]" type="text" value="{$row.audio_file|htmlentities}">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="faupload-audio_file" class="btn btn-danger faupload" data-input-id="c-audio_file" data-multiple="false" data-preview-id="p-audio_file"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-audio_file" class="btn btn-primary fachoose" data-input-id="c-audio_file" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-audio_file"></span>
+            </div>
+            <ul class="row list-inline faupload-preview" id="p-audio_file"></ul>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Audio_second')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-audio_second" class="form-control" name="row[audio_second]" type="number" value="{$row.audio_second|htmlentities}">
+        </div>
+    </div>
+
+    <!--<div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goodnum')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goodnum" data-rule="required" class="form-control" name="row[goodnum]" type="number" value="{$row.goodnum|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Answernum')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-answernum" data-rule="required" class="form-control" name="row[answernum]" type="number" value="{$row.answernum|htmlentities}">
+        </div>
+    </div>-->
+    <!--<div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Cityname')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-cityname" data-rule="required" class="form-control" name="row[cityname]" type="text" value="{$row.cityname|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Longitude')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-longitude" data-rule="required" class="form-control" name="row[longitude]" type="text" value="{$row.longitude|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Latitude')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-latitude" data-rule="required" class="form-control" name="row[latitude]" type="text" value="{$row.latitude|htmlentities}">
+        </div>
+    </div>-->
+    <!--<div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Aite')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-aite" data-rule="required" class="form-control" name="row[aite]" type="text" value="{$row.aite|htmlentities}">
+        </div>
+    </div>-->
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Is_public')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-is_public" data-rule="required" class="form-control selectpicker" name="row[is_public]">
+                {foreach name="isPublicList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.is_public"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Auditstatus')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <div class="radio">
+            {foreach name="auditstatusList" item="vo"}
+            <label for="row[auditstatus]-{$key}"><input id="row[auditstatus]-{$key}" name="row[auditstatus]" type="radio" value="{$key}" {in name="key" value="$row.auditstatus"}checked{/in} /> {$vo}</label> 
+            {/foreach}
+            </div>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Audittime')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-audittime" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[audittime]" type="text" value="{:$row.audittime?datetime($row.audittime):''}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Auditremark')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-auditremark" class="form-control" name="row[auditremark]" type="text" value="{$row.auditremark|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>

+ 37 - 0
application/admin/view/topicdongtai/index.html

@@ -0,0 +1,37 @@
+<div class="panel panel-default panel-intro">
+    {:build_heading()}
+
+    <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('topicdongtai/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('topicdongtai/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('topicdongtai/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
+                        <a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('topicdongtai/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>
+
+                        <div class="dropdown btn-group {:$auth->check('topicdongtai/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=normal"><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=hidden"><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('topicdongtai/edit')}" 
+                           data-operate-del="{:$auth->check('topicdongtai/del')}" 
+                           data-operate-toptime="{:$auth->check('topicdongtai/toptime')}"
+                           data-operate-untoptime="{:$auth->check('topicdongtai/untoptime')}"
+                           width="100%">
+                    </table>
+                </div>
+            </div>
+
+        </div>
+    </div>
+</div>

+ 58 - 0
application/admin/view/topicdongtaianswer/add.html

@@ -0,0 +1,58 @@
+<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">{:__('Dt_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-dt_id" data-rule="required" data-source="dt/index" class="form-control selectpage" name="row[dt_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Floor')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-floor" class="form-control" name="row[floor]" type="number" value="2">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <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="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-content" class="form-control" name="row[content]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('To_user_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-to_user_id" data-rule="required" data-source="to/user/index" class="form-control selectpage" name="row[to_user_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goodnum')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goodnum" class="form-control" name="row[goodnum]" type="number" value="0">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Level')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-level" class="form-control selectpicker" name="row[level]">
+                {foreach name="levelList" item="vo"}
+                    <option value="{$key}" {in name="key" value="1"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </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>

+ 58 - 0
application/admin/view/topicdongtaianswer/edit.html

@@ -0,0 +1,58 @@
+<form id="edit-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">{:__('Dt_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-dt_id" data-rule="required" data-source="dt/index" class="form-control selectpage" name="row[dt_id]" type="text" value="{$row.dt_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Floor')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-floor" class="form-control" name="row[floor]" type="number" value="{$row.floor|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <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="{$row.user_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-content" class="form-control" name="row[content]" type="text" value="{$row.content|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('To_user_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-to_user_id" data-rule="required" data-source="to/user/index" class="form-control selectpage" name="row[to_user_id]" type="text" value="{$row.to_user_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goodnum')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goodnum" class="form-control" name="row[goodnum]" type="number" value="{$row.goodnum|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Level')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-level" class="form-control selectpicker" name="row[level]">
+                {foreach name="levelList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.level"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </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>

+ 35 - 0
application/admin/view/topicdongtaianswer/index.html

@@ -0,0 +1,35 @@
+<div class="panel panel-default panel-intro">
+    {:build_heading()}
+
+    <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('topicdongtaianswer/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('topicdongtaianswer/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('topicdongtaianswer/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
+                        <a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('topicdongtaianswer/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>
+
+                        <div class="dropdown btn-group {:$auth->check('topicdongtaianswer/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=normal"><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=hidden"><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('topicdongtaianswer/edit')}" 
+                           data-operate-del="{:$auth->check('topicdongtaianswer/del')}" 
+                           width="100%">
+                    </table>
+                </div>
+            </div>
+
+        </div>
+    </div>
+</div>

+ 140 - 0
public/assets/js/backend/topicdongtai.js

@@ -0,0 +1,140 @@
+define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
+
+    var Controller = {
+        index: function () {
+            // 初始化表格参数配置
+            Table.api.init({
+                extend: {
+                    index_url: 'topicdongtai/index' + location.search,
+                    add_url: 'topicdongtai/add',
+                    edit_url: 'topicdongtai/edit',
+                    del_url: 'topicdongtai/del',
+                    multi_url: 'topicdongtai/multi',
+                    import_url: 'topicdongtai/import',
+                    table: 'topic_dongtai',
+                }
+            });
+
+            var table = $("#table");
+
+            // 初始化表格
+            table.bootstrapTable({
+                url: $.fn.bootstrapTable.defaults.extend.index_url,
+                pk: 'id',
+                sortName: 'id',
+                sortOrder: 'desc',
+                columns: [
+                    [
+                        {checkbox: true},
+                        {field: 'id', title: __('Id')},
+//                        {field: 'topic_ids', title: __('Topic_ids'), operate: 'LIKE'},
+//                        {field: 'topichub.name', title: __('Topichub.name'), operate: 'LIKE'},
+
+                        {field: 'user_id', title: __('User_id')},
+                        {field: 'user.username', title: __('User.username'),sortable:true, operate: 'LIKE'},
+
+                        {field: 'content', title: __('Content'), operate: 'LIKE',
+                            cellStyle:  {css: {
+                                "white-space": "break-spaces",
+                                "max-width": "200px",
+                                "min-width": "200px",
+                                "word-break": "break-all",
+                                "text-overflow": "inherit",
+                                "overflow": "visible",
+                            }
+                            }
+                        },
+                        {field: 'images', title: __('Images'), operate: false,
+                            cellStyle:  {css: {
+                                "white-space": "break-spaces",
+                                "max-width": "150px",
+                                "min-width": "150px",
+                                "word-break": "break-all",
+                                "text-overflow": "inherit",
+                                "overflow": "visible",
+                            }
+                            },
+                            events: Table.api.events.image, formatter: Table.api.formatter.images},
+                        {field: 'type', title: __('Type'), searchList: {"1":__('Type 1'),"2":__('Type 2')}, formatter: Table.api.formatter.normal},
+                        {field: 'audio_file', title: __('Audio_file'), operate: false,events: Table.api.events.image, formatter: Table.api.formatter.audio},
+//                        {field: 'audio_second', title: __('Audio_second')},
+//                        {field: 'goodnum', title: __('Goodnum')},
+//                        {field: 'answernum', title: __('Answernum')},
+                        {field: 'createtime', title: __('Createtime'),sortable:true, operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
+//                        {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
+//                        {field: 'cityname', title: __('Cityname'), operate: 'LIKE'},
+//                        {field: 'longitude', title: __('Longitude'), operate: 'LIKE'},
+//                        {field: 'latitude', title: __('Latitude'), operate: 'LIKE'},
+//                        {field: 'aite', title: __('Aite'), operate: 'LIKE'},
+                        {field: 'is_public', title: __('Is_public'), searchList: {"1":__('Is_public 1'),"2":__('Is_public 2')}, formatter: Table.api.formatter.normal},
+                        {field: 'toptime', title: __('toptime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
+                        {field: 'auditstatus', title: __('Auditstatus'), searchList: {"0":__('Auditstatus 0'),"1":__('Auditstatus 1'),"2":__('Auditstatus 2')}, formatter: Table.api.formatter.status},
+                        {field: 'audittime', title: __('Audittime'),sortable:true, operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
+                        {field: 'auditremark', title: __('Auditremark'), operate: 'LIKE',
+                            cellStyle:  {css: {
+                                "white-space": "break-spaces",
+                                "max-width": "100px",
+                                "min-width": "100px",
+                                "word-break": "break-all",
+                                "text-overflow": "inherit",
+                                "overflow": "visible",
+                            }
+                            }
+                        },
+                        {field: 'operate', title: __('Operate'), table: table,
+                            buttons:[
+                                {
+                                    name:'toptime',
+                                    text:'置顶',
+                                    title:'置顶',
+                                    icon:'fa fa-exclamation-circle',
+                                    classname:'btn btn-xs btn-info btn-ajax',
+                                    url:'topicdongtai/toptime/id/{ids}?dialog=1',
+                                    target:'_self',
+                                    refresh:true,
+                                },
+                                {
+                                    name:'untoptime',
+                                    text:'取消置顶',
+                                    title:'取消置顶',
+                                    icon:'fa fa-exclamation-circle',
+                                    classname:'btn btn-xs btn-info btn-ajax',
+                                    url:'topicdongtai/untoptime/id/{ids}?dialog=1',
+                                    target:'_self',
+                                    hidden:function(row){
+                                        if(row.toptime > 0){
+                                            return false;
+                                        }
+                                        return true;
+                                    },
+                                    refresh:true,
+                                }
+                            ],
+                            events: Table.api.events.operate, formatter: Table.api.formatter.operate}
+                    ]
+                ]
+            });
+
+            // 为表格绑定事件
+            Table.api.bindevent(table);
+        },
+        toptime: function () {
+            Controller.api.bindevent();
+        },
+        untoptime: function () {
+            Controller.api.bindevent();
+        },
+        add: function () {
+            Controller.api.bindevent();
+        },
+        edit: function () {
+            Controller.api.bindevent();
+        },
+        api: {
+            bindevent: function () {
+                Form.api.bindevent($("form[role=form]"));
+            }
+        }
+    };
+    return Controller;
+});

+ 60 - 0
public/assets/js/backend/topicdongtaianswer.js

@@ -0,0 +1,60 @@
+define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
+
+    var Controller = {
+        index: function () {
+            // 初始化表格参数配置
+            Table.api.init({
+                extend: {
+                    index_url: 'topicdongtaianswer/index' + location.search,
+                    add_url: 'topicdongtaianswer/add',
+//                    edit_url: 'topicdongtaianswer/edit',
+                    del_url: 'topicdongtaianswer/del',
+                    multi_url: 'topicdongtaianswer/multi',
+                    import_url: 'topicdongtaianswer/import',
+                    table: 'topic_dongtai_answer',
+                }
+            });
+
+            var table = $("#table");
+
+            // 初始化表格
+            table.bootstrapTable({
+                url: $.fn.bootstrapTable.defaults.extend.index_url,
+                pk: 'id',
+                sortName: 'id',
+                columns: [
+                    [
+                        {checkbox: true},
+                        {field: 'id', title: __('Id')},
+                        {field: 'dt_id', title: __('Dt_id')},
+                        {field: 'floor', title: __('Floor')},
+//                        {field: 'user_id', title: __('User_id')},
+                        {field: 'content', title: __('Content'), operate: 'LIKE'},
+//                        {field: 'to_user_id', title: __('To_user_id')},
+                        {field: 'goodnum', title: __('Goodnum')},
+                        {field: 'level', title: __('Level'), searchList: {"1":__('Level 1'),"2":__('Level 2')}, formatter: Table.api.formatter.normal},
+                        {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
+                        {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
+                        {field: 'user.username', title: __('User.username'), operate: 'LIKE'},
+                        {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
+                    ]
+                ]
+            });
+
+            // 为表格绑定事件
+            Table.api.bindevent(table);
+        },
+        add: function () {
+            Controller.api.bindevent();
+        },
+        edit: function () {
+            Controller.api.bindevent();
+        },
+        api: {
+            bindevent: function () {
+                Form.api.bindevent($("form[role=form]"));
+            }
+        }
+    };
+    return Controller;
+});