show.html 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. <extend name="common@public:base_show" ></extend>
  2. <block name="body">
  3. <notempty name='project_api_id'>
  4. <div class="col-md-12">
  5. <!-- Horizontal Form -->
  6. <div class="box box-info">
  7. <div class="box-header with-border">
  8. <h3 class="box-title">接口详情</h3>
  9. </div><!-- /.box-header -->
  10. <!-- form start -->
  11. <style>
  12. .input-group-btn label{
  13. width: 150px;
  14. }
  15. </style>
  16. <form action="{:url('Project/show')}" enctype="multipart/form-data" method="post">
  17. <input type="hidden" name="id" value="<notempty name='project_api_data.id'>{$project_api_data.id}</notempty>">
  18. <input type="hidden" name="project_api_id" value="<notempty name='project_api_data.id'>{$project_api_data.id}</notempty>">
  19. <input type="hidden" name="project_id" value="{$project_id}">
  20. <input type="hidden" name="project_module_id" value="{$project_module_id}">
  21. <div class="box-body">
  22. <!-- text input -->
  23. <div class="input-group margin">
  24. <div class="input-group-btn">
  25. <label class="btn btn-default">接口名称</label>
  26. </div>
  27. <!-- /btn-group -->
  28. <input name="api_name" value="{$project_api_data.api_name}" type="text" class="form-control">
  29. </div>
  30. <div class="input-group margin">
  31. <div class="input-group-btn">
  32. <label class="btn btn-default">请求类型</label>
  33. </div>
  34. <!-- /btn-group -->
  35. <select name="request_type_id" class="form-control select2">
  36. <volist id="post" name="request_data">
  37. <option <php>if($project_api_data['request_type_id'] == $post['id']){echo "selected='selected'";}</php> value="{$post.id}">{$post.type_name}</option>
  38. </volist>
  39. </select>
  40. </div>
  41. <div class="input-group margin">
  42. <div class="input-group-btn">
  43. <label class="btn btn-default">请求domain</label>
  44. </div>
  45. <!-- /btn-group -->
  46. <select name="project_url_id" class="form-control select2">
  47. <volist id="url" name="project_url">
  48. <option <php>if($project_api_data['project_url_id'] == $url['id']){echo "selected='selected'";}</php> value="{$url.id}">{$url.url_domain}</option>
  49. </volist>
  50. </select>
  51. </div>
  52. <div class="input-group margin">
  53. <div class="input-group-btn">
  54. <label class="btn btn-default">请求url</label>
  55. </div>
  56. <!-- /btn-group -->
  57. <input name="api_url" type="text" value="{$project_api_data.api_url}" class="form-control">
  58. </div>
  59. <div class="input-group margin">
  60. <div class="input-group-btn">
  61. <label class="btn btn-default">接口描述</label>
  62. </div>
  63. <!-- /btn-group -->
  64. <input name="api_des" type="text" value="{$project_api_data.api_des}" class="form-control">
  65. </div>
  66. </div><!-- /.box-body -->
  67. <div class="box-header with-border">
  68. <h3 class="box-title">请求参数列表</h3>
  69. </div><!-- /.box-header -->
  70. <div class="box-body">
  71. <table class="table table-bordered">
  72. <tbody id="request">
  73. <tr>
  74. <th style="width: 200px;">参数名</th>
  75. <th style="width: 100px;">必选</th>
  76. <th style="width: 200px;">类型</th>
  77. <th>说明</th>
  78. <th style="padding: 0 0 0 8px;width: 70px;">
  79. <button type="button" id="add_request" class="btn btn-primary btn-flat">新增</button>
  80. </th>
  81. </tr>
  82. <volist name="project_request_data" id="request">
  83. <tr>
  84. <td>
  85. <input class="form-control" type="text" name="request_name[]" value="{$request.request_name}">
  86. </td>
  87. <td>
  88. <select name="request_must[]" class="form-control select2">
  89. <option <if condition="'Y' eq $request.request_must">selected='selected'</if> value="Y">Y</option>
  90. <option <if condition="'N' eq $request.request_must">selected='selected'</if> value="N">N</option>
  91. </select>
  92. </td>
  93. <td>
  94. <select name="request_type[]" class="form-control select2">
  95. <volist id="type" name="data_type">
  96. <option <if condition="$type.id eq $request.request_type">selected='selected'</if> value="{$type.id}">{$type.type_name}</option>
  97. </volist>
  98. </select>
  99. </td>
  100. <td>
  101. <input class="form-control" type="text" name="request_remark[]" value="{$request.request_remark}">
  102. </td>
  103. <td>
  104. <button name="del" type="button" class="btn btn-danger btn-flat">删除</button>
  105. </td>
  106. </tr>
  107. </volist>
  108. </tbody>
  109. </table>
  110. <div style="margin-top: 10px;" class="">
  111. <label>请求json格式</label>
  112. <textarea id="api_parameter_json" style="width:100%;" class="form-group" name="api_parameter_json">{$project_api_data.api_parameter_json}</textarea>
  113. </div>
  114. </div>
  115. <div class="box-header with-border">
  116. <h3 class="box-title">响应参数列表</h3>
  117. </div><!-- /.box-header -->
  118. <div class="box-body">
  119. <table class="table table-bordered">
  120. <tbody id="back">
  121. <tr>
  122. <th style="width: 200px;">参数名</th>
  123. <th style="width: 100px;">必选</th>
  124. <th style="width: 200px;">类型</th>
  125. <th>说明</th>
  126. <th style="padding: 0 0 0 8px;width: 70px;">
  127. <button type="button" id="add_back" class="btn btn-primary btn-flat">新增</button>
  128. </th>
  129. </tr>
  130. <volist name="project_back_data" id="back">
  131. <tr>
  132. <td>
  133. <input class="form-control" type="text" name="back_name[]" value="{$back.back_name}">
  134. </td>
  135. <td>
  136. <select name="back_must[]" class="form-control select2">
  137. <option <if condition="'Y' eq $back.back_must">selected='selected'</if> value="Y">Y</option>
  138. <option <if condition="'N' eq $back.back_must">selected='selected'</if> value="N">N</option>
  139. </select>
  140. </td>
  141. <td>
  142. <select name="back_type[]" class="form-control select2">
  143. <volist id="type" name="data_type">
  144. <option <if condition="$type.id eq $back.back_type">selected='selected'</if> value="{$type.id}">{$type.type_name}</option>
  145. </volist>
  146. </select>
  147. </td>
  148. <td>
  149. <input class="form-control" type="text" name="back_remark[]" value="{$back.back_remark}">
  150. </td>
  151. <td>
  152. <button name="del" type="button" class="btn btn-danger btn-flat">删除</button>
  153. </td>
  154. </tr>
  155. </volist>
  156. </tbody>
  157. </tbody>
  158. </table>
  159. <div style="margin-top: 10px;" class="">
  160. <label>返回json格式</label>
  161. <textarea id="api_re_json" style="width:100%;" class="form-group" name="api_re_json">{$project_api_data.api_re_json}</textarea>
  162. </div>
  163. </div>
  164. <div class="box-footer">
  165. <button type="submit" class="btn btn-primary pull-right btn-flat"><i class="fa fa-save"></i> 更新</button>
  166. </div><!-- /.box-footer -->
  167. </form>
  168. </div><!-- /.box -->
  169. <div id="icon"></div>
  170. </div>
  171. </notempty>
  172. </block>
  173. <block name="js">
  174. <script>
  175. var js_date_type={$js_data_type};
  176. var date_type='';
  177. var height=window.innerHeight-101;
  178. var left_height=window.innerHeight-50;
  179. $('#body_scroll').css({'height':height});
  180. $('#left_scroll').css({'height':left_height});
  181. $.each(js_date_type, function(k,v) {
  182. if(k == 0){
  183. date_type+='<option selected="selected" value="'+v.id+'">'+v.type_name+'</option>';
  184. }else{
  185. date_type+='<option value="'+v.id+'">'+v.type_name+'</option>';
  186. }
  187. });
  188. $('#add_request').click(function () {
  189. $('#request').append(
  190. '<tr>'+
  191. '<td>'+
  192. '<input class="form-control" type="text" name="request_name[]" value="">'+
  193. '</td>'+
  194. '<td>'+
  195. '<select name="request_must[]" class="form-control select2">'+
  196. '<option selected="selected" value="Y">Y</option>'+
  197. '<option value="N">N</option>'+
  198. '</select>'+
  199. '</td>'+
  200. '<td>'+
  201. '<select name="request_type[]" class="form-control select2">'+
  202. date_type+
  203. '</select>'+
  204. '</td>'+
  205. '<td>'+
  206. '<input class="form-control" type="text" name="request_remark[]" value="">'+
  207. '</td>'+
  208. '<td>'+
  209. '<button name="del" type="button" class="btn btn-danger btn-flat">删除</button>'+
  210. '</td>'+
  211. '</tr>'
  212. );
  213. // $('[name="request_must[]"]').select2({
  214. //
  215. // });
  216. // $('[name="request_type[]"]').select2({
  217. //
  218. // });
  219. });
  220. $('#add_back').click(function () {
  221. $('#back').append(
  222. '<tr>'+
  223. '<td>'+
  224. '<input class="form-control" type="text" name="back_name[]" value="">'+
  225. '</td>'+
  226. '<td>'+
  227. '<select name="back_must[]" class="form-control select2">'+
  228. '<option selected="selected" value="Y">Y</option>'+
  229. '<option value="N">N</option>'+
  230. '</select>'+
  231. '</td>'+
  232. '<td>'+
  233. '<select name="back_type[]" class="form-control select2">'+
  234. date_type+
  235. '</select>'+
  236. '</td>'+
  237. '<td>'+
  238. '<input class="form-control" type="text" name="back_remark[]" value="">'+
  239. '</td>'+
  240. '<td>'+
  241. '<button name="del" type="button" class="btn btn-danger btn-flat">删除</button>'+
  242. '</td>'+
  243. '</tr>'
  244. );
  245. // $('[name="back_must[]"]').select2({
  246. //
  247. // });
  248. // $('[name="back_type[]"]').select2({
  249. //
  250. // });
  251. });
  252. $("body").on('click', '[name="del"]', function(){
  253. $(this).parent().parent().remove();
  254. });
  255. $("[data-reveal-id='cate_edit']").click(function () {
  256. var cate_id=$(this).attr('cate_id');
  257. var cate_name=$(this).attr('cate_name');
  258. $('[name="cate_id"]').val(cate_id);
  259. $('[name="cate_name"]').val(cate_name);
  260. });
  261. $("[data-reveal-id='module_edit']").click(function () {
  262. var model_id=$(this).attr('model_id');
  263. var model_name=$(this).attr('model_name');
  264. $('[name="module_id"]').val(model_id);
  265. $('[name="model_name"]').val(model_name);
  266. });
  267. /**
  268. * 文本框根据输入内容自适应高度
  269. * @param {HTMLElement} 输入框元素
  270. * @param {Number} 设置光标与输入框保持的距离(默认0)
  271. * @param {Number} 设置最大高度(可选)
  272. */
  273. var autoTextarea = function (elem, extra, maxHeight) {
  274. extra = extra || 0;
  275. var isFirefox = !!document.getBoxObjectFor || 'mozInnerScreenX' in window,
  276. isOpera = !!window.opera && !!window.opera.toString().indexOf('Opera'),
  277. addEvent = function (type, callback) {
  278. elem.addEventListener ? elem.addEventListener(type, callback, false) : elem.attachEvent('on' + type, callback);
  279. },
  280. getStyle = elem.currentStyle ? function (name) {
  281. var val = elem.currentStyle[name];
  282. if (name === 'height' && val.search(/px/i) !== 1) {
  283. var rect = elem.getBoundingClientRect();
  284. return rect.bottom - rect.top -
  285. parseFloat(getStyle('paddingTop')) -
  286. parseFloat(getStyle('paddingBottom')) + 'px';
  287. };
  288. return val;
  289. } : function (name) {
  290. return getComputedStyle(elem, null)[name];
  291. },
  292. minHeight = parseFloat(getStyle('height'));
  293. // elem.style.resize = 'none';//拖动伸缩
  294. var change = function () {
  295. var scrollTop, height,
  296. padding = 0,
  297. style = elem.style;
  298. if (elem._length === elem.value.length) return;
  299. elem._length = elem.value.length;
  300. if (!isFirefox && !isOpera) {
  301. padding = parseInt(getStyle('paddingTop')) + parseInt(getStyle('paddingBottom'));
  302. };
  303. scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
  304. elem.style.height = minHeight + 'px';
  305. if (elem.scrollHeight > minHeight) {
  306. if (maxHeight && elem.scrollHeight > maxHeight) {
  307. height = maxHeight - padding;
  308. style.overflowY = 'auto';
  309. } else {
  310. height = elem.scrollHeight - padding;
  311. // style.overflowY = 'hidden';
  312. style.overflowY = 'auto';
  313. };
  314. style.height = height + extra + 'px';
  315. scrollTop += parseInt(style.height) - elem.currHeight;
  316. document.body.scrollTop = scrollTop;
  317. document.documentElement.scrollTop = scrollTop;
  318. elem.currHeight = parseInt(style.height);
  319. };
  320. };
  321. addEvent('propertychange', change);
  322. // addEvent('input', change);
  323. addEvent('focus', change);
  324. change();
  325. };
  326. var api_parameter_json = document.getElementById("api_parameter_json");
  327. autoTextarea(api_parameter_json,10);//调用
  328. var api_re_json = document.getElementById("api_re_json");
  329. autoTextarea(api_re_json,10);//调用
  330. </script>
  331. </block>