index.vue 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. <template>
  2. <view>
  3. <z-navbar :title="(type==0?'新建':'编辑')+'婚庆预定'" back>
  4. <view slot="right" @click="submit">保存</view>
  5. </z-navbar>
  6. <z-form :model="info" :rules="rules" ref="info">
  7. <z-form-item label="新郎姓名" prop="maleName">
  8. <image slot="icon" class="common_icon" src="../../../static/icon_nv.png"></image>
  9. <z-input v-model="info.maleName" placeholder="点击填写"></z-input>
  10. </z-form-item>
  11. <z-divider></z-divider>
  12. <z-form-item label="新娘姓名" prop="femaleName" showline>
  13. <image slot="icon" class="common_icon" src="../../../static/icon_nan.png"></image>
  14. <z-input v-model="info.femaleName" placeholder="点击填写"></z-input>
  15. </z-form-item>
  16. <z-form-item label="手机号码" prop="phoneMale" showline>
  17. <image slot="icon" class="common_icon" src="../../../static/icon_phone.png"></image>
  18. <z-input type="number" v-model="info.phoneMale" placeholder="点击填写" maxlength="11"></z-input>
  19. </z-form-item>
  20. <z-form-item label="其他手机号码" prop="phoneFemale" showline>
  21. <image slot="icon" class="common_icon" src="../../../static/icon_phone.png"></image>
  22. <z-input type="number" v-model="info.phoneFemale" placeholder="点击填写"></z-input>
  23. </z-form-item>
  24. <z-form-item label="典礼开始时间" prop="beginTime" showline>
  25. <image slot="icon" class="common_icon" src="../../../static/icon_time.png"></image>
  26. <z-text v-model="info.beginTime" placeholder="选择典礼开始时间" @click="showBeginTime=true"></z-text>
  27. </picker>
  28. </z-form-item>
  29. <z-time-select :visible.sync="showBeginTime" v-model="info.beginTime" :start="beginTime||'07:00'" :end="endTime||'24:00'"></z-time-select>
  30. <z-form-item label="婚庆套餐" prop="weddingPackageId" showline>
  31. <image slot="icon" class="common_icon" src="../../../static/icon_dui.png"></image>
  32. <wedding-package type="wedding" v-model="info.weddingPackageId" placeholder="选婚庆套餐" @change="changeWedPackage"></wedding-package>
  33. </z-form-item>
  34. <z-form-item label="增加项目" prop="exItemMoney" arrow showline>
  35. <image slot="icon" class="common_icon" src="../../../static/icon_jia.png"></image>
  36. <z-text :value="(info.exItemMoney||0)+'元'" placeholder="选择增加项目" @click="addItem=true"></z-text>
  37. <extra-item isWedding title="增加项目" v-model="info.weddingExtra" :visible.sync="addItem" @getTotal="getExtraTotal"></extra-item>
  38. </z-form-item>
  39. <z-form-item label="婚庆价格" prop="weddingMoney" showline>
  40. <image slot="icon" class="common_icon" src="../../../static/icon_qian.png"></image>
  41. <z-input type="number" v-model="info.weddingMoney" placeholder="¥"></z-input>
  42. </z-form-item>
  43. <z-form-item label="订金(元)" prop="downPayment" showline>
  44. <image slot="icon" class="common_icon" src="../../../static/icon_money.png"></image>
  45. <z-input type="number" v-model="info.downPayment" placeholder="¥"></z-input>
  46. </z-form-item>
  47. <z-form-item label="婚庆接待人员" bgcolor="#eee" :labelStyle="{color:'#999'}" prop="createUserName">
  48. <image slot="icon" class="common_icon" src="../../../static/icon_person.png"></image>
  49. <z-text textColor="#999" :value="info.createUserName"></z-text>
  50. </z-form-item>
  51. <z-divider></z-divider>
  52. <z-form-item label="备注信息" prop="remark" labelPos="top">
  53. <textarea class="textarea" v-model="info.remark" placeholder="请输入备注信息" maxlength="512" auto-height></textarea>
  54. </z-form-item>
  55. </z-form>
  56. <u-toast ref="uToast"></u-toast>
  57. </view>
  58. </template>
  59. <script>
  60. const app = getApp({
  61. allowDefault: true
  62. });
  63. import extraItem from '../../component/extraItem/extraItem.vue';
  64. import weddingPackage from '../../component/package/package.vue'
  65. export default {
  66. components: {
  67. extraItem,
  68. weddingPackage
  69. },
  70. data() {
  71. var showtext = (rule, value, callback) => {
  72. //validator
  73. return {
  74. state: false,
  75. messages: '输入错误'
  76. };
  77. };
  78. return {
  79. addItem: false,
  80. showBeginTime: false,
  81. beginTime:'',
  82. endTime:'',
  83. id: '',
  84. orderId: '',
  85. type: 0,
  86. info: {
  87. maleName: '',
  88. femaleName: '',
  89. phoneMale: '',
  90. phoneFemale: '',
  91. weddingMoney: '',
  92. weddingPackageId: '',
  93. exItemMoney: '', //额外项目金额
  94. downPayment: '',
  95. beginTime: '',
  96. "packageName": '',
  97. "packageId": '',
  98. "weddingItemsExs": [], //婚庆套餐项目
  99. weddingExtra: [],
  100. "remark": ''
  101. },
  102. rules: {
  103. maleName: [{
  104. required: true,
  105. message: ''
  106. }],
  107. femaleName: [{
  108. required: true,
  109. message: ''
  110. }],
  111. weddingMoney: [{
  112. required: true,
  113. message: ''
  114. }],
  115. downPayment: [{
  116. required: true,
  117. message: ''
  118. }]
  119. }
  120. };
  121. },
  122. computed: {
  123. },
  124. onLoad(option) {
  125. this.id = option.wedId || '';
  126. this.orderId = option.orderId || '';
  127. this.type = option.type;
  128. this.beginTime=option.beginTime;
  129. this.endTime=option.endTime;
  130. if (this.type == 1)
  131. this.getData(option.wedId);
  132. else {
  133. this.getdownPayment();
  134. }
  135. },
  136. methods: {
  137. getData(wedId) {
  138. this.$axios.get('app/wedding/orderWeddingDetail/' + wedId).then(res => {
  139. console.log(res)
  140. var info = res.data;
  141. // if(info.beginTime)
  142. // info.beginTime = info.beginTime.substring(0, info.beginTime.length - 3)||''
  143. info.weddingItems = info.weddingItemsExs || []
  144. info.weddingExtra = info.extra || [];
  145. for (var i = 0; i < info.weddingItems.length; i++) {
  146. info.weddingItems[i].id = info.weddingItems[i].itemId;
  147. info.weddingItems[i].itemCount = Number(info.weddingItems[i].itemCount).toFixed(0);
  148. }
  149. for (var i = 0; i < info.weddingExtra.length; i++) {
  150. info.weddingExtra[i].id = info.weddingExtra[i].itemId;
  151. info.weddingExtra[i].itemCount = Number(info.weddingExtra[i].itemCount).toFixed(0);
  152. }
  153. this.info = info;
  154. }).catch(err => {
  155. console.log(err)
  156. this.$refs.uToast.error(err.msg);
  157. })
  158. },
  159. //新增时获取默认定金
  160. getdownPayment() {
  161. this.$axios.get('app/config/baseByStoreId/' + uni.getStorageSync('storeId')).then(res => {
  162. console.log('定金',res.data.orderDefaultMoney)
  163. this.$set(this.info, 'downPayment', res.data.orderDefaultMoney || 0);
  164. }).catch(err => {
  165. this.$refs.uToast.error(err.msg);
  166. })
  167. },
  168. getExtraTotal(data) {
  169. console.log(data)
  170. this.$set(this.info, 'exItemMoney', data.realMoney)
  171. },
  172. changeWedPackage(data) {
  173. this.info.weddingPackageName = data.packageName;
  174. this.$axios.post('app/foodPackage/foodPackageByIdAndType', {
  175. "id": this.info.weddingPackageId,
  176. "packageTypeCode": '02'
  177. }).then(res => {
  178. console.log(res)
  179. this.info.weddingItems = res.data.itemsWeddingTree || []
  180. }).catch(err => {
  181. this.$refs.uToast.error(err.msg);
  182. })
  183. },
  184. submit() {
  185. this.$refs.info.validate(val => {
  186. console.log(val)
  187. if (val) {
  188. var info = this.info;
  189. for (var i = 0; i < info.weddingExtra.length; i++) {
  190. info.weddingExtra[i].itemId = info.weddingExtra[i].id;
  191. }
  192. if (this.type == 0) {
  193. this.addSubmit();
  194. } else {
  195. this.editSubmit();
  196. }
  197. } else {
  198. this.$refs.uToast.error('表单填写有误');
  199. }
  200. })
  201. },
  202. addSubmit() {
  203. var info = this.info;
  204. console.log(info)
  205. this.$axios.post('app/wedding/orderWeddingAdd', {
  206. "storeId": uni.getStorageSync('storeId'),
  207. "orderId": this.orderId,
  208. "maleName": info.maleName,
  209. "femaleName": info.femaleName,
  210. "phoneMale": info.phoneMale,
  211. "phoneFemale": info.phoneFemale,
  212. "beginTime": info.beginTime || null,
  213. "packageName": info.weddingPackageName,
  214. "packageId": info.weddingPackageId,
  215. "exItemMoney": info.exItemMoney, //额外项目金额
  216. "weddingItemsExs": info.weddingItems, //婚庆套餐项目
  217. "extra": info.weddingExtra, //已点增加项目列表
  218. "orderMoney": info.weddingMoney,
  219. "downPayment": info.downPayment,
  220. "remark": info.remark
  221. }).then(res => {
  222. this.$refs.uToast.success('新增婚庆预定成功!');
  223. uni.navigateBack({
  224. delta: 1
  225. })
  226. }).catch(err => {
  227. this.$refs.uToast.error(err.msg);
  228. })
  229. },
  230. editSubmit() {
  231. var info = this.info;
  232. console.log(info)
  233. this.$axios.post('app/wedding/orderWeddingUpdate', {
  234. "storeId": uni.getStorageSync('storeId'),
  235. "id": info.id,
  236. "weddingOrderId": info.weddingOrderId,
  237. "orderId": info.orderId,
  238. "maleName": info.maleName,
  239. "femaleName": info.femaleName,
  240. "phoneMale": info.phoneMale,
  241. "phoneFemale": info.phoneFemale,
  242. "beginTime": info.beginTime,
  243. "packageName": info.weddingPackageName,
  244. "packageId": info.weddingPackageId,
  245. "exItemMoney": info.exItemMoney, //额外项目金额
  246. "weddingItemsExs": info.weddingItems, //婚庆套餐项目
  247. "extra": info.weddingExtra, //已点增加项目列表
  248. "orderMoney": info.weddingMoney,
  249. "downPayment": info.downPayment,
  250. "remark": info.remark
  251. }).then(res => {
  252. this.$refs.uToast.success('编辑婚庆预定成功!');
  253. uni.navigateBack({
  254. delta: 1
  255. })
  256. }).catch(err => {
  257. console.log(err.msg)
  258. this.$refs.uToast.error(err.msg);
  259. })
  260. }
  261. }
  262. }
  263. </script>
  264. <style lang="scss" scoped>
  265. .order_package_manage {
  266. background: #0075FF;
  267. color: #0075FF;
  268. width: 34rpx;
  269. height: 34rpx;
  270. }
  271. .textarea {
  272. font-size: 28rpx;
  273. min-height: 80rpx;
  274. padding-bottom: 20rpx;
  275. width: 100%;
  276. }
  277. .common_icon {
  278. width: 58rpx;
  279. height: 58rpx;
  280. min-width: 58rpx;
  281. margin-right: 30rpx;
  282. }
  283. </style>