menuput.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. <template>
  2. <view :style="'padding-top:'+nvaHeight+'px;'">
  3. <view class="navbox">
  4. <uni-nav-bar color="#ffffff" left-icon="left" title="修改食谱" :background-color="backgroundColor"
  5. :border="false" statusBar='true' fixed="true" @clickLeft='getBack'>
  6. </uni-nav-bar>
  7. </view>
  8. <image :src="navbg" class="navbg"></image>
  9. <view class="zxmain">
  10. <uni-forms ref="form" class="ytforms" :modelValue="datainfo">
  11. <view class="ytbox" style="padding-bottom: 16rpx;" >
  12. <view class="yttit flexcj">
  13. {{datainfo.menuFoodTime}}
  14. </view>
  15. <!-- <view class="cooktit">
  16. <view class="label">早餐:</view>
  17. <textarea auto-height="true" v-model="datainfo.menuFoodDetailBk" class="textarea" maxlength='-1' placeholder="请输入或粘贴午餐菜品,用“,”隔开…"></textarea>
  18. </view> -->
  19. <view class="cooktit">
  20. <view class="label">午餐:</view>
  21. <textarea auto-height="true" v-model="datainfo.menuFoodDetailLu" class="textarea" maxlength='-1' placeholder="请输入或粘贴午餐菜品,用“,”隔开…"></textarea>
  22. </view>
  23. <view class="ckpho">
  24. <view class="ckadd" @click="getphotoFn('lu')">
  25. <image :src="addimg" ></image>
  26. <view class="cktit">添加午餐照片</view>
  27. </view>
  28. <block v-if="datainfo.menuFoodDetailLuPhoto&&datainfo.menuFoodDetailLuPhoto.length">
  29. <view class="flexcw mb12">
  30. <view class="ckimgs" v-for="(itep,idxp) in datainfo.menuFoodDetailLuPhoto" :key="idxp">
  31. <image :src="cdelimg" class="cdelimg" @click="getDel(idxp,'lu')"></image>
  32. <image :src="baseUrl+itep" @click="getPreview(idxp,datainfo.menuFoodDetailLuPhoto)" class="ckimg"></image>
  33. </view>
  34. </view>
  35. </block>
  36. </view>
  37. <view class="cooktit">
  38. <view class="label">晚餐:</view>
  39. <textarea auto-height="true" v-model="datainfo.menuFoodDetailDi" class="textarea" maxlength='-1' placeholder="请输入或粘贴晚餐菜品,用“,”隔开…"></textarea>
  40. </view>
  41. <view class="ckpho">
  42. <view class="ckadd" @click="getphotoFn('di')">
  43. <image :src="addimg" ></image>
  44. <view class="cktit">添加晚餐照片</view>
  45. </view>
  46. <block v-if="datainfo.menuFoodDetailDiPhoto&&datainfo.menuFoodDetailDiPhoto.length">
  47. <view class="flexcw mb12">
  48. <view class="ckimgs" v-for="(itep,idxp) in datainfo.menuFoodDetailDiPhoto" :key="idxp">
  49. <image :src="cdelimg" class="cdelimg" @click="getDel(idxp,'di')"></image>
  50. <image :src="baseUrl+itep" @click="getPreview(idxp,datainfo.menuFoodDetailDiPhoto)" class="ckimg"></image>
  51. </view>
  52. </view>
  53. </block>
  54. </view>
  55. <view class="cooktita flexc mb10">
  56. <view class="label" style="flex: 1;">是否启用:</view>
  57. <switch :checked="datainfo.isUse=='Y'" @change="getChange"/>
  58. <!-- <uni-data-checkbox :selectedColor="color" :selectedTextColor="color" v-model="datainfo.isUse" :localdata="users" /> -->
  59. </view>
  60. </view>
  61. </uni-forms>
  62. <view class="btns">
  63. <view class="btn btnb" v-if="checkPermi(['system:menuFood:edit'])" @click="getSubmit">确认提交</view>
  64. </view>
  65. </view>
  66. </view>
  67. </template>
  68. <script>
  69. import {checkPermi,checkRole} from "@/utils/permission"; // 权限判断函数
  70. import {getMenuAdd,getMenuDetail,getMenuPut} from "@/api/mine/order.js"
  71. import {getDictionaryFn} from "@/api/mine/register.js"
  72. import {uploadmore} from '@/utils/common.js';
  73. import config from '@/config.js';
  74. const baseUrl = config.baseUrl;
  75. export default {
  76. components: {},
  77. data() {
  78. return {
  79. navbg:require("@/static/images/navbg.png"),
  80. upimg:require("@/work/static/yuy/up.png"),
  81. delimg:require("@/work/static/yuy/delw.png"),
  82. cdelimg:require("@/work/static/yuy/cdel.png"),
  83. addimg:require("@/work/static/yuy/add.png"),
  84. backgroundColor: "transparent",
  85. datainfo:{},
  86. nvaHeight: 44,
  87. marTop: 0, //距离顶部的距离
  88. stubarHeight: 0, //
  89. userId:this.$store.state.user.userId,
  90. patype:'edit',
  91. id:'',
  92. baseUrl:'',
  93. color:'#0391FD',
  94. users: [{
  95. text: '启用',
  96. value: "Y"
  97. }, {
  98. text: '禁用',
  99. value: "N"
  100. }],
  101. }
  102. },
  103. onPageScroll(e) {
  104. var scrollTop = Number(e.scrollTop);
  105. if (scrollTop > 0) {
  106. this.backgroundColor = '#0491FD'
  107. } else {
  108. this.backgroundColor = 'transparent'
  109. }
  110. },
  111. onUnload() {
  112. },
  113. created() {
  114. this.baseUrl=baseUrl;
  115. },
  116. onLoad: function(e) {
  117. if(e.data){
  118. var data=JSON.parse(decodeURIComponent(e.data))
  119. this.patype=data.type;
  120. this.id=data.id;
  121. this.getMenuDetail()
  122. }
  123. uni.getSystemInfo({
  124. success: (e) => {
  125. this.stubarHeight = Number(e.statusBarHeight);
  126. this.nvaHeight = Number(e.statusBarHeight) + 44;
  127. }
  128. })
  129. },
  130. onShow() {},
  131. mounted() {
  132. },
  133. methods: {
  134. checkPermi,
  135. checkRole,
  136. getMenuDetail(){
  137. getMenuDetail(this.id).then(res=>{
  138. if(res.code==200){
  139. var data=JSON.parse(JSON.stringify(res.data));
  140. var BkPhoto=res.data.menuFoodDetailBkPhoto;
  141. var LuPhoto=res.data.menuFoodDetailLuPhoto;
  142. var DiPhoto=res.data.menuFoodDetailDiPhoto;
  143. data.menuFoodDetailBkPhoto=BkPhoto ? BkPhoto.split(','):[];
  144. data.menuFoodDetailLuPhoto=LuPhoto ? LuPhoto.split(','):[];
  145. data.menuFoodDetailDiPhoto=DiPhoto ? DiPhoto.split(','):[];
  146. this.datainfo=JSON.parse(JSON.stringify(data))
  147. }
  148. })
  149. },
  150. getPreview(idx,arr) {
  151. var newArr=[];
  152. arr.forEach(ite=>{
  153. var ds=this.baseUrl+ite
  154. newArr.push(ds)
  155. })
  156. uni.previewImage({
  157. urls: newArr,
  158. current:idx,
  159. success: function(data) {
  160. },
  161. fail: function(err) {
  162. }
  163. });
  164. },
  165. getDel(idxp,type){
  166. var obj=JSON.parse(JSON.stringify(this.datainfo));
  167. var that=this;
  168. uni.showModal({
  169. title: '确认删除',
  170. content: "是否确认删除",
  171. cancelText: '取消',
  172. confirmText: '确认',
  173. success: function(res) {
  174. if (res.confirm) {
  175. if(type=='bk'){
  176. obj.menuFoodDetailBkPhoto.splice(idxp,1)
  177. }else if(type=='lu'){
  178. obj.menuFoodDetailLuPhoto.splice(idxp,1)
  179. }else if(type=='di'){
  180. obj.menuFoodDetailDiPhoto.splice(idxp,1)
  181. }
  182. that.datainfo=JSON.parse(JSON.stringify(obj))
  183. } else if (res.cancel) {
  184. }
  185. }
  186. });
  187. },
  188. getphotoFn(type) {
  189. var that = this;
  190. uni.chooseImage({
  191. // count: 1, //默认9
  192. // sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
  193. // sourceType: ['camera'], //从相册选择
  194. success: function(res) {
  195. let img= res.tempFilePaths;
  196. let imglen = res.tempFilePaths.length;
  197. var fuwufile = [];
  198. uploadmore('/common/upload',img,0,0,0,imglen,fuwufile,function(rs){
  199. var obj=JSON.parse(JSON.stringify(that.datainfo));
  200. if(type=='bk'){
  201. obj.menuFoodDetailBkPhoto=obj.menuFoodDetailBkPhoto.concat(rs);
  202. }else if(type=='lu'){
  203. obj.menuFoodDetailLuPhoto=obj.menuFoodDetailLuPhoto.concat(rs);
  204. }else if(type=='di'){
  205. obj.menuFoodDetailDiPhoto=obj.menuFoodDetailDiPhoto.concat(rs);
  206. }
  207. that.datainfo=JSON.parse(JSON.stringify(obj))
  208. })
  209. }
  210. });
  211. },
  212. getChange(e){
  213. var val=e.detail.value;
  214. if(val==false){
  215. this.datainfo.isUse='N'
  216. }else{
  217. this.datainfo.isUse='Y'
  218. }
  219. },
  220. getBack() {
  221. uni.navigateBack({
  222. delta: 1
  223. })
  224. },
  225. getSubmit(){
  226. var that=this;
  227. var params=JSON.parse(JSON.stringify(this.datainfo));
  228. var BkPhoto=params.menuFoodDetailBkPhoto;
  229. var LuPhoto=params.menuFoodDetailLuPhoto;
  230. var DiPhoto=params.menuFoodDetailDiPhoto;
  231. params.menuFoodDetailBkPhoto=BkPhoto&&BkPhoto.length?BkPhoto.join(','):'';
  232. params.menuFoodDetailLuPhoto=LuPhoto&&LuPhoto.length?LuPhoto.join(','):'';
  233. params.menuFoodDetailDiPhoto=DiPhoto&&DiPhoto.length?DiPhoto.join(','):'';
  234. getMenuPut(params).then(res=>{
  235. if(res.code==200){
  236. that.$toast("修改成功")
  237. setTimeout(function(){
  238. uni.$emit('refreshmenulist')
  239. uni.navigateBack({
  240. delta:1
  241. })
  242. },1200)
  243. }
  244. })
  245. },
  246. },
  247. }
  248. </script>
  249. <style>
  250. /* page {
  251. background: #ffffff;
  252. } */
  253. </style>
  254. <style lang="scss" scoped>
  255. .zxmain /deep/ .uni-switch-input.uni-switch-input-checked{background-color: #0391FD !important;}
  256. .zxmain /deep/ uni-switch::before{display: none;}
  257. .zxmain /deep/ .uni-forms .uni-forms-item{padding: 8rpx 26rpx 8rpx;border: 2rpx solid #0391FD;margin-bottom: 24rpx;border-radius: 12rpx;}
  258. .zxmain /deep/ .uni-forms-item__label{flex: 0 0 auto;width: 144rpx !important;font-size: 28rpx;font-weight: bold;position: relative;color: #161616;text-align-last: justify;}
  259. .zxmain /deep/ .uni-forms-item__label text{flex: 1;}
  260. .zxmain /deep/ .uni-forms-item__label .is-required{position: absolute;right: 0;color: #F10C31;margin-top: 16rpx;}
  261. // .zxmain /deep/ uni-textarea{flex: 1;width: auto;text-align: right;}
  262. .zxmain /deep/ .uni-textarea-placeholder{font-size: 28rpx;color: #DDDDDD !important;}
  263. .zxmain /deep/ .uni-easyinput__placeholder-class{font-size: 28rpx;color: #DDDDDD;}
  264. .zxmain /deep/ .uni-forms-item__content{display: flex;align-items: center;flex-direction: row;}
  265. .zxmain /deep/ .uni-easyinput{flex: 1;text-align: right;}
  266. .zxmain /deep/ .uni-easyinput__content-input{font-size: 28rpx;}
  267. .zxmain /deep/ .uni-forms-item__error{margin-top:20rpx;left: auto;right: 0;}
  268. .navbox{position: fixed;left: 0;right: 0;top: 0;z-index: 4; }
  269. .navbg{width: 100%;height: 692rpx;position: absolute;left: 0;right: 0;top: 0;z-index: -1;}
  270. .zxmain{position: relative;padding: 36rpx 32rpx 28rpx;box-sizing: border-box;}
  271. .ytforms{
  272. .yttit{font-size: 28rpx;font-weight: bold;margin-bottom: 32rpx;line-height: 40rpx;
  273. color: #161616;display: flex;align-items: center;padding: 0rpx 26rpx;box-sizing: border-box;position: relative;
  274. &::before{content: '';width: 6rpx;height: 34rpx;background: $com-cd3;border-radius: 4rpx;position: absolute;top: 50%;transform: translateY(-50%);left: 0rpx;}
  275. }
  276. .ytbox{background-color: #ffffff;padding: 36rpx 28rpx 12rpx;border-radius: 14rpx;box-sizing: border-box;margin-bottom: 18rpx;
  277. .cooktit{min-height: 152rpx;background: #FFFFFF;border-radius: 6rpx;border: 2rpx solid #0391FD;padding: 24rpx 26rpx;display: flex;margin-bottom: 24rpx;
  278. .textarea{font-size: 28rpx;}
  279. }
  280. .label{font-size: 28rpx;font-weight: bold;color: #161616;flex: 0 0 auto;}
  281. }
  282. }
  283. .btns{
  284. padding: 42rpx 28rpx 0;
  285. .btn{width: 100%;height: 90rpx;border-radius: 14rpx;font-weight: 500;font-size: 28rpx;margin-bottom: 34rpx;display: flex;align-items: center;justify-content: center;box-sizing: border-box;
  286. .addimg{width: 14rpx;height: 14rpx;flex: 0 0 auto;margin-right: 14rpx;}
  287. &.btna{background: #DFF1FF;border:2rpx solid #0391FD;color: #0391FD;}
  288. &.btnb{background: #0391FD;color: #ffffff;}
  289. }
  290. }
  291. .ckpho{
  292. .ckadd{display: flex;align-items: center;width: 100%;height: 78rpx;background: #EBF6FF;justify-content: center;margin-bottom: 26rpx;
  293. border-radius: 3px;
  294. image{width: 18rpx;height: 18rpx;margin-right: 14rpx;}
  295. .cktit{font-weight: 500;font-size: 26rpx;color: #0391FD;}
  296. }
  297. .ckimgs{position: relative;margin: 0 28rpx 10rpx 0;
  298. .cdelimg{position: absolute;width: 22rpx;height: 24rpx;right: -11rpx;top: -11rpx;z-index: 1;}
  299. .ckimg{width: 136rpx;height: 100rpx;}
  300. &:nth-of-type(4n){margin-right: 0;}
  301. }
  302. }
  303. </style>