yyedit.vue 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. <template>
  2. <view class="container">
  3. <view class="addList">
  4. <view class="addItem flex-y-center">
  5. <view class="addItemL">预约类型:</view>
  6. <view class="flex-y-center">
  7. <radio-group class="radio-group" @change="radioChange">
  8. <label class="radio" v-for="(item,index) in typeLists"
  9. style="margin-right: 20rpx;font-size: 28rpx;color: #999999;">
  10. <radio :value="item.name" :checked="item.checked" />{{item.value}}
  11. </label>
  12. </radio-group>
  13. </view>
  14. </view>
  15. </view>
  16. <view class="addList" style="margin:10rpx 0;">
  17. <view class="addItem flex-y-center">
  18. <view class="addItemL">支付金额:</view>
  19. <input type="digit" class="addItemR" :value="prise" @input="userInpues" placeholder="请输入支付金额" />
  20. </view>
  21. </view>
  22. <block v-for="(item,index) in tableList" :key="index">
  23. <view class="">
  24. <view class="addListTitale">{{item.name}}</view>
  25. <view class="addList">
  26. <view class="addItem flex-y-center">
  27. <view class="addItemL">位置类型:</view>
  28. <input type="text" class="addItemR" :value="item.name" placeholder="请输入餐桌类型" disabled="true" />
  29. </view>
  30. <view class="addItem flex-y-center">
  31. <view class="addItemL">就餐人数:</view>
  32. <input type="text" class="addItemR" :value="item.num" placeholder="请输入就餐人数" disabled="true" />
  33. </view>
  34. <view class="addItem flex-y-center">
  35. <view class="addItemL">每小时可预约次数:</view>
  36. <input type="number" class="addItemR" :value="item.time_num" @input="inputType($event,index)"
  37. placeholder="请输入每小时可预约次数" />
  38. </view>
  39. </view>
  40. </view>
  41. </block>
  42. <view class="" style="height: 100rpx;"></view>
  43. <view class="footer-bar">
  44. <view class="content flex flex-center">
  45. <view class="btn" @click="nowSaves">立即保存</view>
  46. </view>
  47. </view>
  48. </view>
  49. </template>
  50. <script>
  51. export default {
  52. data() {
  53. return {
  54. type: 1, //1是餐桌2是商品
  55. prise: '', //支付金额
  56. store_id: '',
  57. id: "",
  58. info: {},
  59. tableList: [],
  60. typeLists: [{
  61. name: '1',
  62. value: '位置',
  63. checked: 'true'
  64. }
  65. // {
  66. // name: '2',
  67. // value: '商品'
  68. // }
  69. ]
  70. }
  71. },
  72. onLoad(options) {
  73. if (options.titaleType == 1) {
  74. uni.setNavigationBarTitle({
  75. title: '添加预约'
  76. })
  77. }
  78. this.store_id = uni.getStorageSync("store_id");
  79. this.id = options.id;
  80. this.getData()
  81. },
  82. methods: {
  83. //单选
  84. radioChange(e) {
  85. let chooseType = e.detail.value;
  86. this.type = chooseType;
  87. },
  88. //立即保存
  89. nowSaves() {
  90. const that = this;
  91. let type = this.type;
  92. let prise = this.prise;
  93. let typeList = this.tableList;
  94. let id = this.id;
  95. if (!prise) {
  96. uni.showToast({
  97. title: '请输入支付金额',
  98. icon: 'none',
  99. duration: 2000
  100. });
  101. return false
  102. } else {
  103. // 判断是否有id 有的话就是需改没有即为新增
  104. if (id) {
  105. this.request({
  106. url: "Smdcshop/edit_yy",
  107. data: {
  108. store_id: this.store_id,
  109. type,
  110. content: JSON.stringify(typeList),
  111. money: prise,
  112. id: this.id
  113. }
  114. }).then(res => {
  115. if (res.code == 200) {
  116. uni.showModal({
  117. title: '提示',
  118. content: '操作成功!',
  119. showCancel: false,
  120. success: (res) => {
  121. if (res.confirm) {
  122. let pages = getCurrentPages();
  123. let prevPage = pages[pages.length - 2];
  124. // #ifdef H5
  125. prevPage.getData(1)
  126. // #endif
  127. // #ifndef H5
  128. prevPage.$vm.getData(1)
  129. // #endif
  130. uni.navigateBack({})
  131. } else if (res.cancel) {
  132. console.log('用户点击取消');
  133. }
  134. }
  135. });
  136. }
  137. }).catch(err => {
  138. console.log('err:', err)
  139. })
  140. } else {
  141. this.request({
  142. url: "Smdcshop/add_yy",
  143. data: {
  144. store_id: this.store_id,
  145. type,
  146. content: JSON.stringify(typeList),
  147. money: prise
  148. }
  149. }).then(res => {
  150. if (res.code == 200) {
  151. uni.showModal({
  152. title: '提示',
  153. content: '操作成功!',
  154. showCancel: false,
  155. success: (res) => {
  156. if (res.confirm) {
  157. let pages = getCurrentPages();
  158. let prevPage = pages[pages.length - 2];
  159. //
  160. // #ifdef H5
  161. prevPage.getData(1)
  162. // #endif
  163. // #ifndef H5
  164. prevPage.$vm.getData(1)
  165. // #endif
  166. uni.navigateBack({})
  167. } else if (res.cancel) {
  168. console.log('用户点击取消');
  169. }
  170. }
  171. });
  172. }
  173. }).catch(err => {
  174. console.log('err:', err)
  175. })
  176. }
  177. }
  178. },
  179. //用户输入金额
  180. userInpues(e) {
  181. this.prise = e.detail.value;
  182. },
  183. //用户输入类型
  184. inputType(e, index) {
  185. this.tableList[index].time_num = e.detail.value
  186. },
  187. getData() {
  188. if (this.id) {
  189. this.request({
  190. url: "Smdcshop/edityytablelist",
  191. data: {
  192. store_id: this.store_id,
  193. id: this.id
  194. }
  195. }).then(res => {
  196. if (res.code == 200) {
  197. let newArrays = [];
  198. let oldList = res.data.info.content;
  199. let lists = res.data.list;
  200. if (lists.length > 0) {
  201. for (let i = 0; i < lists.length; i++) {
  202. lists[i].time_num = 0;
  203. }
  204. oldList.push(...lists)
  205. this.info = res.data.info;
  206. this.tableList = oldList;
  207. this.prise = res.data.info.money
  208. } else {
  209. this.info = res.data.info;
  210. this.tableList = res.data.info.content;
  211. this.prise = res.data.info.money
  212. }
  213. // this.info = res.data.info;
  214. // this.tableList = res.data.info.content;
  215. // this.prise = res.data.info.money
  216. }
  217. }).catch(err => {
  218. console.log('err:', err)
  219. })
  220. } else {
  221. this.request({
  222. url: "Smdcshop/yytablelist",
  223. data: {
  224. store_id: this.store_id
  225. }
  226. }).then(res => {
  227. if (res.code == 200) {
  228. let lists = res.data;
  229. for (let i = 0; i < lists.length; i++) {
  230. lists[i].time_num = 0
  231. }
  232. this.tableList = lists;
  233. }
  234. }).catch(err => {
  235. console.log('err:', err)
  236. })
  237. }
  238. },
  239. toEdit() {
  240. uni.redirectTo({
  241. url: `./yyedit?id=${this.info.id}`
  242. })
  243. },
  244. }
  245. }
  246. </script>
  247. <style>
  248. @import url("../static/css/common.css");
  249. page {
  250. background: #F4F5F7;
  251. }
  252. .addListTitale {
  253. padding: 0 25rpx;
  254. height: 80rpx;
  255. font-size: 28rpx;
  256. line-height: 80rpx;
  257. color: #999;
  258. }
  259. .addList {
  260. padding: 0 25rpx;
  261. background: #ffffff;
  262. border: 1rpx solid rgba(0, 0, 0, 0.10);
  263. box-shadow: 0px 8rpx 16rpx 0px rgba(204, 215, 230, 0.08);
  264. }
  265. .addItem {
  266. height: 100rpx;
  267. border-bottom: 2rpx solid #f4f5f6;
  268. }
  269. .addItemL {
  270. font-size: 30rpx;
  271. font-family: PingFang SC, PingFang SC-Medium;
  272. font-weight: 500;
  273. text-align: left;
  274. color: #333333;
  275. }
  276. .addItemR {
  277. display: flex;
  278. align-items: center;
  279. flex: 1;
  280. height: 100rpx;
  281. font-size: 28rpx;
  282. font-family: PingFang SC, PingFang SC-Regular;
  283. font-weight: 400;
  284. text-align: left;
  285. color: #999999;
  286. padding: 0 30rpx;
  287. }
  288. </style>