Evaluate.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\AdminBaseController;
  4. use app\common\model\q\UserFormDataModel;
  5. use app\common\model\q\UserFormItemModel;
  6. use app\common\model\q\UserFormModel;
  7. class Evaluate extends AdminBaseController
  8. {
  9. /**
  10. * 项目列表
  11. */
  12. public function project()
  13. {
  14. return view();
  15. }
  16. public function listProject()
  17. {
  18. $where = [
  19. ['user_id', '=', 723],
  20. ['is_folder', '=', 1],
  21. ['is_deleted', '=', 0],
  22. ];
  23. $list = UserFormModel::where($where)
  24. ->order('create_time desc')
  25. ->limit(input('limit'))
  26. ->page(input('page'))
  27. ->select();
  28. $count = UserFormModel::where($where)->count();
  29. if ($count == 0) {
  30. ajax_return(1, '未查询到数据');
  31. }
  32. //数据处理
  33. foreach ($list as $v) {
  34. $v['sub_count'] = UserFormModel::where('folder_id', $v['id'])->count();
  35. }
  36. list_return($list, $count);
  37. }
  38. public function exportProject()
  39. {
  40. $id = input('id', 0);
  41. if (empty($id)) {
  42. return '参数有误';
  43. }
  44. $form = UserFormModel::find($id);
  45. if (empty($form) || $form['is_folder'] != 1) {
  46. return '参数有误';
  47. }
  48. $form_list = UserFormModel::where([
  49. ['folder_id', '=', $id],
  50. ['is_deleted', '=', 0],
  51. ])->select();
  52. $form_key_list = $form_list->column('form_key');
  53. if (empty($form_key_list)) {
  54. return '暂无评价';
  55. }
  56. //表单问题
  57. $form_item = UserFormItemModel::where('form_key', 'in', $form_key_list)->where('type', 'RADIO')->select();
  58. $form_key_item_list = [];
  59. foreach ($form_item as $v) {
  60. $item = $v->toArray();
  61. $item['scheme_array'] = json_decode($item['scheme'], true);
  62. $item['label'] = strip_tags($item['label']);
  63. $form_key_item_list[$v['form_key']][] = $item;
  64. }
  65. //具体数据
  66. $form_data = UserFormDataModel::where('form_key', 'in', $form_key_list)->select();
  67. if (empty($form_data)) {
  68. return '暂无评价';
  69. }
  70. $form_key_data_list = [];
  71. foreach ($form_data as $v) {
  72. $item = $v->toArray();
  73. $item['original_data_array'] = json_decode($item['original_data'], true);
  74. $form_key_data_list[$v['form_key']][] = $item;
  75. }
  76. //计算百分比
  77. $res = [];
  78. foreach ($form_key_item_list as $key => $form_item_list) {
  79. if (!empty($form_key_data_list[$key])) {
  80. //每个问题
  81. $answer_list = $form_key_data_list[$key];
  82. $res[$key]['list'] = $this->_dealPercent($answer_list, $form_item_list);
  83. }
  84. }
  85. //组合数据
  86. foreach ($form_list as $v) {
  87. $res[$v['form_key']]['title'] = trim(str_replace("\n", '', strip_tags($v['name'])));
  88. }
  89. return view('', ['form' => $form, 'list' => $res]);
  90. }
  91. public function course()
  92. {
  93. $id = input('id',0);
  94. if (empty($id)) {
  95. return '参数错误';
  96. }
  97. return view('',['id'=>$id]);
  98. }
  99. public function listCourse()
  100. {
  101. $id = input('id',0);
  102. if (empty($id)) {
  103. ajax_return(1, '未查询到数据');
  104. }
  105. $where = [
  106. ['user_id', '=', 723],
  107. ['folder_id', '=', $id],
  108. ['is_deleted', '=', 0],
  109. ];
  110. $list = UserFormModel::where($where)
  111. ->order('create_time desc')
  112. ->limit(input('limit'))
  113. ->page(input('page'))
  114. ->select();
  115. $count = UserFormModel::where($where)->count();
  116. if ($count == 0) {
  117. ajax_return(1, '未查询到数据');
  118. }
  119. //数据处理
  120. foreach ($list as $v) {
  121. $v['evaluate_count'] = UserFormDataModel::where('form_key', $v['form_key'])->count();
  122. }
  123. list_return($list, $count);
  124. }
  125. private function _dealPercent($answer_list, $form_item_list)
  126. {
  127. /* $res = [
  128. 'form_key' => [
  129. 'form_item_id' => [
  130. 'title'=>'标题',
  131. 'answer'=> [
  132. 'value' => ['title'=>'非常满意','num'=>'数量'],
  133. 'value' => ['title'=>'满意','num'=>'数量'],
  134. ],
  135. 'answer_total' => '总数',
  136. ],
  137. ],
  138. ];*/
  139. //问题列表
  140. $problem_list = [];
  141. foreach ($form_item_list as $k => $v) {
  142. $options = [];
  143. if (!empty($v['scheme_array']['config']['options'])) {
  144. foreach ($v['scheme_array']['config']['options'] as $option) {
  145. $options[$option['value']] = ['title' => $option['label'], 'num' => 0];
  146. }
  147. }
  148. $problem_list[$v['form_item_id']] = [
  149. 'title' => $v['label'],
  150. 'answer' => $options,
  151. 'answer_total' => count($answer_list),
  152. ];
  153. }
  154. //问题答案
  155. foreach ($answer_list as $answer) {
  156. foreach ($answer['original_data_array'] as $answer_item_key => $answer_item) {
  157. if (!empty($problem_list[$answer_item_key])) {
  158. if (!empty($problem_list[$answer_item_key]['answer'][$answer_item])) {
  159. $problem_list[$answer_item_key]['answer'][$answer_item]['num']++;
  160. }
  161. }
  162. }
  163. }
  164. return $problem_list;
  165. }
  166. }