正在显示
10 个修改的文件
包含
548 行增加
和
3 行删除
1 | +<?php | ||
2 | + | ||
3 | +namespace app\admin\controller; | ||
4 | + | ||
5 | +use app\common\controller\Backend; | ||
6 | + | ||
7 | +/** | ||
8 | + * | ||
9 | + * | ||
10 | + * @icon fa fa-circle-o | ||
11 | + */ | ||
12 | +class CourseSignStartSet extends Backend | ||
13 | +{ | ||
14 | + | ||
15 | + /** | ||
16 | + * CourseSignStartSet模型对象 | ||
17 | + * @var \app\admin\model\CourseSignStartSet | ||
18 | + */ | ||
19 | + protected $model = null; | ||
20 | + | ||
21 | + public function _initialize() | ||
22 | + { | ||
23 | + parent::_initialize(); | ||
24 | + $this->model = new \app\admin\model\CourseSignStartSet; | ||
25 | + | ||
26 | + } | ||
27 | + | ||
28 | + /** | ||
29 | + * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法 | ||
30 | + * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑 | ||
31 | + * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改 | ||
32 | + */ | ||
33 | + | ||
34 | + | ||
35 | + /** | ||
36 | + * 查看 | ||
37 | + */ | ||
38 | + public function index() | ||
39 | + { | ||
40 | + //设置过滤方法 | ||
41 | + $this->request->filter(['strip_tags']); | ||
42 | + if ($this->request->isAjax()) { | ||
43 | + //如果发送的来源是Selectpage,则转发到Selectpage | ||
44 | + if ($this->request->request('keyField')) { | ||
45 | + return $this->selectpage(); | ||
46 | + } | ||
47 | + list($where, $sort, $order, $offset, $limit) = $this->buildparams(); | ||
48 | + $total = $this->model | ||
49 | + ->with(['store','course']) | ||
50 | + ->where($where) | ||
51 | + ->order($sort, $order) | ||
52 | + ->count(); | ||
53 | + | ||
54 | + $list = $this->model | ||
55 | + ->with(['store','course']) | ||
56 | + ->where($where) | ||
57 | + ->order($sort, $order) | ||
58 | + ->limit($offset, $limit) | ||
59 | + ->select(); | ||
60 | + | ||
61 | + $list = collection($list)->toArray(); | ||
62 | + $result = array("total" => $total, "rows" => $list); | ||
63 | + | ||
64 | + return json($result); | ||
65 | + } | ||
66 | + return $this->view->fetch(); | ||
67 | + } | ||
68 | + | ||
69 | +} |
1 | +<?php | ||
2 | + | ||
3 | +return [ | ||
4 | + 'Id' => 'id', | ||
5 | + 'Course_sign_id' => '报名', | ||
6 | + 'Course_star' => '课程评价', | ||
7 | + 'Teacher_star' => '教师评价', | ||
8 | + 'Service_star' => '服务评价', | ||
9 | + 'Content' => '内容', | ||
10 | + 'Pic' => '图片', | ||
11 | + 'User_id' => '用户', | ||
12 | + 'Course_id' => '课程', | ||
13 | + 'Store_id' => '门店', | ||
14 | + 'Create_time' => '评价时间' | ||
15 | +]; |
1 | +<?php | ||
2 | + | ||
3 | +namespace app\admin\model; | ||
4 | + | ||
5 | +use think\Model; | ||
6 | + | ||
7 | + | ||
8 | +class CourseSignStartSet extends Model | ||
9 | +{ | ||
10 | + | ||
11 | + | ||
12 | + | ||
13 | + | ||
14 | + | ||
15 | + // 表名 | ||
16 | + protected $name = 'course_sign_start_set'; | ||
17 | + | ||
18 | + // 自动写入时间戳字段 | ||
19 | + protected $autoWriteTimestamp = false; | ||
20 | + | ||
21 | + // 定义时间戳字段名 | ||
22 | + protected $createTime = false; | ||
23 | + protected $updateTime = false; | ||
24 | + protected $deleteTime = false; | ||
25 | + | ||
26 | + // 追加属性 | ||
27 | + protected $append = [ | ||
28 | + | ||
29 | + ]; | ||
30 | + | ||
31 | + | ||
32 | + public function course() | ||
33 | + { | ||
34 | + return $this->belongsTo('Course', 'course_id','id',[],'left')->setEagerlyType(1); | ||
35 | + } | ||
36 | + | ||
37 | + public function store() | ||
38 | + { | ||
39 | + return $this->belongsTo('Store', 'store_id','id',[],'left')->setEagerlyType(1); | ||
40 | + } | ||
41 | + | ||
42 | + | ||
43 | + | ||
44 | + | ||
45 | + | ||
46 | + | ||
47 | + | ||
48 | + | ||
49 | + | ||
50 | + | ||
51 | +} |
1 | +<?php | ||
2 | + | ||
3 | +namespace app\admin\validate; | ||
4 | + | ||
5 | +use think\Validate; | ||
6 | + | ||
7 | +class CourseSignStartSet extends Validate | ||
8 | +{ | ||
9 | + /** | ||
10 | + * 验证规则 | ||
11 | + */ | ||
12 | + protected $rule = [ | ||
13 | + ]; | ||
14 | + /** | ||
15 | + * 提示消息 | ||
16 | + */ | ||
17 | + protected $message = [ | ||
18 | + ]; | ||
19 | + /** | ||
20 | + * 验证场景 | ||
21 | + */ | ||
22 | + protected $scene = [ | ||
23 | + 'add' => [], | ||
24 | + 'edit' => [], | ||
25 | + ]; | ||
26 | + | ||
27 | +} |
1 | +<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action=""> | ||
2 | + | ||
3 | + <!--<div class="form-group"> | ||
4 | + <label class="control-label col-xs-12 col-sm-2">{:__('Course_sign_id')}:</label> | ||
5 | + <div class="col-xs-12 col-sm-8"> | ||
6 | + <input id="c-course_sign_id" data-rule="required" data-source="course/sign/index" class="form-control selectpage" name="row[course_sign_id]" type="text" value=""> | ||
7 | + </div> | ||
8 | + </div>--> | ||
9 | + <div class="form-group"> | ||
10 | + <label class="control-label col-xs-12 col-sm-2">{:__('Course_star')}:</label> | ||
11 | + <div class="col-xs-12 col-sm-8"> | ||
12 | + <input id="c-course_star" class="form-control" step="0.1" name="row[course_star]" type="number"> | ||
13 | + </div> | ||
14 | + </div> | ||
15 | + <div class="form-group"> | ||
16 | + <label class="control-label col-xs-12 col-sm-2">{:__('Teacher_star')}:</label> | ||
17 | + <div class="col-xs-12 col-sm-8"> | ||
18 | + <input id="c-teacher_star" class="form-control" step="0.1" name="row[teacher_star]" type="number"> | ||
19 | + </div> | ||
20 | + </div> | ||
21 | + <div class="form-group"> | ||
22 | + <label class="control-label col-xs-12 col-sm-2">{:__('Service_star')}:</label> | ||
23 | + <div class="col-xs-12 col-sm-8"> | ||
24 | + <input id="c-service_star" class="form-control" step="0.1" name="row[service_star]" type="number"> | ||
25 | + </div> | ||
26 | + </div> | ||
27 | + <div class="form-group"> | ||
28 | + <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label> | ||
29 | + <div class="col-xs-12 col-sm-8"> | ||
30 | + <input id="c-content" class="form-control" name="row[content]" type="number"> | ||
31 | + </div> | ||
32 | + </div> | ||
33 | + <div class="form-group"> | ||
34 | + <label class="control-label col-xs-12 col-sm-2">{:__('Pic')}:</label> | ||
35 | + <div class="col-xs-12 col-sm-8"> | ||
36 | + <div class="input-group"> | ||
37 | + <input id="c-pic" class="form-control" size="50" name="row[pic]" type="text"> | ||
38 | + <div class="input-group-addon no-border no-padding"> | ||
39 | + <span><button type="button" id="plupload-files" class="btn btn-danger plupload" data-input-id="c-pic" data-mimetype="*" data-multiple="true" data-preview-id="p-files"><i class="fa fa-upload"></i> {:__('Upload')}</button></span> | ||
40 | + <span><button type="button" id="fachoose-files" class="btn btn-primary fachoose" data-input-id="c-pic" data-mimetype="*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span> | ||
41 | + </div> | ||
42 | + <span class="msg-box n-right" for="c-pic"></span> | ||
43 | + </div> | ||
44 | + | ||
45 | + <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 --> | ||
46 | + <ul class="row list-inline plupload-preview" id="p-files" data-template="introtpl" data-name="row[intro]"></ul> | ||
47 | + | ||
48 | + <!--请注意 ul和textarea间不能存在其它任何元素,实际开发中textarea应该添加个hidden进行隐藏--> | ||
49 | + | ||
50 | + <!--这里自定义图片预览的模板 开始--> | ||
51 | + <script type="text/html" id="introtpl"> | ||
52 | + <li class="col-xs-3"> | ||
53 | + <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail"> | ||
54 | + <img src="<%=fullurl%>" class="img-responsive"> | ||
55 | + </a> | ||
56 | + <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a> | ||
57 | + </li> | ||
58 | + </script> | ||
59 | + <!--这里自定义图片预览的模板 结束--> | ||
60 | + </div> | ||
61 | + </div> | ||
62 | + <div class="form-group"> | ||
63 | + <label class="control-label col-xs-12 col-sm-2">{:__('Course_id')}:</label> | ||
64 | + <div class="col-xs-12 col-sm-8"> | ||
65 | + <input id="c-course_id" data-source="course/index" class="form-control selectpage" name="row[course_id]" type="text" value=""> | ||
66 | + </div> | ||
67 | + </div> | ||
68 | + <div class="form-group"> | ||
69 | + <label class="control-label col-xs-12 col-sm-2">{:__('Store_id')}:</label> | ||
70 | + <div class="col-xs-12 col-sm-8"> | ||
71 | + <input id="c-store_id" data-source="store/index" class="form-control selectpage" name="row[store_id]" type="text" value=""> | ||
72 | + </div> | ||
73 | + </div> | ||
74 | + <div class="form-group"> | ||
75 | + <label class="control-label col-xs-12 col-sm-2">{:__('名字')}:</label> | ||
76 | + <div class="col-xs-12 col-sm-8"> | ||
77 | + <input id="c-username" class="form-control" name="row[username]" type="text" value=""> | ||
78 | + </div> | ||
79 | + </div> | ||
80 | + <div class="form-group"> | ||
81 | + <label class="control-label col-xs-12 col-sm-2">{:__('头像')}:</label> | ||
82 | + <div class="col-xs-12 col-sm-8"> | ||
83 | + <div class="input-group"> | ||
84 | + <input id="c-cover" data-rule="required" class="form-control" size="1" name="row[weChat_pic]" | ||
85 | + type="text" value=""> | ||
86 | + <div class="input-group-addon no-border no-padding"> | ||
87 | + <span><button type="button" id="plupload-files-cover" class="btn btn-danger plupload" | ||
88 | + data-input-id="c-cover" data-mimetype="*" data-multiple="false" | ||
89 | + data-preview-id="p-files-cover"><i class="fa fa-upload"></i> {:__('Upload')}</button></span> | ||
90 | + <span><button type="button" id="fachoose-files-cover" class="btn btn-primary fachoose" | ||
91 | + data-input-id="c-cover" data-mimetype="*" data-multiple="false"><i | ||
92 | + class="fa fa-list"></i> {:__('Choose')}</button></span> | ||
93 | + </div> | ||
94 | + <span class="msg-box n-right" for="c-cover"></span> | ||
95 | + </div> | ||
96 | + | ||
97 | + <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 --> | ||
98 | + <ul class="row list-inline plupload-preview" id="p-files-cover" data-template="introtpl-cover" | ||
99 | + data-name="row[intro]"></ul> | ||
100 | + | ||
101 | + <!--这里自定义图片预览的模板 开始--> | ||
102 | + <script type="text/html" id="introtpl-cover"> | ||
103 | + <li class="col-xs-3"> | ||
104 | + <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail"> | ||
105 | + <img src="<%=fullurl%>" class="img-responsive"> | ||
106 | + </a> | ||
107 | + <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a> | ||
108 | + </li> | ||
109 | + </script> | ||
110 | + <!--这里自定义图片预览的模板 结束--> | ||
111 | + </div> | ||
112 | + </div> | ||
113 | + | ||
114 | + <div class="form-group"> | ||
115 | + <label class="control-label col-xs-12 col-sm-2">{:__('Create_time')}:</label> | ||
116 | + <div class="col-xs-12 col-sm-8"> | ||
117 | + <input id="c-create_time" data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[create_time]" type="text" value="{:date('Y-m-d H:i:s')}"> | ||
118 | + </div> | ||
119 | + </div> | ||
120 | + <div class="form-group layer-footer"> | ||
121 | + <label class="control-label col-xs-12 col-sm-2"></label> | ||
122 | + <div class="col-xs-12 col-sm-8"> | ||
123 | + <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button> | ||
124 | + <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button> | ||
125 | + </div> | ||
126 | + </div> | ||
127 | +</form> |
1 | +<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action=""> | ||
2 | + | ||
3 | + <div class="form-group"> | ||
4 | + <label class="control-label col-xs-12 col-sm-2">{:__('Course_star')}:</label> | ||
5 | + <div class="col-xs-12 col-sm-8"> | ||
6 | + <input id="c-course_star" data-rule="required" class="form-control" step="0.1" name="row[course_star]" type="number" value="{$row.course_star|htmlentities}"> | ||
7 | + </div> | ||
8 | + </div> | ||
9 | + <div class="form-group"> | ||
10 | + <label class="control-label col-xs-12 col-sm-2">{:__('Teacher_star')}:</label> | ||
11 | + <div class="col-xs-12 col-sm-8"> | ||
12 | + <input id="c-teacher_star" data-rule="required" class="form-control" step="0.1" name="row[teacher_star]" type="number" value="{$row.teacher_star|htmlentities}"> | ||
13 | + </div> | ||
14 | + </div> | ||
15 | + <div class="form-group"> | ||
16 | + <label class="control-label col-xs-12 col-sm-2">{:__('Service_star')}:</label> | ||
17 | + <div class="col-xs-12 col-sm-8"> | ||
18 | + <input id="c-service_star" data-rule="required" class="form-control" step="0.1" name="row[service_star]" type="number" value="{$row.service_star|htmlentities}"> | ||
19 | + </div> | ||
20 | + </div> | ||
21 | + <div class="form-group"> | ||
22 | + <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label> | ||
23 | + <div class="col-xs-12 col-sm-8"> | ||
24 | + <input id="c-content" data-rule="required" class="form-control" name="row[content]" type="number" value="{$row.content|htmlentities}"> | ||
25 | + </div> | ||
26 | + </div> | ||
27 | + | ||
28 | + <div class="form-group"> | ||
29 | + <label class="control-label col-xs-12 col-sm-2">{:__('Pic')}:</label> | ||
30 | + <div class="col-xs-12 col-sm-8"> | ||
31 | + <div class="input-group"> | ||
32 | + <input id="c-pic" class="form-control" size="50" name="row[pic]" type="text" value="{$row.pic|htmlentities}"> | ||
33 | + <div class="input-group-addon no-border no-padding"> | ||
34 | + <span><button type="button" id="plupload-files" class="btn btn-danger plupload" data-input-id="c-pic" data-mimetype="*" data-multiple="true" data-preview-id="p-files"><i class="fa fa-upload"></i> {:__('Upload')}</button></span> | ||
35 | + <span><button type="button" id="fachoose-files" class="btn btn-primary fachoose" data-input-id="c-pic" data-mimetype="*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span> | ||
36 | + </div> | ||
37 | + <span class="msg-box n-right" for="c-pic"></span> | ||
38 | + </div> | ||
39 | + | ||
40 | + <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 --> | ||
41 | + <ul class="row list-inline plupload-preview" id="p-files" data-template="introtpl" data-name="row[intro]"></ul> | ||
42 | + | ||
43 | + <!--请注意 ul和textarea间不能存在其它任何元素,实际开发中textarea应该添加个hidden进行隐藏--> | ||
44 | + | ||
45 | + <!--这里自定义图片预览的模板 开始--> | ||
46 | + <script type="text/html" id="introtpl"> | ||
47 | + <li class="col-xs-3"> | ||
48 | + <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail"> | ||
49 | + <img src="<%=fullurl%>" class="img-responsive"> | ||
50 | + </a> | ||
51 | + <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a> | ||
52 | + </li> | ||
53 | + </script> | ||
54 | + <!--这里自定义图片预览的模板 结束--> | ||
55 | + </div> | ||
56 | + </div> | ||
57 | + <div class="form-group"> | ||
58 | + <label class="control-label col-xs-12 col-sm-2">{:__('Course_id')}:</label> | ||
59 | + <div class="col-xs-12 col-sm-8"> | ||
60 | + <input id="c-course_id" data-rule="required" data-source="course/index" class="form-control selectpage" name="row[course_id]" type="text" value="{$row.course_id|htmlentities}"> | ||
61 | + </div> | ||
62 | + </div> | ||
63 | + <div class="form-group"> | ||
64 | + <label class="control-label col-xs-12 col-sm-2">{:__('Store_id')}:</label> | ||
65 | + <div class="col-xs-12 col-sm-8"> | ||
66 | + <input id="c-store_id" data-rule="required" data-source="store/index" class="form-control selectpage" name="row[store_id]" type="text" value="{$row.store_id|htmlentities}"> | ||
67 | + </div> | ||
68 | + </div> | ||
69 | + <div class="form-group"> | ||
70 | + <label class="control-label col-xs-12 col-sm-2">{:__('名字')}:</label> | ||
71 | + <div class="col-xs-12 col-sm-8"> | ||
72 | + <input id="c-username" class="form-control" name="row[username]" type="text" value="{$row.username|htmlentities}"> | ||
73 | + </div> | ||
74 | + </div> | ||
75 | + <div class="form-group"> | ||
76 | + <label class="control-label col-xs-12 col-sm-2">{:__('头像')}:</label> | ||
77 | + <div class="col-xs-12 col-sm-8"> | ||
78 | + <div class="input-group"> | ||
79 | + <input id="c-cover" data-rule="required" class="form-control" size="1" name="row[weChat_pic]" type="text" value="{$row.weChat_pic|htmlentities}"> | ||
80 | + <div class="input-group-addon no-border no-padding"> | ||
81 | + <span><button type="button" id="plupload-files-cover" class="btn btn-danger plupload" | ||
82 | + data-input-id="c-cover" data-mimetype="*" data-multiple="false" | ||
83 | + data-preview-id="p-files-cover"><i class="fa fa-upload"></i> {:__('Upload')}</button></span> | ||
84 | + <span><button type="button" id="fachoose-files-cover" class="btn btn-primary fachoose" | ||
85 | + data-input-id="c-cover" data-mimetype="*" data-multiple="false"><i | ||
86 | + class="fa fa-list"></i> {:__('Choose')}</button></span> | ||
87 | + </div> | ||
88 | + <span class="msg-box n-right" for="c-cover"></span> | ||
89 | + </div> | ||
90 | + | ||
91 | + <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 --> | ||
92 | + <ul class="row list-inline plupload-preview" id="p-files-cover" data-template="introtpl-cover" | ||
93 | + data-name="row[intro]"></ul> | ||
94 | + | ||
95 | + <!--这里自定义图片预览的模板 开始--> | ||
96 | + <script type="text/html" id="introtpl-cover"> | ||
97 | + <li class="col-xs-3"> | ||
98 | + <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail"> | ||
99 | + <img src="<%=fullurl%>" class="img-responsive"> | ||
100 | + </a> | ||
101 | + <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a> | ||
102 | + </li> | ||
103 | + </script> | ||
104 | + <!--这里自定义图片预览的模板 结束--> | ||
105 | + </div> | ||
106 | + </div> | ||
107 | + <div class="form-group"> | ||
108 | + <label class="control-label col-xs-12 col-sm-2">{:__('Create_time')}:</label> | ||
109 | + <div class="col-xs-12 col-sm-8"> | ||
110 | + <input id="c-create_time" data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[create_time]" type="text" value="{$row.create_time}"> | ||
111 | + </div> | ||
112 | + </div> | ||
113 | + <div class="form-group layer-footer"> | ||
114 | + <label class="control-label col-xs-12 col-sm-2"></label> | ||
115 | + <div class="col-xs-12 col-sm-8"> | ||
116 | + <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button> | ||
117 | + <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button> | ||
118 | + </div> | ||
119 | + </div> | ||
120 | +</form> |
1 | +<div class="panel panel-default panel-intro"> | ||
2 | + {:build_heading()} | ||
3 | + | ||
4 | + <div class="panel-body"> | ||
5 | + <div id="myTabContent" class="tab-content"> | ||
6 | + <div class="tab-pane fade active in" id="one"> | ||
7 | + <div class="widget-body no-padding"> | ||
8 | + <div id="toolbar" class="toolbar"> | ||
9 | + <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a> | ||
10 | + <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('course_sign_start_set/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a> | ||
11 | + <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('course_sign_start_set/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a> | ||
12 | + <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('course_sign_start_set/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a> | ||
13 | + <!-- <a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('course_sign_start_set/import')?'':'hide'}" title="{:__('Import')}" id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"><i class="fa fa-upload"></i> {:__('Import')}</a> | ||
14 | + | ||
15 | + <div class="dropdown btn-group {:$auth->check('course_sign_start_set/multi')?'':'hide'}"> | ||
16 | + <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a> | ||
17 | + <ul class="dropdown-menu text-left" role="menu"> | ||
18 | + <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li> | ||
19 | + <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li> | ||
20 | + </ul> | ||
21 | + </div>--> | ||
22 | + | ||
23 | + | ||
24 | + </div> | ||
25 | + <table id="table" class="table table-striped table-bordered table-hover table-nowrap" | ||
26 | + data-operate-edit="{:$auth->check('course_sign_start_set/edit')}" | ||
27 | + data-operate-del="{:$auth->check('course_sign_start_set/del')}" | ||
28 | + width="100%"> | ||
29 | + </table> | ||
30 | + </div> | ||
31 | + </div> | ||
32 | + | ||
33 | + </div> | ||
34 | + </div> | ||
35 | +</div> |
@@ -305,14 +305,36 @@ class Course extends Api | @@ -305,14 +305,36 @@ class Course extends Api | ||
305 | 305 | ||
306 | //查询评价 | 306 | //查询评价 |
307 | $star = new \app\admin\model\CourseSignStart(); | 307 | $star = new \app\admin\model\CourseSignStart(); |
308 | - $star = $star->where(['course_id'=>$id])->order('create_time','desc')->select(); | ||
309 | - foreach ($star as &$k){ | 308 | + $star1 = $star->with('user')->where(['course_id'=>$id])->order('create_time','desc')->select(); |
309 | + foreach ($star1 as &$k){ | ||
310 | $banner = explode(",", $k['pic']); | 310 | $banner = explode(",", $k['pic']); |
311 | foreach ($banner as &$v){ | 311 | foreach ($banner as &$v){ |
312 | $v = cdnurl($v,true); | 312 | $v = cdnurl($v,true); |
313 | } | 313 | } |
314 | $k['pic'] = $banner; | 314 | $k['pic'] = $banner; |
315 | + $k['username'] = $k['user']['username']; | ||
316 | + $k['weChat_pic'] = isset($k['user']['weChat_pic'])?cdnurl($k['user']['weChat_pic'],true):''; | ||
315 | } | 317 | } |
318 | + unset($k); | ||
319 | + //查询评价 | ||
320 | + $star = new \app\admin\model\CourseSignStartSet(); | ||
321 | + $star2 = $star->where(['course_id'=>$id])->order('create_time','desc')->select(); | ||
322 | + foreach ($star2 as &$kk){ | ||
323 | + $banner = explode(",", $kk['pic']); | ||
324 | + foreach ($banner as &$vv){ | ||
325 | + $vv = cdnurl($vv,true); | ||
326 | + } | ||
327 | + $kk['pic'] = $banner; | ||
328 | + $kk['weChat_pic'] = cdnurl($kk['weChat_pic'],true); | ||
329 | + } | ||
330 | + unset($kk); | ||
331 | + | ||
332 | + $star = $star1+$star2; | ||
333 | + | ||
334 | + foreach ($star as $key => $row) { | ||
335 | + $create_time[$key] = $row['create_time']; | ||
336 | + } | ||
337 | + array_multisort($create_time, SORT_DESC, $star); | ||
316 | 338 | ||
317 | $course['star'] = $star; | 339 | $course['star'] = $star; |
318 | 340 | ||
@@ -581,7 +603,7 @@ class Course extends Api | @@ -581,7 +603,7 @@ class Course extends Api | ||
581 | } | 603 | } |
582 | 604 | ||
583 | $course = new \app\admin\model\CourseSignStart(); | 605 | $course = new \app\admin\model\CourseSignStart(); |
584 | - $course = $course->where(['course_sign_id'=>$id])->select(); | 606 | + $course = $course->with('user')->where(['course_sign_id'=>$id])->select(); |
585 | 607 | ||
586 | foreach ($course as &$k){ | 608 | foreach ($course as &$k){ |
587 | $banner = explode(",", $k['pic']); | 609 | $banner = explode(",", $k['pic']); |
@@ -589,7 +611,10 @@ class Course extends Api | @@ -589,7 +611,10 @@ class Course extends Api | ||
589 | $v = cdnurl($v,true); | 611 | $v = cdnurl($v,true); |
590 | } | 612 | } |
591 | $k['pic'] = $banner; | 613 | $k['pic'] = $banner; |
614 | + $k['username'] = $k['user']['username']; | ||
615 | + $k['weChat_pic'] = isset($k['user']['weChat_pic'])?cdnurl($k['user']['weChat_pic'],true):''; | ||
592 | } | 616 | } |
617 | + unset($k); | ||
593 | 618 | ||
594 | $this->success('请求成功',$course); | 619 | $this->success('请求成功',$course); |
595 | } | 620 | } |
@@ -427,6 +427,7 @@ class User extends Api | @@ -427,6 +427,7 @@ class User extends Api | ||
427 | $address = $this->request->request('address'); | 427 | $address = $this->request->request('address'); |
428 | $is_default = $this->request->request('is_default'); | 428 | $is_default = $this->request->request('is_default'); |
429 | $code = $this->request->request('code'); | 429 | $code = $this->request->request('code'); |
430 | + $weChat_pic = $this->request->request('weChat_pic'); | ||
430 | 431 | ||
431 | if (!$user_id) { | 432 | if (!$user_id) { |
432 | $this->error(__('Invalid parameters')); | 433 | $this->error(__('Invalid parameters')); |
@@ -467,6 +468,7 @@ class User extends Api | @@ -467,6 +468,7 @@ class User extends Api | ||
467 | $data['birthday'] = $birthday; | 468 | $data['birthday'] = $birthday; |
468 | $data['area'] = $area; | 469 | $data['area'] = $area; |
469 | $data['address'] = $address; | 470 | $data['address'] = $address; |
471 | + $data['weChat_pic'] = $weChat_pic; | ||
470 | $data['is_default'] = $is_default; | 472 | $data['is_default'] = $is_default; |
471 | $user->save($data,['id'=>$user_id]); | 473 | $user->save($data,['id'=>$user_id]); |
472 | 474 |
1 | +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { | ||
2 | + | ||
3 | + var Controller = { | ||
4 | + index: function () { | ||
5 | + // 初始化表格参数配置 | ||
6 | + Table.api.init({ | ||
7 | + extend: { | ||
8 | + index_url: 'course_sign_start_set/index' + location.search, | ||
9 | + add_url: 'course_sign_start_set/add', | ||
10 | + edit_url: 'course_sign_start_set/edit', | ||
11 | + del_url: 'course_sign_start_set/del', | ||
12 | + multi_url: 'course_sign_start_set/multi', | ||
13 | + table: 'course_sign_start_set', | ||
14 | + } | ||
15 | + }); | ||
16 | + | ||
17 | + var table = $("#table"); | ||
18 | + | ||
19 | + // 初始化表格 | ||
20 | + table.bootstrapTable({ | ||
21 | + url: $.fn.bootstrapTable.defaults.extend.index_url, | ||
22 | + pk: 'id', | ||
23 | + sortName: 'id', | ||
24 | + columns: [ | ||
25 | + [ | ||
26 | + {checkbox: true}, | ||
27 | + {field: 'id', title: __('Id')}, | ||
28 | + /* {field: 'course_sign_id', title: __('Course_sign_id')},*/ | ||
29 | + {field: 'course_star', title: __('Course_star'), operate:'BETWEEN'}, | ||
30 | + {field: 'teacher_star', title: __('Teacher_star'), operate:'BETWEEN'}, | ||
31 | + {field: 'service_star', title: __('Service_star'), operate:'BETWEEN'}, | ||
32 | + {field: 'content', title: __('Content')}, | ||
33 | + {field: 'pic', title: __('Pic'), formatter: function (value) { | ||
34 | + var arr = value.split(','); | ||
35 | + var html = ''; | ||
36 | + for(var i = 0; i < arr.length; i++) { | ||
37 | + html += '<a href="javascript:"><img class="img-sm img-center" src="'+Fast.api.cdnurl(arr[i])+'"></a>' | ||
38 | + } | ||
39 | + return html; | ||
40 | + },events: Table.api.events.image}, | ||
41 | + {field: 'username', title: __('名字')}, | ||
42 | + {field: 'weChat_pic', title: __('头像'), formatter: function (value) { | ||
43 | + var arr = value.split(','); | ||
44 | + var html = ''; | ||
45 | + for(var i = 0; i < arr.length; i++) { | ||
46 | + html += '<a href="javascript:"><img class="img-sm img-center" src="'+Fast.api.cdnurl(arr[i])+'"></a>' | ||
47 | + } | ||
48 | + return html; | ||
49 | + },events: Table.api.events.image}, | ||
50 | + {field: 'course.name', title: __('Course_id')}, | ||
51 | + {field: 'store.name', title: __('Store_id')}, | ||
52 | + {field: 'create_time', title: __('Create_time'), operate:'RANGE', addclass:'datetimerange'}, | ||
53 | + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} | ||
54 | + ] | ||
55 | + ] | ||
56 | + }); | ||
57 | + | ||
58 | + // 为表格绑定事件 | ||
59 | + Table.api.bindevent(table); | ||
60 | + }, | ||
61 | + add: function () { | ||
62 | + Controller.api.bindevent(); | ||
63 | + }, | ||
64 | + edit: function () { | ||
65 | + Controller.api.bindevent(); | ||
66 | + }, | ||
67 | + api: { | ||
68 | + bindevent: function () { | ||
69 | + Form.api.bindevent($("form[role=form]")); | ||
70 | + } | ||
71 | + } | ||
72 | + }; | ||
73 | + return Controller; | ||
74 | +}); |
-
请 注册 或 登录 后发表评论