feedback.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
  6. <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
  7. <title></title>
  8. <link rel="stylesheet" type="text/css" href="../../css/api.css" />
  9. <link rel="stylesheet" type="text/css" href="../../css/weui.min.css" />
  10. <link rel="stylesheet" type="text/css" href="../../css/iconfont.css" />
  11. <link rel="stylesheet" type="text/css" href="../../css/star-rating-svg.css?v=1.2" />
  12. <link rel="stylesheet" type="text/css" href="../../css/style.css?v=1.2" />
  13. <style>
  14. body{}
  15. .back-item{
  16. width:100%;
  17. /*padding:10px;*/
  18. text-align:center;
  19. /*border-bottom: 1px solid #e8e8e8;*/
  20. box-sizing: border-box;
  21. }
  22. .back-item img{
  23. width:20px;
  24. }
  25. textarea{
  26. width:100%;
  27. height: 2rem;
  28. font-size: 0.28rem;
  29. line-height: 0.38rem;
  30. padding: 0.5em;
  31. box-sizing: border-box;
  32. -webkit-appearance: none;
  33. }
  34. .image-list{
  35. width:100%;
  36. }
  37. .feed-btn{
  38. width:100%;
  39. position:fixed;
  40. bottom:0px;
  41. padding:15px;
  42. box-sizing:border-box;
  43. }
  44. .jq-star {
  45. width: 0.35rem !important;
  46. height: 0.35rem !important;
  47. padding: 0.2rem 0.1rem;
  48. }
  49. .m-bottom {
  50. height: 0.86rem;
  51. line-height: 0.86rem;
  52. border-radius: 0.15rem;
  53. }
  54. .close_btn {
  55. position: absolute;
  56. margin-left: -0.52rem;
  57. color: #d9251c;
  58. }
  59. .image-list .img_item {
  60. float: left;
  61. }
  62. </style>
  63. <script>
  64. (function(w, d, m) {
  65. function r() {
  66. var t = 100,
  67. o = 750,
  68. e = d.documentElement.clientWidth || w.innerWidth,
  69. n = m.max(m.min(e, 480), 320),
  70. h = 50;
  71. 320 >= n && (h = m.floor(n / o * t * .99)),
  72. n > 320 && 362 >= n && (h = m.floor(n / o * t * 1)),
  73. n > 362 && 375 >= n && (h = m.floor(n / o * t * 1)),
  74. n > 375 && (h = m.floor(n / o * t * .97)),
  75. d.querySelector("html").style.fontSize = h + "px"
  76. };
  77. r();
  78. w.onresize = function() {
  79. r()
  80. }
  81. })(window, document, Math);
  82. </script>
  83. </head>
  84. <body>
  85. <div class="topbar"></div>
  86. <header class="back-header back-header-bottom">
  87. <ul>
  88. <li class="padding-20 back-btn"><img class="back-header-ico" src="../../image/nav_button_back_default.png" /></li>
  89. <li class="back-header-title">入住反馈</li>
  90. <li class="more-btn"></li>
  91. </ul>
  92. </header>
  93. <section class="padding-top">
  94. <div class="back-item" style="padding:10px;">满意度星级评价(完成此项送30圈币)</div>
  95. <div class="back-item">
  96. <p>您对酒店的整体满意度</p>
  97. <div class="my-rating"></div>
  98. </div>
  99. <div class="back-item">
  100. <p>您是否会再次入住或向他人介绍本酒店</p>
  101. <div class="my-rating1"></div>
  102. </div>
  103. <div class="back-item">
  104. <p>您对酒店设施是否满意</p>
  105. <div class="my-rating2"></div>
  106. </div>
  107. <div class="back-item">
  108. <p>您对员工的待客礼仪是否满意</p>
  109. <div class="my-rating3"></div>
  110. </div>
  111. <div class="back-item">
  112. <p>您对我们提供的网上购物的总体评价</p>
  113. <div class="my-rating4"></div>
  114. </div>
  115. <div class="back-item">文字建议与评价(完成此项送20圈币)</div>
  116. <div class="back-item" style="position:relative;" id="wordCount">
  117. <textarea row="5" maxlength="300" id="content" placeholder="对我们的酒店设施与服务,您还有什么建议吗?对我们的服务人员您有什么批评或表扬吗?请告诉我们..."></textarea>
  118. <!-- <span style="position:absolute;right:10px;bottom:10px;"><span id="count-txt">0</span>/300</span> -->
  119. <span class="wordwrap" style="bottom: -0.32rem;"><var class="word">300</var>/ 300</span>
  120. </div>
  121. <div class="h10"></div>
  122. <div style="font-size: 0.28rem;">添加图片(最多3张)</div>
  123. <div class="h5"></div>
  124. <div class="image-list">
  125. <span></span>
  126. <img id="select-image" src="../../image/addimg.png" style="width: 0.86rem;" />
  127. </div>
  128. </div>
  129. </section>
  130. <div class="h20" style="padding-bottom: 1.3rem;"></div>
  131. <div class="feed-btn more-btn">
  132. <div class="m-bottom">提 交</div>
  133. </div>
  134. <div class="h50"></div>
  135. </body>
  136. <script type="text/javascript" src="../../script/api.js"></script>
  137. <script type="text/javascript" src="../../script/jquery.min.js"></script>
  138. <script type="text/javascript" src="../../script/jquery.tap.js"></script>
  139. <script type="text/javascript" src="../../script/jquery.star-rating-svg.js"></script>
  140. <script type="text/javascript">
  141. var _imgArr = [];
  142. var _store_id = '';
  143. var _tImgArr = [];
  144. var _satisfaction = 0;
  145. var _recommend = 0;
  146. var _facilities = 0;
  147. var _ceremony = 0;
  148. var _shopping = 0;
  149. var _keyid = '';
  150. apiready = function() {
  151. _keyid = api.pageParam.keyid;
  152. setFixStatusBar();
  153. };
  154. $(function() {
  155. var wordCount = $("#wordCount"), textArea = wordCount.find("textarea"), word = wordCount.find(".word");
  156. statInputNum(textArea, word);
  157. })
  158. $(".more-btn").on("tap", function() {
  159. if (_satisfaction == 0 || _recommend == 0 || _facilities == 0 || _ceremony == 0 || _shopping == 0) {
  160. api.toast({ msg: '请完成星级评价!' });
  161. return false;
  162. }
  163. if ($("#content").val() == "") {
  164. api.toast({ msg: '请填写反馈内容!' });
  165. return false;
  166. }
  167. if ($("#content").val().length < 20) {
  168. api.toast({ msg: '反馈内容不能少于20个字!' });
  169. return false;
  170. }
  171. _imgArr.splice(0, _imgArr.length);
  172. $(".image-list .img_item").each(function() {
  173. var _src = $(this).data("img");
  174. _imgArr.push(_src);
  175. });
  176. toast_loding_show();
  177. $.ajax({
  178. url: siteurl + 'v2/store/feedback',//'v1/store/feedback',
  179. data: {
  180. store_id: _keyid,
  181. satisfaction: _satisfaction,
  182. recommend: _recommend,
  183. facilities: _facilities,
  184. ceremony: _ceremony,
  185. shopping: _shopping,
  186. content: $("#content").val(),
  187. member_id: $api.getStorage("memberid"),
  188. img_list: _imgArr.toString()
  189. },
  190. headers: { "X-TOKEN": $api.getStorage("accesstoken") },
  191. dataType: 'json',
  192. type: 'post',
  193. success: function(datas) {
  194. toast_loding_hide();
  195. if (datas.result) {
  196. // setPoint();
  197. api.toast({ msg: "提交成功,感谢您的反馈!" })
  198. setTimeCloseWin("feedback");
  199. } else {
  200. errcode(datas, datas.code);
  201. }
  202. }
  203. });
  204. return false;
  205. })
  206. $(".my-rating").starRating({
  207. starSize: 23,
  208. initialRating: 0,
  209. useFullStars: true,
  210. activeColor: '#d9251c',
  211. starShape: 'rounded',
  212. hoverColor: '#d9251c',
  213. disableAfterRate: false,
  214. callback: function(currentRating, $el) {
  215. _satisfaction = currentRating;
  216. }
  217. });
  218. $(".my-rating1").starRating({
  219. starSize: 23,
  220. initialRating: 0,
  221. useFullStars: true,
  222. activeColor: '#d9251c',
  223. starShape: 'rounded',
  224. hoverColor: '#d9251c',
  225. disableAfterRate: false,
  226. callback: function(currentRating, $el) {
  227. _recommend = currentRating;
  228. }
  229. });
  230. $(".my-rating2").starRating({
  231. starSize: 23,
  232. initialRating: 0,
  233. useFullStars: true,
  234. activeColor: '#d9251c',
  235. starShape: 'rounded',
  236. hoverColor: '#d9251c',
  237. disableAfterRate: false,
  238. callback: function(currentRating, $el) {
  239. _facilities = currentRating;
  240. }
  241. });
  242. $(".my-rating3").starRating({
  243. starSize: 23,
  244. initialRating: 0,
  245. useFullStars: true,
  246. activeColor: '#d9251c',
  247. starShape: 'rounded',
  248. hoverColor: '#d9251c',
  249. disableAfterRate: false,
  250. callback: function(currentRating, $el) {
  251. _ceremony = currentRating;
  252. }
  253. });
  254. $(".my-rating4").starRating({
  255. starSize: 23,
  256. initialRating: 0,
  257. useFullStars: true,
  258. activeColor: '#d9251c',
  259. starShape: 'rounded',
  260. hoverColor: '#d9251c',
  261. disableAfterRate: false,
  262. callback: function(currentRating, $el) {
  263. _shopping = currentRating;
  264. }
  265. });
  266. $("#select-image").on("tap", function() {
  267. if (_tImgArr.length < 3) {
  268. var has = hasPermission('storage');
  269. if(!has || !has[0] || !has[0].granted){
  270. api.confirm({
  271. title: '提醒',
  272. msg: "没有获得 存储 权限\n是否前往设置?",
  273. buttons: ['去设置', '取消']
  274. }, function (ret, err) {
  275. var index = ret.buttonIndex;
  276. if (index == 1) {
  277. reqPermission('storage');
  278. } else {
  279. api.toast({ msg: '获取存储权限失败...' });
  280. }
  281. });
  282. // $(".border-none").removeClass("mask-hidden");
  283. return false;
  284. }
  285. api.getPicture({
  286. sourceType: 'album',
  287. encodingType: 'jpg',
  288. mediaValue: 'pic',
  289. destinationType: 'url',
  290. // allowEdit: true,
  291. quality: 100,
  292. targetWidth: 600,
  293. targetHeight: 600,
  294. saveToPhotoAlbum: false
  295. }, function(ret, err) {
  296. if (ret) {
  297. upimg(ret.data);
  298. // _tImgArr.push(ret.data);
  299. }
  300. });
  301. } else {
  302. api.toast({ msg: '上传不能超过3张图片' });
  303. }
  304. return false;
  305. })
  306. function upimg(files) {
  307. if (files) {
  308. api.ajax({
  309. url: siteurl + 'v2/upload/tmp',//'?do=upfile',
  310. method: 'post',
  311. data: {
  312. files: {
  313. file: files
  314. }
  315. },
  316. headers: { "X-TOKEN": $api.getStorage("accesstoken") }
  317. }, function(ret, err) {
  318. if (ret) {
  319. _tImgArr.push(ret.data);
  320. create_html(_tImgArr);
  321. }
  322. });
  323. }
  324. }
  325. function create_html(list){
  326. var html = '';
  327. for(var i in list){
  328. html += '<div class="img_item" data-img="'+list[i].file_name+'"><img id="select-image" class="select-image" src="' + list[i].url + '" style="width: 1.6rem;margin-right: 0.2rem;"/><span class="close_btn iconfont icon-guanbi" data-index="'+i+'"></span></div>'
  329. }
  330. $(".image-list span").html(html);
  331. }
  332. $(".image-list").on("tap", ".close_btn", function() {
  333. // console.log(this)
  334. _tImgArr.splice($(this).data('index')*1, 1);
  335. create_html(_tImgArr);
  336. });
  337. </script>
  338. </html>