网站留言
This commit is contained in:
		
							parent
							
								
									03c19a0c31
								
							
						
					
					
						commit
						6bc3a32e79
					
				@ -18,6 +18,8 @@ class Encyclopedia extends Backend
 | 
			
		||||
     */
 | 
			
		||||
    protected $model = null;
 | 
			
		||||
 | 
			
		||||
    protected $searchFields = ["id","title","subtitle","source"];
 | 
			
		||||
 | 
			
		||||
    public function _initialize()
 | 
			
		||||
    {
 | 
			
		||||
        parent::_initialize();
 | 
			
		||||
 | 
			
		||||
@ -17,6 +17,7 @@ class Information extends Backend
 | 
			
		||||
     * @var \app\admin\model\home\Information
 | 
			
		||||
     */
 | 
			
		||||
    protected $model = null;
 | 
			
		||||
    protected $searchFields = ["id","title","subtitle","source"];
 | 
			
		||||
 | 
			
		||||
    public function _initialize()
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
@ -3,6 +3,10 @@
 | 
			
		||||
namespace app\admin\controller\home;
 | 
			
		||||
 | 
			
		||||
use app\common\controller\Backend;
 | 
			
		||||
use think\Db;
 | 
			
		||||
use think\exception\DbException;
 | 
			
		||||
use think\exception\PDOException;
 | 
			
		||||
use think\exception\ValidateException;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 网站留言
 | 
			
		||||
@ -23,6 +27,7 @@ class LeaveWord extends Backend
 | 
			
		||||
        parent::_initialize();
 | 
			
		||||
        $this->model = new \app\admin\model\home\LeaveWord;
 | 
			
		||||
        $this->view->assign("statusList", $this->model->getStatusList());
 | 
			
		||||
        $this->view->assign("showList", $this->model->getShowList());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -34,4 +39,105 @@ class LeaveWord extends Backend
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 添加
 | 
			
		||||
     *
 | 
			
		||||
     * @return string
 | 
			
		||||
     * @throws \think\Exception
 | 
			
		||||
     */
 | 
			
		||||
    public function add()
 | 
			
		||||
    {
 | 
			
		||||
        if (false === $this->request->isPost()) {
 | 
			
		||||
            return $this->view->fetch();
 | 
			
		||||
        }
 | 
			
		||||
        $params = $this->request->post('row/a');
 | 
			
		||||
        if (empty($params)) {
 | 
			
		||||
            $this->error(__('Parameter %s can not be empty', ''));
 | 
			
		||||
        }
 | 
			
		||||
        $params = $this->preExcludeFields($params);
 | 
			
		||||
 | 
			
		||||
        if ($this->dataLimit && $this->dataLimitFieldAutoFill) {
 | 
			
		||||
            $params[$this->dataLimitField] = $this->auth->id;
 | 
			
		||||
        }
 | 
			
		||||
        $result = false;
 | 
			
		||||
        Db::startTrans();
 | 
			
		||||
        try {
 | 
			
		||||
            //是否采用模型验证
 | 
			
		||||
            if ($this->modelValidate) {
 | 
			
		||||
                $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
 | 
			
		||||
                $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate;
 | 
			
		||||
                $this->model->validateFailException()->validate($validate);
 | 
			
		||||
            }
 | 
			
		||||
            if($params["status"]=='2' && !$params["answer"]) {
 | 
			
		||||
                $this->error("已处理,请填写回复内容!");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            $result = $this->model->allowField(true)->save($params);
 | 
			
		||||
            Db::commit();
 | 
			
		||||
        } catch (ValidateException|PDOException|Exception $e) {
 | 
			
		||||
            Db::rollback();
 | 
			
		||||
            $this->error($e->getMessage());
 | 
			
		||||
        }
 | 
			
		||||
        if ($result === false) {
 | 
			
		||||
            $this->error(__('No rows were inserted'));
 | 
			
		||||
        }
 | 
			
		||||
        $this->success();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 编辑
 | 
			
		||||
     *
 | 
			
		||||
     * @param $ids
 | 
			
		||||
     * @return string
 | 
			
		||||
     * @throws DbException
 | 
			
		||||
     * @throws \think\Exception
 | 
			
		||||
     */
 | 
			
		||||
    public function edit($ids = null)
 | 
			
		||||
    {
 | 
			
		||||
        $row = $this->model->get($ids);
 | 
			
		||||
        if (!$row) {
 | 
			
		||||
            $this->error(__('No Results were found'));
 | 
			
		||||
        }
 | 
			
		||||
        $adminIds = $this->getDataLimitAdminIds();
 | 
			
		||||
        if (is_array($adminIds) && !in_array($row[$this->dataLimitField], $adminIds)) {
 | 
			
		||||
            $this->error(__('You have no permission'));
 | 
			
		||||
        }
 | 
			
		||||
        if (false === $this->request->isPost()) {
 | 
			
		||||
            $this->view->assign('row', $row);
 | 
			
		||||
            return $this->view->fetch();
 | 
			
		||||
        }
 | 
			
		||||
        $params = $this->request->post('row/a');
 | 
			
		||||
        if (empty($params)) {
 | 
			
		||||
            $this->error(__('Parameter %s can not be empty', ''));
 | 
			
		||||
        }
 | 
			
		||||
        $params = $this->preExcludeFields($params);
 | 
			
		||||
        $result = false;
 | 
			
		||||
        Db::startTrans();
 | 
			
		||||
        try {
 | 
			
		||||
            //是否采用模型验证
 | 
			
		||||
            if ($this->modelValidate) {
 | 
			
		||||
                $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
 | 
			
		||||
                $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;
 | 
			
		||||
                $row->validateFailException()->validate($validate);
 | 
			
		||||
            }
 | 
			
		||||
            if($params["status"]=='2' && !$params["answer"]) {
 | 
			
		||||
                $this->error("已处理,请填写回复内容!");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            $result = $row->allowField(true)->save($params);
 | 
			
		||||
            Db::commit();
 | 
			
		||||
        } catch (ValidateException|PDOException|Exception $e) {
 | 
			
		||||
            Db::rollback();
 | 
			
		||||
            $this->error($e->getMessage());
 | 
			
		||||
        }
 | 
			
		||||
        if (false === $result) {
 | 
			
		||||
            $this->error(__('No rows were updated'));
 | 
			
		||||
        }
 | 
			
		||||
        $this->success();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,15 @@
 | 
			
		||||
 | 
			
		||||
namespace app\admin\controller\home;
 | 
			
		||||
 | 
			
		||||
use app\admin\library\Auth;
 | 
			
		||||
use app\common\controller\Backend;
 | 
			
		||||
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
 | 
			
		||||
use PhpOffice\PhpSpreadsheet\Reader\Csv;
 | 
			
		||||
use PhpOffice\PhpSpreadsheet\Reader\Xls;
 | 
			
		||||
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
 | 
			
		||||
use think\db\exception\BindParamException;
 | 
			
		||||
use think\Exception;
 | 
			
		||||
use think\exception\PDOException;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 新闻
 | 
			
		||||
@ -44,6 +52,9 @@ class News extends Backend
 | 
			
		||||
    {
 | 
			
		||||
        //当前是否为关联查询
 | 
			
		||||
        $this->relationSearch = true;
 | 
			
		||||
 | 
			
		||||
        $this->searchFields = ["id","title","subtitle","source","cate.name","cate.flag"];
 | 
			
		||||
 | 
			
		||||
        //设置过滤方法
 | 
			
		||||
        $this->request->filter(['strip_tags', 'trim']);
 | 
			
		||||
        if ($this->request->isAjax()) {
 | 
			
		||||
@ -71,4 +82,230 @@ class News extends Backend
 | 
			
		||||
        return $this->view->fetch();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 导入
 | 
			
		||||
     */
 | 
			
		||||
    public function import()
 | 
			
		||||
    {
 | 
			
		||||
        $file = $this->request->request('file');
 | 
			
		||||
        if (!$file) {
 | 
			
		||||
            $this->error(__('Parameter %s can not be empty', 'file'));
 | 
			
		||||
        }
 | 
			
		||||
        $filePath = ROOT_PATH . DS . 'public' . DS . $file;
 | 
			
		||||
        if (!is_file($filePath)) {
 | 
			
		||||
            $this->error(__('No results were found'));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        //实例化reader
 | 
			
		||||
        $ext = pathinfo($filePath, PATHINFO_EXTENSION);
 | 
			
		||||
        if (!in_array($ext, ['csv', 'xls', 'xlsx'])) {
 | 
			
		||||
            $this->error(__('Unknown data format'));
 | 
			
		||||
        }
 | 
			
		||||
        if ($ext === 'csv') {
 | 
			
		||||
            $file = fopen($filePath, 'r');
 | 
			
		||||
            $filePath = tempnam(sys_get_temp_dir(), 'import_csv');
 | 
			
		||||
            $fp = fopen($filePath, "w");
 | 
			
		||||
            $n = 0;
 | 
			
		||||
            while ($line = fgets($file)) {
 | 
			
		||||
                $line = rtrim($line, "\n\r\0");
 | 
			
		||||
                $encoding = mb_detect_encoding($line, ['utf-8', 'gbk', 'latin1', 'big5']);
 | 
			
		||||
                if ($encoding != 'utf-8') {
 | 
			
		||||
                    $line = mb_convert_encoding($line, 'utf-8', $encoding);
 | 
			
		||||
                }
 | 
			
		||||
                if ($n == 0 || preg_match('/^".*"$/', $line)) {
 | 
			
		||||
                    fwrite($fp, $line . "\n");
 | 
			
		||||
                } else {
 | 
			
		||||
                    fwrite($fp, '"' . str_replace(['"', ','], ['""', '","'], $line) . "\"\n");
 | 
			
		||||
                }
 | 
			
		||||
                $n++;
 | 
			
		||||
            }
 | 
			
		||||
            fclose($file) || fclose($fp);
 | 
			
		||||
 | 
			
		||||
            $reader = new Csv();
 | 
			
		||||
        } elseif ($ext === 'xls') {
 | 
			
		||||
            $reader = new Xls();
 | 
			
		||||
        } else {
 | 
			
		||||
            $reader = new Xlsx();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //导入文件首行类型,默认是注释,如果需要使用字段名称请使用name
 | 
			
		||||
        $importHeadType = isset($this->importHeadType) ? $this->importHeadType : 'comment';
 | 
			
		||||
 | 
			
		||||
        $table = $this->model->getQuery()->getTable();
 | 
			
		||||
        $database = \think\Config::get('database.database');
 | 
			
		||||
//        $fieldArr = [];
 | 
			
		||||
//        $list = db()->query("SELECT COLUMN_NAME,COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ? AND TABLE_SCHEMA = ?", [$table, $database]);
 | 
			
		||||
//        foreach ($list as $k => $v) {
 | 
			
		||||
//            if ($importHeadType == 'comment') {
 | 
			
		||||
//                $fieldArr[$v['COLUMN_COMMENT']] = $v['COLUMN_NAME'];
 | 
			
		||||
//            } else {
 | 
			
		||||
//                $fieldArr[$v['COLUMN_NAME']] = $v['COLUMN_NAME'];
 | 
			
		||||
//            }
 | 
			
		||||
//        }
 | 
			
		||||
 | 
			
		||||
        //加载文件
 | 
			
		||||
        $insert = [];
 | 
			
		||||
        try {
 | 
			
		||||
            if (!$PHPExcel = $reader->load($filePath)) {
 | 
			
		||||
                $this->error(__('Unknown data format'));
 | 
			
		||||
            }
 | 
			
		||||
            $currentSheet = $PHPExcel->getSheet(0);  //读取文件中的第一个工作表
 | 
			
		||||
            $allColumn = $currentSheet->getHighestDataColumn(); //取得最大的列号
 | 
			
		||||
            $allRow = $currentSheet->getHighestRow(); //取得一共有多少行
 | 
			
		||||
            $maxColumnNumber = Coordinate::columnIndexFromString($allColumn);
 | 
			
		||||
            $fields = []; //遍历得到第一行的字段内容
 | 
			
		||||
            for ($currentRow = 1; $currentRow <= 1; $currentRow++) {
 | 
			
		||||
                for ($currentColumn = 1; $currentColumn <= $maxColumnNumber; $currentColumn++) {
 | 
			
		||||
                    $val = $currentSheet->getCellByColumnAndRow($currentColumn, $currentRow)->getValue();
 | 
			
		||||
                    $fields[] = $val;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            //遍历余下所有行(具体数据)
 | 
			
		||||
            for ($currentRow = 2; $currentRow <= $allRow; $currentRow++) {
 | 
			
		||||
                $values = []; //得到当前行数据
 | 
			
		||||
                for ($currentColumn = 1; $currentColumn <= $maxColumnNumber; $currentColumn++) {
 | 
			
		||||
                    $val = $currentSheet->getCellByColumnAndRow($currentColumn, $currentRow)->getValue();
 | 
			
		||||
                    $values[] = is_null($val) ? '' : $val;
 | 
			
		||||
                }
 | 
			
		||||
                if(!$values[0] && !$values[0])continue;
 | 
			
		||||
 | 
			
		||||
                $row = [];
 | 
			
		||||
                $temp = array_combine($fields, $values);
 | 
			
		||||
 | 
			
		||||
                //拼接提交参数
 | 
			
		||||
                foreach ($temp as $k => $v) {
 | 
			
		||||
                    if(!$k)throw new Exception("异常的格式或存在空列,请检查!");
 | 
			
		||||
                    //保留原始数据
 | 
			
		||||
                    $raw_v  = $v;
 | 
			
		||||
                    $v = str_replace('"','',trim(strip_tags(htmlspecialchars_decode($v))));
 | 
			
		||||
                    switch ($k)
 | 
			
		||||
                    {
 | 
			
		||||
                        case "新闻标题":
 | 
			
		||||
                        case "文章标题":
 | 
			
		||||
                        case "标题":
 | 
			
		||||
                        if (!$v)throw new Exception("{$k}项有的行并未填写内容请检查!");
 | 
			
		||||
 | 
			
		||||
                            $row['title'] = $v;
 | 
			
		||||
                            break;
 | 
			
		||||
                        case "新闻副标题":
 | 
			
		||||
                        case "文章副标题":
 | 
			
		||||
                        case "副标题":
 | 
			
		||||
                            $row['subtitle'] = $v;
 | 
			
		||||
                            break;
 | 
			
		||||
                        case "发布时间":
 | 
			
		||||
                        case "时间":
 | 
			
		||||
                            $row['release_time'] = $v;
 | 
			
		||||
                            //转换时间2025/5/20 成时间戳
 | 
			
		||||
                            $row['release_time'] = strtotime($row['release_time']);
 | 
			
		||||
 | 
			
		||||
                            break;
 | 
			
		||||
                        case "内容" :
 | 
			
		||||
                        case "文章内容" :
 | 
			
		||||
 | 
			
		||||
//                            var_dump($v);die;
 | 
			
		||||
 | 
			
		||||
                            $row['content'] = $raw_v;
 | 
			
		||||
                            break;
 | 
			
		||||
                        case "新闻类目" :
 | 
			
		||||
                        case "类目" :
 | 
			
		||||
                        case "分类" :
 | 
			
		||||
                        case "分类ID" :
 | 
			
		||||
                        case "分类id" :
 | 
			
		||||
 | 
			
		||||
                            //根据name查询分类表id
 | 
			
		||||
                            if($v){
 | 
			
		||||
                                $cate = \app\admin\model\home\NewsCate::where('name',$v)->find();
 | 
			
		||||
                                if ($cate) {
 | 
			
		||||
                                    $row['cate_id'] = $cate['id'];
 | 
			
		||||
                                }else{
 | 
			
		||||
                                    //创建分类
 | 
			
		||||
                                    $cate = \app\admin\model\home\NewsCate::create([
 | 
			
		||||
                                        'name' => $v,
 | 
			
		||||
                                        'status' => 1,
 | 
			
		||||
                                        'weigh' => 0,
 | 
			
		||||
                                    ]);
 | 
			
		||||
                                    $row['cate_id'] = $cate['id'];
 | 
			
		||||
                                }
 | 
			
		||||
                            }else{
 | 
			
		||||
                                //无分类默认第一个
 | 
			
		||||
                                $row['cate_id'] = \app\admin\model\home\NewsCate::where('status',1)->order('weigh desc')->value('id');
 | 
			
		||||
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            break;
 | 
			
		||||
                        case "来源" :
 | 
			
		||||
                            $row['source']  = $v;  // 来源
 | 
			
		||||
                            break;
 | 
			
		||||
                        case "浏览量" :
 | 
			
		||||
                        case "点击数" :
 | 
			
		||||
                            $row['views']  = $v;  // 来源
 | 
			
		||||
                            break;
 | 
			
		||||
                        case "来源复合数据" :
 | 
			
		||||
                             //$v = "来源:新华社 发布日期:2025-05-20 点击数:15";
 | 
			
		||||
                            if (!$v)throw new Exception("{$k}项有的行并未填写内容请检查!");
 | 
			
		||||
 | 
			
		||||
                            // 转换编码为 UTF-8
 | 
			
		||||
                            $v = mb_convert_encoding($v, 'UTF-8', 'UTF-8,GBK,GB2312,ASCII');
 | 
			
		||||
 | 
			
		||||
                            if (preg_match('/来源:(.+?)[\\s ]+发布日期:(\d{4}-\d{2}-\d{2})[\\s ]+点击数:(\d+)/is', $v, $matches)) {
 | 
			
		||||
                                $source      = isset($matches[1]) ? trim(mb_convert_encoding($matches[1], 'UTF-8', 'auto')) : '';
 | 
			
		||||
                                $releaseDate = isset($matches[2]) ? strtotime(trim($matches[2])) : null;
 | 
			
		||||
                                $clicks      = isset($matches[3]) ? intval(trim($matches[3])) : 0;
 | 
			
		||||
 | 
			
		||||
                                $row['source']       = $source;  // 来源
 | 
			
		||||
                                $row['release_time'] = $releaseDate ?: time(); // 默认当前时间
 | 
			
		||||
                                $row['views']        = $clicks;   // 点击数
 | 
			
		||||
//                                var_dump($row);die;
 | 
			
		||||
                            } else {
 | 
			
		||||
                                $this->error("来源复合数据格式异常,请检查字段内容: {$v}");
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                            break;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                if ($row) {
 | 
			
		||||
                    //查询是否存在一样的,如果存在,忽略
 | 
			
		||||
                    $where = [
 | 
			
		||||
                        'title' => $row['title'],
 | 
			
		||||
                    ];
 | 
			
		||||
//                    unset($where['title']);
 | 
			
		||||
                    if(! \app\admin\model\home\News::where($where)->find()){
 | 
			
		||||
                        $row["weigh"] = 0;
 | 
			
		||||
                        $insert[] = $row;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
//            var_dump($values);die;
 | 
			
		||||
        } catch (Exception $exception) {
 | 
			
		||||
            $this->error($exception->getMessage());
 | 
			
		||||
        }
 | 
			
		||||
        if (!$insert) {
 | 
			
		||||
            $this->error(__('No rows were updated'));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            //$insert倒序插入
 | 
			
		||||
            $insert = array_reverse($insert);
 | 
			
		||||
 | 
			
		||||
            $this->model->saveAll($insert);
 | 
			
		||||
        } catch (PDOException $exception) {
 | 
			
		||||
            $msg = $exception->getMessage();
 | 
			
		||||
            if (preg_match("/.+Integrity constraint violation: 1062 Duplicate entry '(.+)' for key '(.+)'/is", $msg, $matches)) {
 | 
			
		||||
                $msg = "导入失败,包含【{$matches[1]}】的记录已存在";
 | 
			
		||||
            };
 | 
			
		||||
            var_dump($exception->getData());
 | 
			
		||||
            $this->error($msg);
 | 
			
		||||
        } catch (Exception $e) {
 | 
			
		||||
            $this->error($e->getMessage());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $this->success();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -4,12 +4,18 @@ return [
 | 
			
		||||
    'Name'       => '提交者姓名',
 | 
			
		||||
    'Mobile'     => '联系电话',
 | 
			
		||||
    'Emil'       => '邮箱地址',
 | 
			
		||||
    'Message'    => '留言内容',
 | 
			
		||||
    'Question'   => '问题',
 | 
			
		||||
    'Message'    => '描述',
 | 
			
		||||
    'Status'     => '状态',
 | 
			
		||||
    'Status 1'   => '未处理',
 | 
			
		||||
    'Set status to 1'=> '设为未处理',
 | 
			
		||||
    'Status 2'   => '已处理',
 | 
			
		||||
    'Set status to 2'=> '设为已处理',
 | 
			
		||||
    'Answer'     => '回复',
 | 
			
		||||
    'Show'       => '精选展示',
 | 
			
		||||
    'Show 0'     => '否',
 | 
			
		||||
    'Show 1'     => '是',
 | 
			
		||||
    'Weigh'      => '权重',
 | 
			
		||||
    'Createtime' => '创建时间',
 | 
			
		||||
    'Updatetime' => '修改时间'
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
@ -25,16 +25,32 @@ class LeaveWord extends Model
 | 
			
		||||
 | 
			
		||||
    // 追加属性
 | 
			
		||||
    protected $append = [
 | 
			
		||||
        'status_text'
 | 
			
		||||
        'status_text',
 | 
			
		||||
        'show_text'
 | 
			
		||||
    ];
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    protected static function init()
 | 
			
		||||
    {
 | 
			
		||||
        self::afterInsert(function ($row) {
 | 
			
		||||
            if (!$row['weigh']) {
 | 
			
		||||
                $pk = $row->getPk();
 | 
			
		||||
                $row->getQuery()->where($pk, $row[$pk])->update(['weigh' => $row[$pk]]);
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    public function getStatusList()
 | 
			
		||||
    {
 | 
			
		||||
        return ['1' => __('Status 1'), '2' => __('Status 2')];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getShowList()
 | 
			
		||||
    {
 | 
			
		||||
        return ['0' => __('Show 0'), '1' => __('Show 1')];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public function getStatusTextAttr($value, $data)
 | 
			
		||||
    {
 | 
			
		||||
@ -44,6 +60,14 @@ class LeaveWord extends Model
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public function getShowTextAttr($value, $data)
 | 
			
		||||
    {
 | 
			
		||||
        $value = $value ?: ($data['show'] ?? '');
 | 
			
		||||
        $list = $this->getShowList();
 | 
			
		||||
        return $list[$value] ?? '';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -18,10 +18,16 @@
 | 
			
		||||
            <input id="c-emil" class="form-control" name="row[emil]" type="text">
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-group">
 | 
			
		||||
        <label class="control-label col-xs-12 col-sm-2">{:__('Question')}:</label>
 | 
			
		||||
        <div class="col-xs-12 col-sm-8">
 | 
			
		||||
            <input id="c-question" class="form-control" name="row[question]" type="text">
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-group">
 | 
			
		||||
        <label class="control-label col-xs-12 col-sm-2">{:__('Message')}:</label>
 | 
			
		||||
        <div class="col-xs-12 col-sm-8">
 | 
			
		||||
            <input id="c-message" class="form-control" name="row[message]" type="text">
 | 
			
		||||
            <textarea id="c-message" class="form-control " rows="5" name="row[message]" cols="50"></textarea>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-group">
 | 
			
		||||
@ -36,6 +42,30 @@
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-group">
 | 
			
		||||
        <label class="control-label col-xs-12 col-sm-2">{:__('Answer')}:</label>
 | 
			
		||||
        <div class="col-xs-12 col-sm-8">
 | 
			
		||||
            <textarea id="c-answer" class="form-control " rows="5" name="row[answer]" cols="50"></textarea>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-group">
 | 
			
		||||
        <label class="control-label col-xs-12 col-sm-2">{:__('Show')}:</label>
 | 
			
		||||
        <div class="col-xs-12 col-sm-8">
 | 
			
		||||
                        
 | 
			
		||||
            <select  id="c-show" data-rule="required" class="form-control selectpicker" name="row[show]">
 | 
			
		||||
                {foreach name="showList" item="vo"}
 | 
			
		||||
                    <option value="{$key}" {in name="key" value="0"}selected{/in}>{$vo}</option>
 | 
			
		||||
                {/foreach}
 | 
			
		||||
            </select>
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-group">
 | 
			
		||||
        <label class="control-label col-xs-12 col-sm-2">{:__('Weigh')}:</label>
 | 
			
		||||
        <div class="col-xs-12 col-sm-8">
 | 
			
		||||
            <input id="c-weigh" class="form-control" name="row[weigh]" type="number" value="0">
 | 
			
		||||
        </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">
 | 
			
		||||
 | 
			
		||||
@ -18,10 +18,16 @@
 | 
			
		||||
            <input id="c-emil" class="form-control" name="row[emil]" type="text" value="{$row.emil|htmlentities}">
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-group">
 | 
			
		||||
        <label class="control-label col-xs-12 col-sm-2">{:__('Question')}:</label>
 | 
			
		||||
        <div class="col-xs-12 col-sm-8">
 | 
			
		||||
            <input id="c-question" class="form-control" name="row[question]" type="text" value="{$row.question|htmlentities}">
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-group">
 | 
			
		||||
        <label class="control-label col-xs-12 col-sm-2">{:__('Message')}:</label>
 | 
			
		||||
        <div class="col-xs-12 col-sm-8">
 | 
			
		||||
            <input id="c-message" class="form-control" name="row[message]" type="text" value="{$row.message|htmlentities}">
 | 
			
		||||
            <textarea id="c-message" class="form-control " rows="5" name="row[message]" cols="50">{$row.message|htmlentities}</textarea>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-group">
 | 
			
		||||
@ -36,6 +42,30 @@
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-group">
 | 
			
		||||
        <label class="control-label col-xs-12 col-sm-2">{:__('Answer')}:</label>
 | 
			
		||||
        <div class="col-xs-12 col-sm-8">
 | 
			
		||||
            <textarea id="c-answer" class="form-control " rows="5" name="row[answer]" cols="50">{$row.answer|htmlentities}</textarea>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-group">
 | 
			
		||||
        <label class="control-label col-xs-12 col-sm-2">{:__('Show')}:</label>
 | 
			
		||||
        <div class="col-xs-12 col-sm-8">
 | 
			
		||||
                        
 | 
			
		||||
            <select  id="c-show" data-rule="required" class="form-control selectpicker" name="row[show]">
 | 
			
		||||
                {foreach name="showList" item="vo"}
 | 
			
		||||
                    <option value="{$key}" {in name="key" value="$row.show"}selected{/in}>{$vo}</option>
 | 
			
		||||
                {/foreach}
 | 
			
		||||
            </select>
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-group">
 | 
			
		||||
        <label class="control-label col-xs-12 col-sm-2">{:__('Weigh')}:</label>
 | 
			
		||||
        <div class="col-xs-12 col-sm-8">
 | 
			
		||||
            <input id="c-weigh" class="form-control" name="row[weigh]" type="number" value="{$row.weigh|htmlentities}">
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-group layer-footer">
 | 
			
		||||
        <label class="control-label col-xs-12 col-sm-2"></label>
 | 
			
		||||
        <div class="col-xs-12 col-sm-8">
 | 
			
		||||
 | 
			
		||||
@ -10,11 +10,10 @@
 | 
			
		||||
                        <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('home/news/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('home/news/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('home/news/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
 | 
			
		||||
                        
 | 
			
		||||
 | 
			
		||||
                        
 | 
			
		||||
 | 
			
		||||
                        <a class="btn btn-success btn-recyclebin btn-dialog {:$auth->check('home/news/recyclebin')?'':'hide'}" href="home/news/recyclebin" title="{:__('Recycle bin')}"><i class="fa fa-recycle"></i> {:__('Recycle bin')}</a>
 | 
			
		||||
 | 
			
		||||
                        <a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('home/news/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> {:__('xlsx数据导入')}</a>
 | 
			
		||||
 | 
			
		||||
                    </div>
 | 
			
		||||
                    <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
 | 
			
		||||
                           data-operate-edit="{:$auth->check('home/news/edit')}"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										114
									
								
								application/api/controller/home/LeaveWord.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								application/api/controller/home/LeaveWord.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,114 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace app\api\controller\home;
 | 
			
		||||
 | 
			
		||||
use app\common\model\home\LeaveWord as LeaveWordModel;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 网站留言
 | 
			
		||||
 */
 | 
			
		||||
class LeaveWord extends Base
 | 
			
		||||
{
 | 
			
		||||
    protected $noNeedLogin = ['*'];
 | 
			
		||||
    protected $noNeedRight = ['*'];
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var \app\common\model\home\LeaveWord
 | 
			
		||||
     */
 | 
			
		||||
    protected $model = null;
 | 
			
		||||
 | 
			
		||||
    public function _initialize()
 | 
			
		||||
    {
 | 
			
		||||
        parent::_initialize();
 | 
			
		||||
        $this->model = new LeaveWordModel;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @ApiTitle( 发网站留言)
 | 
			
		||||
     * @ApiSummary(发网站留言)
 | 
			
		||||
     * @ApiMethod(POST)
 | 
			
		||||
     * @ApiParams(name = "name", type = "string",required=true,description = "提交者姓名")
 | 
			
		||||
     * @ApiParams(name = "mobile", type = "string",required=true,description = "联系电话")
 | 
			
		||||
     * @ApiParams(name = "emil", type = "string",required=false,description = "邮箱地址")
 | 
			
		||||
     * @ApiParams(name = "question", type = "string",required=true,description = "问题")
 | 
			
		||||
     * @ApiParams(name = "message", type = "string",required=true,description = "描述")
 | 
			
		||||
     * @ApiReturn({
 | 
			
		||||
     *
 | 
			
		||||
     *})
 | 
			
		||||
     */
 | 
			
		||||
    public function add()
 | 
			
		||||
    {
 | 
			
		||||
        $user_id = 0;
 | 
			
		||||
        $user = $this->auth->getUser();//登录用户
 | 
			
		||||
        if($user)$user_id = $user['id'];
 | 
			
		||||
        $params=[];
 | 
			
		||||
        $params["name"] =  $this->request->post('name/s', ''); //页数
 | 
			
		||||
        $params["mobile"] =  $this->request->post('mobile/s', ''); //条数
 | 
			
		||||
        $params["emil"] =  $this->request->post('emil/s', ''); //搜索关键字
 | 
			
		||||
        $params["question"] =  $this->request->post('question/s', ''); //搜索关键字
 | 
			
		||||
        $params["message"] =  $this->request->post('message/s', ''); //搜索关键字
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        try{
 | 
			
		||||
            //当前申请状态
 | 
			
		||||
            $res = $this->model->add($params,true);
 | 
			
		||||
//             var_dump($this->model->getLastSql());
 | 
			
		||||
        }catch (\Exception $e){
 | 
			
		||||
 | 
			
		||||
            $this->error($e->getMessage());
 | 
			
		||||
        }
 | 
			
		||||
        $this->success('添加成功', $res);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @ApiTitle(留言列表)
 | 
			
		||||
     * @ApiSummary(留言列表)
 | 
			
		||||
     * @ApiMethod(GET)
 | 
			
		||||
     * @ApiParams(name = "keywords", type = "string",required=false,description = "搜索关键字")
 | 
			
		||||
     * @ApiParams(name = "page", type = "string",required=true,description = "页数")
 | 
			
		||||
     * @ApiParams(name = "limit", type = "string",required=true,description = "条数")
 | 
			
		||||
     * @ApiParams(name = "status", type = "string",required=false,description = "状态:1=未处理,2=已处理")
 | 
			
		||||
     * @ApiParams(name = "show", type = "string",required=false,description = "精选展示:0=否,1=是")
 | 
			
		||||
     * @ApiReturn({
 | 
			
		||||
     *
 | 
			
		||||
     *})
 | 
			
		||||
     */
 | 
			
		||||
    public function index()
 | 
			
		||||
    {
 | 
			
		||||
        $user_id = 0;
 | 
			
		||||
        $user = $this->auth->getUser();//登录用户
 | 
			
		||||
        if($user)$user_id = $user['id'];
 | 
			
		||||
        $page  =  $this->request->get('page/d', 0); //页数
 | 
			
		||||
        $limit =  $this->request->get('limit/d', 0); //条数
 | 
			
		||||
        $keywords =  $this->request->get('keywords/s', ''); //搜索关键字
 | 
			
		||||
        $status =  $this->request->get('status/s', ''); //搜索关键字
 | 
			
		||||
        $params =[];
 | 
			
		||||
        $show =  $this->request->get('show/s', ''); //搜索关键字
 | 
			
		||||
//        $params["flag"]  =  $this->request->get('flag/s', ''); //搜索关键字
 | 
			
		||||
//        $params["hot"]  =  $this->request->get('hot/s', ''); //搜索关键字
 | 
			
		||||
//        $params["fine"]  =  $this->request->get('fine/s', ''); //搜索关键字
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//        $type =  $this->request->get('type/s', ''); //筛选学员和教练单
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        try{
 | 
			
		||||
            //当前申请状态
 | 
			
		||||
            $res = $this->model::allList($page, $limit,$keywords,$status,$show,$params);
 | 
			
		||||
//             var_dump($this->model->getLastSql());
 | 
			
		||||
        }catch (\Exception $e){
 | 
			
		||||
 | 
			
		||||
            $this->error($e->getMessage());
 | 
			
		||||
        }
 | 
			
		||||
        $this->success('查询成功', $res);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -3,10 +3,11 @@
 | 
			
		||||
namespace app\common\model\home;
 | 
			
		||||
 | 
			
		||||
use app\common\model\Attachment;
 | 
			
		||||
use app\common\model\BaseModel;
 | 
			
		||||
use think\Model;
 | 
			
		||||
use traits\model\SoftDelete;
 | 
			
		||||
 | 
			
		||||
class Encyclopedia extends Model
 | 
			
		||||
class Encyclopedia extends BaseModel
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    use SoftDelete;
 | 
			
		||||
@ -87,6 +88,11 @@ class Encyclopedia extends Model
 | 
			
		||||
        if (!empty($value)) return cdnurl($value, true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getFileAttr($value, $data)
 | 
			
		||||
    {
 | 
			
		||||
        if (!empty($value)) return cdnurl($value, true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public function attachment()
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
@ -3,10 +3,11 @@
 | 
			
		||||
namespace app\common\model\home;
 | 
			
		||||
 | 
			
		||||
use app\common\model\Attachment;
 | 
			
		||||
use app\common\model\BaseModel;
 | 
			
		||||
use think\Model;
 | 
			
		||||
use traits\model\SoftDelete;
 | 
			
		||||
 | 
			
		||||
class Information extends Model
 | 
			
		||||
class Information extends BaseModel
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    use SoftDelete;
 | 
			
		||||
@ -87,6 +88,11 @@ class Information extends Model
 | 
			
		||||
        if (!empty($value)) return cdnurl($value, true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getFileAttr($value, $data)
 | 
			
		||||
    {
 | 
			
		||||
        if (!empty($value)) return cdnurl($value, true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public function attachment()
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
@ -93,4 +93,99 @@ class LeaveWord extends BaseModel
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**得到基础条件
 | 
			
		||||
     * @param $status
 | 
			
		||||
     * @param null $model
 | 
			
		||||
     * @param string $alisa
 | 
			
		||||
     */
 | 
			
		||||
    public static function getBaseWhere($whereData = [], $model = null, $alisa = '',$with = false)
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        if (!$model) {
 | 
			
		||||
            $model = new static;
 | 
			
		||||
            if ($alisa&&!$with) $model = $model->alias($alisa);
 | 
			
		||||
        }
 | 
			
		||||
        if ($alisa) $alisa = $alisa . '.';
 | 
			
		||||
        $tableFields = (new static)->getTableFields();
 | 
			
		||||
        foreach ($tableFields as $fields)
 | 
			
		||||
        {
 | 
			
		||||
            if(in_array($fields, ["status","show"]))continue;
 | 
			
		||||
//            if (isset($whereData[$fields]) && $whereData[$fields]) $model = $model->where("{$alisa}{$fields}", '=', $whereData[$fields]);
 | 
			
		||||
 | 
			
		||||
            if (isset($whereData[$fields]) && $whereData[$fields]){
 | 
			
		||||
                if(is_array($whereData[$fields])){
 | 
			
		||||
                    $model = $model->where("{$alisa}{$fields}", $whereData[$fields][0], $whereData[$fields][1]);
 | 
			
		||||
                }else{
 | 
			
		||||
                    $model = $model->where("{$alisa}{$fields}", '=', $whereData[$fields]);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (isset($whereData['status']) && $whereData['status']!=="" && $whereData['status']!==null){
 | 
			
		||||
            $model = $model->where("{$alisa}status", 'in', $whereData['status'] );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (isset($whereData['show']) && $whereData['show']!=="" && $whereData['show']!==null){
 | 
			
		||||
            $model = $model->where("{$alisa}show", 'in', $whereData['show'] );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if (isset($whereData['keywords'])&&$whereData['keywords']){
 | 
			
		||||
            $model = $model->where("{$alisa}name|{$alisa}mobile|{$alisa}emil|{$alisa}question|{$alisa}message|{$alisa}answer", 'LIKE', "%{$whereData['keywords']}%" );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if (isset($whereData['time'])&&$whereData['time']){
 | 
			
		||||
 | 
			
		||||
            $model = $model->time(["{$alisa}createtime",$whereData['time']]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
//        if (isset($whereData['has_evaluate'])&&$whereData['has_evaluate']){
 | 
			
		||||
//            //1查已评价 2查未评价
 | 
			
		||||
//            if($whereData['has_evaluate'] == 1){
 | 
			
		||||
//                //1查已评价
 | 
			
		||||
//                $model = $model->where("{$alisa}classes_evaluate_id", '<>', 0);
 | 
			
		||||
//            }else{
 | 
			
		||||
//                //2查未评价
 | 
			
		||||
//                $model = $model->whereExists(function ($query) use ($alisa) {
 | 
			
		||||
//                    $order_table_name = (new \app\common\model\school\classes\hourorder\Order())->getQuery()->getTable();
 | 
			
		||||
//                    $query->table($order_table_name)->where($order_table_name . '.classes_order_id=' . $alisa . 'id')->where('status', '=', '3');
 | 
			
		||||
//                })->where("{$alisa}classes_evaluate_id", '=', 0);
 | 
			
		||||
//
 | 
			
		||||
//            }
 | 
			
		||||
//        }
 | 
			
		||||
 | 
			
		||||
        return $model;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public static function allList($page, $limit,$keywords,$status="",$show="",$params=[]){
 | 
			
		||||
        $with_field = [
 | 
			
		||||
//            'cate'=>['image','name'],
 | 
			
		||||
//            'attachment'=>['*'],
 | 
			
		||||
            'base'=>['*'],
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
//        $alisa = (new self)->getWithAlisaName();
 | 
			
		||||
//        $sort = "{$alisa}.weigh desc,{$alisa}.id desc";
 | 
			
		||||
 | 
			
		||||
        $sort = "weigh desc,id desc";
 | 
			
		||||
 | 
			
		||||
        $serch_where = ['status'=>$status,'show'=>$show,'keywords'=>$keywords];
 | 
			
		||||
 | 
			
		||||
        return (new self)->getBaseList(array_merge($serch_where,$params), $page, $limit,$sort,$with_field);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -39,6 +39,14 @@ class News extends BaseModel
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public function getFileAttr($value, $data)
 | 
			
		||||
    {
 | 
			
		||||
        if (!empty($value)) return cdnurl($value, true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    protected static function init()
 | 
			
		||||
    {
 | 
			
		||||
        self::afterInsert(function ($row) {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1577
									
								
								public/api.html
									
									
									
									
									
								
							
							
						
						
									
										1577
									
								
								public/api.html
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -21,7 +21,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
 | 
			
		||||
            table.bootstrapTable({
 | 
			
		||||
                url: $.fn.bootstrapTable.defaults.extend.index_url,
 | 
			
		||||
                pk: 'id',
 | 
			
		||||
                sortName: 'id',
 | 
			
		||||
                sortName: 'weigh',
 | 
			
		||||
                fixedColumns: true,
 | 
			
		||||
                fixedRightNumber: 1,
 | 
			
		||||
                columns: [
 | 
			
		||||
                    [
 | 
			
		||||
                        {checkbox: true},
 | 
			
		||||
@ -29,8 +31,10 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
 | 
			
		||||
                        {field: 'name', title: __('Name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
 | 
			
		||||
                        {field: 'mobile', title: __('Mobile'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
 | 
			
		||||
                        {field: 'emil', title: __('Emil'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
 | 
			
		||||
                        {field: 'message', title: __('Message'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
 | 
			
		||||
                        {field: 'question', title: __('Question'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
 | 
			
		||||
                        {field: 'status', title: __('Status'), searchList: {"1":__('Status 1'),"2":__('Status 2')}, formatter: Table.api.formatter.status},
 | 
			
		||||
                        {field: 'show', title: __('Show'), searchList: {"0":__('Show 0'),"1":__('Show 1')}, formatter: Table.api.formatter.normal},
 | 
			
		||||
                        {field: 'weigh', title: __('Weigh'), operate: false},
 | 
			
		||||
                        {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: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/027e024259eae1cb25d4c76de93dc5e4.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/027e024259eae1cb25d4c76de93dc5e4.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/0722eb5b4533c0d31ebcba7209580e06.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/0722eb5b4533c0d31ebcba7209580e06.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/0940b373f8402038536ec9e3b3173cdb.rar
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/0940b373f8402038536ec9e3b3173cdb.rar
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/1d288fad384d4a66aaec4a81d0538223.xlsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/1d288fad384d4a66aaec4a81d0538223.xlsx
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/1e6771dc97cbf3ab3c0b836901044961.xls
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/1e6771dc97cbf3ab3c0b836901044961.xls
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/1ed79766bb393ac0ac46181b7395d911.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/1ed79766bb393ac0ac46181b7395d911.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/1f9e030f1f4a2293564430e44ea0a758.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/1f9e030f1f4a2293564430e44ea0a758.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/201ae842bb65ea5d0252264b53f37b1d.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/201ae842bb65ea5d0252264b53f37b1d.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/2952b9541ed8cdb31a077a11bbf80509.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/2952b9541ed8cdb31a077a11bbf80509.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/3aba28b9f88b7ced5552a4dfcfe1ca41.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/3aba28b9f88b7ced5552a4dfcfe1ca41.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/3d48ebb263ad96b59e4293693f1bc1ca.rar
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/3d48ebb263ad96b59e4293693f1bc1ca.rar
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/41a6d829a3484512d1c09ee34a9d62ef.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/41a6d829a3484512d1c09ee34a9d62ef.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/5930d5a9024e74ea78799173c1bd3293.xlsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/5930d5a9024e74ea78799173c1bd3293.xlsx
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/627d6a5ef25bead7ff89de34150fec85.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/627d6a5ef25bead7ff89de34150fec85.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/7a90648f748e2aab799c32f46e9e1774.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/7a90648f748e2aab799c32f46e9e1774.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/7bc9ecf9a247eee6437ecf25ba82fdea.xls
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/7bc9ecf9a247eee6437ecf25ba82fdea.xls
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/891c143a622762fc090fe291a4a32242.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/891c143a622762fc090fe291a4a32242.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/960b3830d86ca7f83250b543c6557398.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/960b3830d86ca7f83250b543c6557398.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/a467aa84bb9fc518c6a807b5e929f611.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/a467aa84bb9fc518c6a807b5e929f611.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/a65e09c28ca19976adb6d3c0416a4545.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/a65e09c28ca19976adb6d3c0416a4545.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/a8ce098527246b8d908a54652f2f3901.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/a8ce098527246b8d908a54652f2f3901.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/c1ba3c372aac9de65e8f7d8c4e6c530a.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/c1ba3c372aac9de65e8f7d8c4e6c530a.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/ca85e5faa0b529f0c4f149eecc140820.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/ca85e5faa0b529f0c4f149eecc140820.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/dbf6519579cb813c00c3fd98425d7416.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/dbf6519579cb813c00c3fd98425d7416.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/dc623dac725804433f0f5db0212cda6e.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/dc623dac725804433f0f5db0212cda6e.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/ea9afe13389d24d0ed2df8c94ce45113.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/ea9afe13389d24d0ed2df8c94ce45113.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/f83b016d1effba5fadfebcbba87ee582.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/f83b016d1effba5fadfebcbba87ee582.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/f8a42ded707f2db5a8e7b7daf22baaca.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/f8a42ded707f2db5a8e7b7daf22baaca.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/uploads/20250522/fcae1fbe87a3e92f4885374d60601a7a.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/uploads/20250522/fcae1fbe87a3e92f4885374d60601a7a.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user