tc.html 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822
  1. {include file="../application/h5/view/wx_book_dinner/header.html"}
  2. <script src="/static/elementui2.15.5/vue-2.6.14.js"></script>
  3. <style type="text/css">
  4. .icon-center{
  5. display: block;
  6. font-size:20px;
  7. text-align: center;
  8. }
  9. .weui-header .weui-header-left, .weui-header .weui-header-right {
  10. position: absolute;
  11. top: 14px;
  12. display: block;
  13. font-size: 12px;
  14. line-height: 21px;
  15. color: #FFF;
  16. }
  17. .weui_tab_bd{
  18. /*-webkit-overflow-scrolling: touch;*/
  19. }
  20. .weui-navigator-list2{
  21. background-color: #ffffff;
  22. border: 1px solid #6eb7ff;
  23. border-radius: 1vw;
  24. }
  25. .weui-navigator-list2 li{
  26. width: 45vw;
  27. background-color: #ffffff;
  28. border-radius: 1vw;
  29. }
  30. .weui-navigator-list2 li.weui-state-active1{
  31. background-color: #6eb7ff;
  32. color: #ffffff !important;
  33. }
  34. .weui-navigator-list2 li.weui-state-hover, .weui-navigator-list2 li.weui-state-active a:after {
  35. display: none;
  36. }
  37. .weui-navigator-list2 li.weui-state-hover, .weui-navigator-list2 li.weui-state-active a {
  38. color: #ffffff!important;
  39. }
  40. .wsss a{
  41. color: #ffffff !important;
  42. }
  43. </style>
  44. <style>
  45. .weui_tab_bd{
  46. background-color: #ffffff;
  47. position: relative;
  48. }
  49. .leftbox{
  50. position: absolute;
  51. z-index: 10;
  52. left: 0;
  53. top: 0;
  54. bottom: 10vh;
  55. width: 25vw;
  56. height: auto;
  57. background-color: #eee;
  58. }
  59. .leftbox .leftbox-nav{
  60. width: 100%;
  61. height: 50px;
  62. line-height: 50px;
  63. text-align: center;
  64. }
  65. .leftbox .leftbox-nav.cur{
  66. background-color: #ffffff;
  67. }
  68. .leftbox .leftbox-nav:hover{
  69. background-color: #ffffff;
  70. }
  71. .mainbox{
  72. position: absolute;
  73. z-index: 10;
  74. left: 25vw;
  75. top: 0;
  76. bottom: 10vh;
  77. width: 75vw;
  78. overflow: auto;
  79. margin-bottom: 100px;
  80. padding: 10px;
  81. padding-top: 8vh;
  82. }
  83. .tcbox{
  84. margin-bottom: 10px;
  85. }
  86. .tcbox .tcheader{
  87. font-size: 16px;
  88. font-weight: bold;
  89. }
  90. .tcbox .tclist{
  91. position: relative;
  92. padding: 10px 0;
  93. overflow: auto;
  94. border-bottom:1px solid #eeeeee;
  95. }
  96. .tcbox .tclist .tcimg{
  97. width: 15vw;
  98. height: 15vw;
  99. object-fit: cover;
  100. float: left;
  101. }
  102. .tcbox .tclist .tcbody{
  103. width: 56vw;
  104. height: auto;
  105. float: left;
  106. padding: 0 2vw;
  107. }
  108. .tcbox .tclist .tctitle{
  109. font-size: 16px;
  110. font-weight: 500;
  111. }
  112. .tcbox .tclist .tcdesc{
  113. font-size: 14px;
  114. vertical-align: middle;
  115. }
  116. .tcbox .tclist .tcdesc{
  117. vertical-align: middle;
  118. }
  119. .tcbox .tclist .tcdesc img{
  120. width: 26px;
  121. height: 26px;
  122. margin-right: 30px;
  123. /*margin-top: 5px;*/
  124. cursor: pointer;
  125. vertical-align: middle;
  126. }
  127. .tcbox .tclist .tcdesc img.tcmins{
  128. margin-right: 0;
  129. }
  130. .tcbox .tclist .tcdesc img.tcplus{
  131. margin-right: 20px;
  132. }
  133. .tcbox .tclist .tcdesc .tcbtn .tcnums{
  134. display: inline-block;
  135. padding: 0 5px;
  136. height: 31px;
  137. line-height: 31px;
  138. vertical-align: middle;
  139. }
  140. .tcbox .tclist .tcdesc .tcbtn{
  141. position: absolute;
  142. z-index: 11;
  143. right: 0px;
  144. bottom: 5px;
  145. display: inline-block;
  146. width: 200px;
  147. height: 31px;
  148. vertical-align: middle;
  149. text-align: right;
  150. /*font-size: 18px;*/
  151. /*margin-bottom: 10px;*/
  152. }
  153. .bottombox{
  154. position: fixed;
  155. z-index: 20;
  156. height: 10vh;
  157. line-height: 10vh;
  158. bottom: 0;
  159. left: 0;
  160. right: 0;
  161. border-top: 1px solid #eeeeee;
  162. background-color: #ffffff;
  163. padding-left: 3vw;
  164. }
  165. .bottombox .bottombox-btn{
  166. position: fixed;
  167. z-index: 21;
  168. bottom: 0;
  169. right: 0;
  170. width: 30vw;
  171. height: 10vh;
  172. background-color: #6eb7ff;
  173. color: #ffffff;
  174. text-align: center;
  175. }
  176. .sgroup{
  177. position: absolute;
  178. top: 0;
  179. left: 25vw;
  180. right: 0;
  181. height: 7vh;
  182. line-height: 7vh;
  183. background-color: #ffffff;
  184. font-size: 18px;
  185. font-weight: bold;
  186. z-index: 1000;
  187. padding: 0 10px;
  188. border-bottom: 1px solid #e5e5e5;
  189. }
  190. .groupbox{
  191. width: 100%;
  192. height: auto;
  193. border-top: 1px solid #e5e5e5;
  194. border-bottom: 1px solid #e5e5e5;
  195. }
  196. .groupbox .groupbox-list{
  197. padding: 10px 20px;
  198. border-bottom: 1px solid #e5e5e5;
  199. font-size: 18px;
  200. text-align: center;
  201. }
  202. </style>
  203. <div id="vueapp" class="weui_tab tab-bottom">
  204. <div class="weui-header">
  205. <div class="bg-blue">
  206. <div class="weui-header-left"></div>
  207. <h1 class="weui-header-title"><a href="javascript:;">{$user.HospitalName}<span class="icon icon-74"></span></a></h1>
  208. <div class="weui-header-left">
  209. <a style="color:#fff;" href="{:url('order')}">我的</a>
  210. </div>
  211. <div class="weui-header-right">
  212. <a style="color:#fff;" href="{:url('index')}">普通点餐</a>
  213. </div>
  214. </div>
  215. <div id="tagnav1" class="weui-navigator weui-navigator-wrapper" style="margin-top: 10px;margin-bottom: 10px;background-color: transparent;">
  216. <ul class="weui-navigator-list weui-navigator-list2">
  217. <li {if $week == 0}class="weui-state-active1 wsss"{/if}>
  218. <a href="{:url('tc',['week'=>0])}">本周</a>
  219. </li>
  220. <li {if $week == 1}class="weui-state-active1 wsss"{/if}>
  221. <a href="{:url('tc',['week'=>1])}">下周</a>
  222. </li>
  223. </ul>
  224. </div>
  225. </div>
  226. <div class="weui_tab_bd" v-if="groupid === 0">
  227. <div style="padding: 10px 20px; font-size: 14px;">
  228. 请选择套餐,每周只能选择一种套餐 <span style="color: red;">(注意:出院当天若不退伙自费84.3元)</span>
  229. </div>
  230. {if count($days) > 0 && count($groups) > 0}
  231. <div class="groupbox">
  232. <div v-for="(item,index) in groups" :key="index" @click="changeGroup(item)" class="groupbox-list" >{{item.title}}</div>
  233. </div>
  234. {else /}
  235. <div style="padding: 10px 20px; font-size: 14px;text-align: center;">
  236. 暂无套餐
  237. </div>
  238. {/if}
  239. </div>
  240. <div class="weui_tab_bd" v-if="groupid > 0">
  241. <div class="leftbox">
  242. <template v-for="(item,index) in curdays">
  243. <div v-if="index === typeidx" :key="index" @click="changeDay(index)" class="leftbox-nav cur">{{item.text}}<span v-if="item.count > 0" class="weui-badge">{{item.count}}</span></div>
  244. <div v-if="index !== typeidx" :key="index" @click="changeDay(index)" class="leftbox-nav">{{item.text}}<span v-if="item.count > 0" class="weui-badge">{{item.count}}</span></div>
  245. </template>
  246. </div>
  247. <div class="sgroup">{{grouptitle}} <span v-if="curdaymoney > 0" style="color: red;">¥{{curdaymoney}}</span> <a href="javascript:;" @click="rechangeGroup()" style="float:right;">切换</a></div>
  248. <div class="mainbox">
  249. <template v-for="(item,idx) in curtypes">
  250. <div v-if="curdinners.length > 0" :key="idx" class="tcbox">
  251. <div class="tcheader" v-if="item.limit > 0">{{item.name}}(最多选{{item.limit}}种)</div>
  252. <div class="tcheader" v-if="item.limit <= 0">{{item.name}}</div>
  253. <template v-for="(item2,idx2) in item.dinners">
  254. <div :key="idx2" class="tclist">
  255. <img onerror="this.src='/img/mrbg.png'" :src="item2.imgs" class="tcimg" alt="" />
  256. <div class="tcbody">
  257. <div class="tctitle" v-if="item2.ctitle">[{{item2.ctitle}}]{{item2.name}}</div>
  258. <div class="tctitle" v-if="!item2.ctitle">{{item2.name}}</div>
  259. <div class="tcdesc">
  260. <span>¥{{item2.money}} <span v-if="item2.required" class="weui-badge">必选</span></span>
  261. <div class="tcbtn">
  262. <img v-if="item2.nums > 0" src="/static/mobile/img/minus-circle.png" @click="changeDinner(item2,1)" class="tcmins" alt="">
  263. <div v-if="item2.nums > 0" class="tcnums">{{item2.nums}}</div>
  264. <img src="/static/mobile/img/add-circle.png" @click="changeDinner(item2,0)" class="tcplus" alt="">
  265. </div>
  266. </div>
  267. </div>
  268. </div>
  269. </template>
  270. </div>
  271. </template>
  272. <div class="tcbox" style="display: none;">
  273. <div class="tcheader">套餐B</div>
  274. <div class="tclist">
  275. <img src="http://gt60.demo.com/uploads/u1/files/20230403/298184647e743f3f50352391be77783a.jpg" class="tcimg" alt="">
  276. <div class="tcbody">
  277. <div class="tctitle">【早餐】西红柿鸡蛋</div>
  278. <div class="tcdesc">
  279. <span>¥2</span>
  280. <span class="tcbtn">
  281. <svg t="1680501834288" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3863" width="64" height="64"><path d="M512 74.666667C270.933333 74.666667 74.666667 270.933333 74.666667 512S270.933333 949.333333 512 949.333333 949.333333 753.066667 949.333333 512 753.066667 74.666667 512 74.666667z m0 810.666666c-204.8 0-373.333333-168.533333-373.333333-373.333333S307.2 138.666667 512 138.666667 885.333333 307.2 885.333333 512 716.8 885.333333 512 885.333333z" fill="#666666" p-id="3864"></path><path d="M682.666667 480h-138.666667V341.333333c0-17.066667-14.933333-32-32-32s-32 14.933333-32 32v138.666667H341.333333c-17.066667 0-32 14.933333-32 32s14.933333 32 32 32h138.666667V682.666667c0 17.066667 14.933333 32 32 32s32-14.933333 32-32v-138.666667H682.666667c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32z" fill="#666666" p-id="3865"></path></svg>
  282. <!-- <svg t="1680501789601" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3642" width="64" height="64"><path d="M512 74.666667C270.933333 74.666667 74.666667 270.933333 74.666667 512S270.933333 949.333333 512 949.333333 949.333333 753.066667 949.333333 512 753.066667 74.666667 512 74.666667z m0 810.666666c-204.8 0-373.333333-168.533333-373.333333-373.333333S307.2 138.666667 512 138.666667 885.333333 307.2 885.333333 512 716.8 885.333333 512 885.333333z" fill="#6eb7ff" p-id="3643"></path><path d="M701.866667 381.866667L448 637.866667 322.133333 512c-12.8-12.8-32-12.8-44.8 0-12.8 12.8-12.8 32 0 44.8l149.333334 149.333333c6.4 6.4 14.933333 8.533333 23.466666 8.533334s17.066667-2.133333 23.466667-8.533334l277.333333-277.333333c12.8-12.8 12.8-32 0-44.8-14.933333-12.8-36.266667-12.8-49.066666-2.133333z" fill="#6eb7ff" p-id="3644"></path></svg>-->
  283. </span>
  284. </div>
  285. </div>
  286. </div>
  287. <div class="tclist">
  288. <img src="http://gt60.demo.com/uploads/u1/files/20230403/298184647e743f3f50352391be77783a.jpg" class="tcimg" alt="">
  289. <div class="tcbody">
  290. <div class="tctitle">【早餐】西红柿鸡蛋</div>
  291. <div class="tcdesc">
  292. <span>¥2</span>
  293. <span class="tcbtn">
  294. <svg t="1680501834288" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3863" width="64" height="64"><path d="M512 74.666667C270.933333 74.666667 74.666667 270.933333 74.666667 512S270.933333 949.333333 512 949.333333 949.333333 753.066667 949.333333 512 753.066667 74.666667 512 74.666667z m0 810.666666c-204.8 0-373.333333-168.533333-373.333333-373.333333S307.2 138.666667 512 138.666667 885.333333 307.2 885.333333 512 716.8 885.333333 512 885.333333z" fill="#666666" p-id="3864"></path><path d="M682.666667 480h-138.666667V341.333333c0-17.066667-14.933333-32-32-32s-32 14.933333-32 32v138.666667H341.333333c-17.066667 0-32 14.933333-32 32s14.933333 32 32 32h138.666667V682.666667c0 17.066667 14.933333 32 32 32s32-14.933333 32-32v-138.666667H682.666667c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32z" fill="#666666" p-id="3865"></path></svg>
  295. <!-- <svg t="1680501789601" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3642" width="64" height="64"><path d="M512 74.666667C270.933333 74.666667 74.666667 270.933333 74.666667 512S270.933333 949.333333 512 949.333333 949.333333 753.066667 949.333333 512 753.066667 74.666667 512 74.666667z m0 810.666666c-204.8 0-373.333333-168.533333-373.333333-373.333333S307.2 138.666667 512 138.666667 885.333333 307.2 885.333333 512 716.8 885.333333 512 885.333333z" fill="#6eb7ff" p-id="3643"></path><path d="M701.866667 381.866667L448 637.866667 322.133333 512c-12.8-12.8-32-12.8-44.8 0-12.8 12.8-12.8 32 0 44.8l149.333334 149.333333c6.4 6.4 14.933333 8.533333 23.466666 8.533334s17.066667-2.133333 23.466667-8.533334l277.333333-277.333333c12.8-12.8 12.8-32 0-44.8-14.933333-12.8-36.266667-12.8-49.066666-2.133333z" fill="#6eb7ff" p-id="3644"></path></svg>-->
  296. </span>
  297. </div>
  298. </div>
  299. </div>
  300. <div class="tclist">
  301. <img src="http://gt60.demo.com/uploads/u1/files/20230403/298184647e743f3f50352391be77783a.jpg" class="tcimg" alt="">
  302. <div class="tcbody">
  303. <div class="tctitle">【早餐】西红柿鸡蛋</div>
  304. <div class="tcdesc">
  305. <span>¥2</span>
  306. <span class="tcbtn">
  307. <svg t="1680501834288" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3863" width="64" height="64"><path d="M512 74.666667C270.933333 74.666667 74.666667 270.933333 74.666667 512S270.933333 949.333333 512 949.333333 949.333333 753.066667 949.333333 512 753.066667 74.666667 512 74.666667z m0 810.666666c-204.8 0-373.333333-168.533333-373.333333-373.333333S307.2 138.666667 512 138.666667 885.333333 307.2 885.333333 512 716.8 885.333333 512 885.333333z" fill="#666666" p-id="3864"></path><path d="M682.666667 480h-138.666667V341.333333c0-17.066667-14.933333-32-32-32s-32 14.933333-32 32v138.666667H341.333333c-17.066667 0-32 14.933333-32 32s14.933333 32 32 32h138.666667V682.666667c0 17.066667 14.933333 32 32 32s32-14.933333 32-32v-138.666667H682.666667c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32z" fill="#666666" p-id="3865"></path></svg>
  308. <!-- <svg t="1680501789601" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3642" width="64" height="64"><path d="M512 74.666667C270.933333 74.666667 74.666667 270.933333 74.666667 512S270.933333 949.333333 512 949.333333 949.333333 753.066667 949.333333 512 753.066667 74.666667 512 74.666667z m0 810.666666c-204.8 0-373.333333-168.533333-373.333333-373.333333S307.2 138.666667 512 138.666667 885.333333 307.2 885.333333 512 716.8 885.333333 512 885.333333z" fill="#6eb7ff" p-id="3643"></path><path d="M701.866667 381.866667L448 637.866667 322.133333 512c-12.8-12.8-32-12.8-44.8 0-12.8 12.8-12.8 32 0 44.8l149.333334 149.333333c6.4 6.4 14.933333 8.533333 23.466666 8.533334s17.066667-2.133333 23.466667-8.533334l277.333333-277.333333c12.8-12.8 12.8-32 0-44.8-14.933333-12.8-36.266667-12.8-49.066666-2.133333z" fill="#6eb7ff" p-id="3644"></path></svg>-->
  309. </span>
  310. </div>
  311. </div>
  312. </div>
  313. </div>
  314. <div class="tcbox" style="display: none;">
  315. <div class="tcheader">套餐C</div>
  316. <div class="tclist">
  317. <img src="http://gt60.demo.com/uploads/u1/files/20230403/298184647e743f3f50352391be77783a.jpg" class="tcimg" alt="">
  318. <div class="tcbody">
  319. <div class="tctitle">【早餐】西红柿鸡蛋</div>
  320. <div class="tcdesc">
  321. <span>¥2</span>
  322. <span class="tcbtn">
  323. <svg t="1680501834288" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3863" width="64" height="64"><path d="M512 74.666667C270.933333 74.666667 74.666667 270.933333 74.666667 512S270.933333 949.333333 512 949.333333 949.333333 753.066667 949.333333 512 753.066667 74.666667 512 74.666667z m0 810.666666c-204.8 0-373.333333-168.533333-373.333333-373.333333S307.2 138.666667 512 138.666667 885.333333 307.2 885.333333 512 716.8 885.333333 512 885.333333z" fill="#666666" p-id="3864"></path><path d="M682.666667 480h-138.666667V341.333333c0-17.066667-14.933333-32-32-32s-32 14.933333-32 32v138.666667H341.333333c-17.066667 0-32 14.933333-32 32s14.933333 32 32 32h138.666667V682.666667c0 17.066667 14.933333 32 32 32s32-14.933333 32-32v-138.666667H682.666667c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32z" fill="#666666" p-id="3865"></path></svg>
  324. <!-- <svg t="1680501789601" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3642" width="64" height="64"><path d="M512 74.666667C270.933333 74.666667 74.666667 270.933333 74.666667 512S270.933333 949.333333 512 949.333333 949.333333 753.066667 949.333333 512 753.066667 74.666667 512 74.666667z m0 810.666666c-204.8 0-373.333333-168.533333-373.333333-373.333333S307.2 138.666667 512 138.666667 885.333333 307.2 885.333333 512 716.8 885.333333 512 885.333333z" fill="#6eb7ff" p-id="3643"></path><path d="M701.866667 381.866667L448 637.866667 322.133333 512c-12.8-12.8-32-12.8-44.8 0-12.8 12.8-12.8 32 0 44.8l149.333334 149.333333c6.4 6.4 14.933333 8.533333 23.466666 8.533334s17.066667-2.133333 23.466667-8.533334l277.333333-277.333333c12.8-12.8 12.8-32 0-44.8-14.933333-12.8-36.266667-12.8-49.066666-2.133333z" fill="#6eb7ff" p-id="3644"></path></svg>-->
  325. </span>
  326. </div>
  327. </div>
  328. </div>
  329. <div class="tclist">
  330. <img src="http://gt60.demo.com/uploads/u1/files/20230403/298184647e743f3f50352391be77783a.jpg" class="tcimg" alt="">
  331. <div class="tcbody">
  332. <div class="tctitle">【早餐】西红柿鸡蛋</div>
  333. <div class="tcdesc">
  334. <span>¥2</span>
  335. <span class="tcbtn">
  336. <svg t="1680501834288" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3863" width="64" height="64"><path d="M512 74.666667C270.933333 74.666667 74.666667 270.933333 74.666667 512S270.933333 949.333333 512 949.333333 949.333333 753.066667 949.333333 512 753.066667 74.666667 512 74.666667z m0 810.666666c-204.8 0-373.333333-168.533333-373.333333-373.333333S307.2 138.666667 512 138.666667 885.333333 307.2 885.333333 512 716.8 885.333333 512 885.333333z" fill="#666666" p-id="3864"></path><path d="M682.666667 480h-138.666667V341.333333c0-17.066667-14.933333-32-32-32s-32 14.933333-32 32v138.666667H341.333333c-17.066667 0-32 14.933333-32 32s14.933333 32 32 32h138.666667V682.666667c0 17.066667 14.933333 32 32 32s32-14.933333 32-32v-138.666667H682.666667c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32z" fill="#666666" p-id="3865"></path></svg>
  337. <!-- <svg t="1680501789601" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3642" width="64" height="64"><path d="M512 74.666667C270.933333 74.666667 74.666667 270.933333 74.666667 512S270.933333 949.333333 512 949.333333 949.333333 753.066667 949.333333 512 753.066667 74.666667 512 74.666667z m0 810.666666c-204.8 0-373.333333-168.533333-373.333333-373.333333S307.2 138.666667 512 138.666667 885.333333 307.2 885.333333 512 716.8 885.333333 512 885.333333z" fill="#6eb7ff" p-id="3643"></path><path d="M701.866667 381.866667L448 637.866667 322.133333 512c-12.8-12.8-32-12.8-44.8 0-12.8 12.8-12.8 32 0 44.8l149.333334 149.333333c6.4 6.4 14.933333 8.533333 23.466666 8.533334s17.066667-2.133333 23.466667-8.533334l277.333333-277.333333c12.8-12.8 12.8-32 0-44.8-14.933333-12.8-36.266667-12.8-49.066666-2.133333z" fill="#6eb7ff" p-id="3644"></path></svg>-->
  338. </span>
  339. </div>
  340. </div>
  341. </div>
  342. <div class="tclist">
  343. <img src="http://gt60.demo.com/uploads/u1/files/20230403/298184647e743f3f50352391be77783a.jpg" class="tcimg" alt="">
  344. <div class="tcbody">
  345. <div class="tctitle">【早餐】西红柿鸡蛋</div>
  346. <div class="tcdesc">
  347. <span>¥2</span>
  348. <span class="tcbtn">
  349. <svg t="1680501834288" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3863" width="64" height="64"><path d="M512 74.666667C270.933333 74.666667 74.666667 270.933333 74.666667 512S270.933333 949.333333 512 949.333333 949.333333 753.066667 949.333333 512 753.066667 74.666667 512 74.666667z m0 810.666666c-204.8 0-373.333333-168.533333-373.333333-373.333333S307.2 138.666667 512 138.666667 885.333333 307.2 885.333333 512 716.8 885.333333 512 885.333333z" fill="#666666" p-id="3864"></path><path d="M682.666667 480h-138.666667V341.333333c0-17.066667-14.933333-32-32-32s-32 14.933333-32 32v138.666667H341.333333c-17.066667 0-32 14.933333-32 32s14.933333 32 32 32h138.666667V682.666667c0 17.066667 14.933333 32 32 32s32-14.933333 32-32v-138.666667H682.666667c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32z" fill="#666666" p-id="3865"></path></svg>
  350. <!-- <svg t="1680501789601" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3642" width="64" height="64"><path d="M512 74.666667C270.933333 74.666667 74.666667 270.933333 74.666667 512S270.933333 949.333333 512 949.333333 949.333333 753.066667 949.333333 512 753.066667 74.666667 512 74.666667z m0 810.666666c-204.8 0-373.333333-168.533333-373.333333-373.333333S307.2 138.666667 512 138.666667 885.333333 307.2 885.333333 512 716.8 885.333333 512 885.333333z" fill="#6eb7ff" p-id="3643"></path><path d="M701.866667 381.866667L448 637.866667 322.133333 512c-12.8-12.8-32-12.8-44.8 0-12.8 12.8-12.8 32 0 44.8l149.333334 149.333333c6.4 6.4 14.933333 8.533333 23.466666 8.533334s17.066667-2.133333 23.466667-8.533334l277.333333-277.333333c12.8-12.8 12.8-32 0-44.8-14.933333-12.8-36.266667-12.8-49.066666-2.133333z" fill="#6eb7ff" p-id="3644"></path></svg>-->
  351. </span>
  352. </div>
  353. </div>
  354. </div>
  355. </div>
  356. </div>
  357. <div class="bottombox">
  358. <span>总金额:¥{{money}} </span>
  359. <!-- <span>实收:¥0</span>-->
  360. <div class="bottombox-btn" @click="settlement">去结算</div>
  361. </div>
  362. </div>
  363. </div>
  364. <script>
  365. var weeks = [];
  366. var groups = JSON.parse('{:json_encode($groups)}');
  367. var standard = {$standard};
  368. var standardmin = {$standardmin};
  369. var vm = new Vue({
  370. el: '#vueapp',
  371. data: {
  372. weekidx: 0,
  373. weeks: weeks,
  374. groups: groups,
  375. // curdays: weeks[0]['days'],
  376. curdays: [],
  377. day: '',
  378. curdaymoney: '',
  379. typeidx: 0,
  380. // curtypes: weeks[0]['days'][0]['types'],
  381. curtypes: [],
  382. curdinners: [], // 当前套餐的所有商品
  383. money: 0,
  384. groupid: 0,
  385. grouptitle: '',
  386. selectids: [], // 已选商品id
  387. selected: [], // 已选商品,信息 id,money
  388. standard: standard, // 餐标
  389. standardmin: standardmin, // 餐标
  390. curcombination: [], // 前套餐的所有组合
  391. selcombination: [], // 当前选择的组合
  392. },
  393. computed: {
  394. resoptions: function () {
  395. return JSON.parse(JSON.stringify(this.curdinners));
  396. }
  397. },
  398. watch: {
  399. selectids: function (newval, oldval) {
  400. // console.log(newval, oldval);
  401. this.formatMoney();
  402. this.formatDays();
  403. },
  404. resoptions: function (newval, oldval) {
  405. // console.log(newval, oldval);
  406. this.formatMoney();
  407. this.formatDays();
  408. }
  409. },
  410. created: function () {
  411. },
  412. methods: {
  413. changeDay(idx) {
  414. this.typeidx = idx;
  415. this.day = this.curdays[idx]['day'];
  416. this.curdaymoney = this.curdays[idx]['money'];
  417. this.curtypes = JSON.parse(JSON.stringify(this.curdays[idx]['types']));
  418. this.formatTypes();
  419. // console.log('this.curtypes',this.curtypes,this.curdays[idx]);
  420. },
  421. changeGroup(obj){
  422. this.groupid = obj.id;
  423. this.grouptitle = obj.title;
  424. this.curdays = JSON.parse(JSON.stringify(obj.days));
  425. this.typeidx = 0;
  426. this.day = obj.days[0]['day'];
  427. this.curdaymoney = obj.days[0]['money'];
  428. this.curtypes = JSON.parse(JSON.stringify(obj.days[0]['types']));
  429. this.curdinners = JSON.parse(JSON.stringify(obj.dinners));
  430. this.curcombination = JSON.parse(JSON.stringify(obj.combination));
  431. // console.log('curdays',this.curdays);
  432. try{
  433. let ids = [];
  434. this.curdays.forEach((item) => {
  435. item.types.forEach((item2) => {
  436. item2.dinners.forEach((item3) => {
  437. ids.push(Number(item3.id));
  438. })
  439. })
  440. });
  441. let seldinners = JSON.parse(localStorage.getItem('seldinners'));
  442. if(seldinners.length > 0){
  443. this.curdinners.forEach((item) => {
  444. seldinners.forEach((item2) => {
  445. if(ids.includes(Number(item2.id)) && item.id == item2.id){
  446. item.nums = item2.nums;
  447. }
  448. })
  449. })
  450. this.formatTypes();
  451. }
  452. }catch (e) {
  453. }
  454. // console.log('curdinners',this.curtypes,this.curcombination);
  455. },
  456. rechangeGroup(){
  457. this.groupid = 0;
  458. this.grouptitle = '';
  459. this.curdays = [];
  460. this.typeidx = 0;
  461. this.curtypes = [];
  462. this.money = 0;
  463. this.selectids = [];
  464. this.selected = [];
  465. },
  466. changeDinner(obj,type){
  467. // console.log('obj',obj);
  468. //TODO:: 一个餐次只能选择一种套餐,添加限制,流食写成商品属性,套餐内添加流食,套餐不再分类型,订单替换时成流食时只能替换套餐内的流食商品
  469. if(type == 0){ //选择
  470. if(obj.max > 0 && obj.max <= obj.nums){
  471. obj.nums = Number(obj.nums);
  472. }else{
  473. obj.nums = Number(obj.nums) + 1;
  474. }
  475. this.curdinners.forEach((item) => {
  476. if(item.id == obj.id){
  477. item.nums = obj.nums;
  478. }
  479. });
  480. // 检查同一餐是否存在流食
  481. if(obj.type == 1){ // 选择流食,去掉同餐次的普通餐
  482. this.curdinners.forEach((item) => {
  483. if(item.day == obj.day && item.dinner_type_id == obj.dinner_type_id && item.group_id == obj.group_id && item.type == 0){
  484. item.nums = 0;
  485. }
  486. });
  487. }else{ // 选择普通餐,去掉同餐次的流食
  488. this.curdinners.forEach((item) => {
  489. if(item.day == obj.day && item.dinner_type_id == obj.dinner_type_id && item.group_id == obj.group_id && item.type == 1){
  490. item.nums = 0;
  491. }
  492. });
  493. }
  494. // 检查互斥套餐
  495. if(obj.combination2.length > 0){
  496. // console.log('dddddddddd',obj.combination2);
  497. this.curdinners.forEach((item) => {
  498. if(item.day == obj.day && item.dinner_type_id == obj.dinner_type_id && item.group_id == obj.group_id && obj.combination2.includes(item.id.toString())){
  499. item.nums = 0;
  500. }
  501. });
  502. }
  503. if(obj.cid > 0){ // 是套餐
  504. let flag = false;
  505. let delcid = 0;
  506. this.selcombination.forEach((item) => {
  507. if(item.group_id == obj.group_id && item.day == obj.day && item.dinner_type_id == obj.dinner_type_id){
  508. if(item.id != obj.cid){
  509. delcid = item.id;
  510. item.id = obj.cid;
  511. }
  512. flag = true;
  513. }
  514. });
  515. if(!flag){
  516. this.selcombination.push({
  517. group_id: obj.group_id,
  518. day: obj.day,
  519. dinner_type_id: obj.dinner_type_id,
  520. id: obj.cid
  521. })
  522. }
  523. if(delcid > 0){
  524. let ids = [];
  525. // console.log('sssddddffff',this.curdinners);
  526. this.curcombination.forEach((item) => {
  527. if(delcid == item.id){
  528. ids = item.items
  529. }
  530. });
  531. this.curdinners.forEach((item) => {
  532. if(ids.includes(item.id.toString())){
  533. item.nums = 0;
  534. }
  535. });
  536. // console.log('sssdddd',ids,this.curdinners);
  537. }
  538. }
  539. }else{ // 取消
  540. if(obj.nums <= 0){
  541. obj.nums = 0;
  542. }else{
  543. obj.nums = Number(obj.nums) - 1;
  544. }
  545. this.curdinners.forEach((item) => {
  546. if(item.id == obj.id){
  547. item.nums = obj.nums;
  548. }
  549. });
  550. if(obj.nums == 0 && obj.cid > 0){
  551. let tt = false;
  552. this.curdinners.forEach((item) => {
  553. if(obj.cid == item.cid && item.nums > 0){
  554. tt = true;
  555. }
  556. });
  557. if(!tt){
  558. this.selcombination = this.selcombination.filter((item) => {
  559. return item.id != obj.cid;
  560. });
  561. }
  562. }
  563. }
  564. this.formatTypes();
  565. // console.log('sss',this.selcombination);
  566. },
  567. formatTypes(){
  568. this.curtypes.forEach((item) => {
  569. item.dinners.forEach((item2) => {
  570. this.curdinners.forEach((item3) => {
  571. if(item3.id == item2.id){
  572. item2.nums = item3.nums;
  573. }
  574. });
  575. });
  576. });
  577. if(Number(this.groupid) > 0){
  578. let seldinners = [];
  579. this.curdinners.forEach((item3) => {
  580. if(Number(item3.nums) > 0){
  581. seldinners.push({
  582. id: item3.id,
  583. nums: item3.nums
  584. });
  585. }
  586. });
  587. localStorage.setItem('seldinners',JSON.stringify(seldinners));
  588. }
  589. },
  590. selectDinner(obj,type){
  591. //TODO:: 一个餐次只能选择一种套餐,添加限制,流食写成商品属性,套餐内添加流食,套餐不再分类型,订单替换时成流食时只能替换套餐内的流食商品
  592. if(type == 0){ //选择
  593. if(!this.selectids.includes(obj.id)){
  594. this.selectids.push(obj.id);
  595. this.selected.push(obj);
  596. let ids = [];
  597. if(obj.type == 1){ // 选择流食,去掉同餐次的普通餐
  598. this.selected.forEach((item) => {
  599. if(item.day == obj.day && item.dinner_type_id == obj.dinner_type_id && item.group_id == obj.group_id && item.type == 0){
  600. ids.push(item.id);
  601. }
  602. });
  603. }else{ // 选择普通餐,去掉同餐次的流食
  604. this.selected.forEach((item) => {
  605. if(item.day == obj.day && item.dinner_type_id == obj.dinner_type_id && item.group_id == obj.group_id && item.type == 1){
  606. ids.push(item.id);
  607. }
  608. });
  609. }
  610. if(ids.length > 0){
  611. this.selectids = this.selectids.filter((item) => {
  612. return !ids.includes(item);
  613. })
  614. this.selected = this.selected.filter((item) => {
  615. return !ids.includes(item.id);
  616. })
  617. }
  618. }
  619. }else{ // 取消
  620. if(this.selectids.includes(obj.id)){
  621. this.selectids = this.selectids.filter((item) => {
  622. return item != obj.id;
  623. });
  624. this.selected = this.selected.filter((item) => {
  625. return item.id != obj.id;
  626. });
  627. }
  628. }
  629. // console.log('sss',this.selected);
  630. },
  631. settlement(){
  632. let flag = false;
  633. let error = false;
  634. let curdays = JSON.parse(JSON.stringify(this.curdays));
  635. try{
  636. curdays.forEach((item) => {
  637. // console.log('sdddsd',item);
  638. if(Number(item.money) > 0 && Number(item.money) > Number(this.standard)){
  639. // $.toptips(item.text+"已超过餐标标准",'warning');
  640. error = true;
  641. throw new Error(item.text+"已超过餐标标准");
  642. }
  643. if(Number(item.money) > 0 && Number(item.money) < Number(this.standardmin)){
  644. // $.toptips(item.text+"未达到餐标最底标准"+this.standardmin,'warning');
  645. error = true;
  646. // return false;
  647. throw new Error(item.text+"未达到餐标最底标准");
  648. }
  649. item.types.forEach((item2) => {
  650. let info = item2;
  651. let dinners = [];
  652. let cates = 0; // 种类数
  653. // 选择商品,检查今天的套餐是否有选择
  654. let comids = [];
  655. this.curcombination.forEach((citem) => {
  656. if(citem.group_id == this.groupid &&citem.day == item.day && citem.dinner_type_id ==item2.id){
  657. comids.push(citem.id);
  658. }
  659. });
  660. if(comids.length > 0 && item.money > 0){ // 有组合,且有选择商品
  661. let tt = false;
  662. this.selcombination.forEach((scitem) => {
  663. if(comids.includes(scitem.id)){
  664. tt = true;
  665. }
  666. });
  667. // console.log('sdddddd',comids,this.selcombination);
  668. if(!tt){
  669. // $.toptips("未选择"+item.text+item2.name+"套餐",'warning');
  670. error = true;
  671. // return false;
  672. throw new Error("未选择"+item.text+item2.name+"套餐必选菜品");
  673. }
  674. }
  675. this.curdinners.forEach((item3) => {
  676. if(item3.group_id == this.groupid &&item3.day == item.day && item3.dinner_type_id ==item2.id){
  677. if(item3.nums <= 0 && item3.required == 1){
  678. // $.toptips(item.text+item2.group_title+item2.name+item3.name+"必选",'warning');
  679. error = true;
  680. // return false;
  681. throw new Error(item.text+item2.group_title+item2.name+item3.name+"必选");
  682. }
  683. if(item3.nums > 0){
  684. dinners.push(JSON.parse(JSON.stringify(item3)));
  685. cates = cates + 1;
  686. }
  687. }
  688. });
  689. if(dinners.length > 0){
  690. flag = true;
  691. }
  692. info.dinners = dinners;
  693. if(item2.limit > 0 && cates > item2.limit){
  694. $.toptips(item.text+item2.group_title+item2.name+"最多选"+item2.limit+"种",'warning');
  695. error = true;
  696. // return false;
  697. throw new Error(item.text+item2.group_title+item2.name+"最多选"+item2.limit+"种");
  698. }
  699. });
  700. });
  701. }catch (e) {
  702. $.toptips(e.message,'warning');
  703. return false;
  704. }
  705. if(error){
  706. return false;
  707. }
  708. // console.log('flag',this.flag,curdays);
  709. if(!flag){
  710. $.toptips("未选择菜品",'warning');
  711. return false;
  712. }
  713. localStorage.setItem('userdinners',JSON.stringify(curdays));
  714. // console.log('settlement',this.curdays);
  715. window.location.href = "{:url('submitorder2')}";
  716. },
  717. formatMoney(){
  718. let money = 0;
  719. this.curdinners.forEach((item) => {
  720. if(item.nums > 0){
  721. money = Number(money) + Number(item.money) * item.nums;
  722. }
  723. });
  724. this.money = money.toFixed(2);
  725. },
  726. formatDays(){
  727. this.curdaymoney = 0;
  728. this.curdays.forEach((item) => {
  729. let count = 0;
  730. let money = 0;
  731. this.curdinners.forEach((item2) => {
  732. if(item.day == item2.day && item2.nums > 0){
  733. count += item2.nums;
  734. money += Number(item2.money)*item2.nums;
  735. if(this.day === item2.day){
  736. this.curdaymoney += Number(item2.money)*item2.nums;
  737. }
  738. }
  739. if(item2.cid > 0 && item.day == item2.day && item2.nums > 0){
  740. let flag = false;
  741. let delcid = 0;
  742. this.selcombination.forEach((item3) => {
  743. if(item3.group_id == item2.group_id && item3.day == item2.day && item3.dinner_type_id == item2.dinner_type_id){
  744. if(item3.id != item2.cid){
  745. delcid = item3.id;
  746. item3.id = item2.cid;
  747. }
  748. flag = true;
  749. }
  750. });
  751. if(!flag){
  752. this.selcombination.push({
  753. group_id: item2.group_id,
  754. day: item2.day,
  755. dinner_type_id: item2.dinner_type_id,
  756. id: item2.cid
  757. })
  758. }
  759. // console.log('this.selcombination', this.selcombination);
  760. }
  761. });
  762. item.count = count;
  763. item.money = money.toFixed(2);
  764. });
  765. this.curdaymoney = this.curdaymoney.toFixed(2);
  766. // console.log('cdays',this.curdays);
  767. }
  768. },
  769. });
  770. </script>