edit.php 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <div id="app" v-cloak>
  2. <el-card shadow="never" style="border:0" class="box-card" body-style="background-color: #f3f3f3;padding: 10px 0 0;" class="box-card" v-loading="cardLoading">
  3. <div slot="header">
  4. <div flex="cross:center box:first">
  5. <div><span @click="$navigate({r:'members-card/default/index'})" class="text">亲友卡列表 </span>/创建亲友卡</div>
  6. </div>
  7. </div>
  8. <div class="form-body">
  9. <el-form :model="ruleForm" :rules="rules" size="small" ref="form" label-width="120px">
  10. <el-form-item label="亲友卡名称" prop="name">
  11. <el-input v-model="ruleForm.name" maxlength="8" show-word-limit></el-input>
  12. </el-form-item>
  13. <el-form-item label="母卡折扣" required prop="discount">
  14. <el-input placeholder="请输入母卡折扣" class="width-250" v-model="ruleForm.discount" onInput="value=toNumber(value,2)">
  15. <template slot="append">折</template>
  16. </el-input>
  17. </el-form-item>
  18. <el-form-item label="子卡折扣" prop="child_discount">
  19. <el-input placeholder="请输入子卡折扣" class="width-250" v-model="ruleForm.child_discount" onInput="value=toNumber(value,2)">
  20. <template slot="append">折</template>
  21. </el-input>
  22. </el-form-item>
  23. <el-form-item label="子卡数量" prop="child_num">
  24. <el-input placeholder="请输入子卡数量" class="width-250" v-model="ruleForm.child_num" onInput="value=toNumber(value,0)">
  25. <template slot="append">张</template>
  26. </el-input>
  27. </el-form-item>
  28. <el-form-item label="子卡有效期" prop="child_expired_days">
  29. <el-input placeholder="请输入子卡有效期" class="width-250" v-model="ruleForm.child_expired_days" onInput="value=toNumber(value,0)">
  30. <template slot="append">天</template>
  31. </el-input>
  32. </el-form-item>
  33. <el-form-item label="子卡升级链接" prop="child_upgrade_links">
  34. <el-input style="width: 500px;" placeholder="请选择升级链接" v-model="ruleForm.child_upgrade_links" readonly="true">
  35. <template slot="append">
  36. <com-pick-link @selected="selectedUrl($event)" :default-tabs="[{name: 'goods',children:['goods_cate'] }]">
  37. <el-button size="mini">选择链接</el-button>
  38. </com-pick-link>
  39. </template>
  40. </el-input>
  41. </el-form-item>
  42. <el-form-item label="背景" prop="background_url">
  43. <com-attachment v-if="!ruleForm.background_url" :multiple="false" :max="1" type="images" @selected="coverPic">
  44. <div class="card-upload">
  45. <i class="el-icon-plus"></i>
  46. </div>
  47. </com-attachment>
  48. <div class="card-coverimg" v-else>
  49. <el-image style="width: 80px; height: 80px" :src="ruleForm.background_url"></el-image>
  50. <el-button @click="delPic('background_url')" class="icon-close" type="primary" size="mini" icon="el-icon-close" circle></el-button>
  51. </div>
  52. <p class="tips-text">建议尺寸:700px*350px 格式:JPG</p>
  53. </el-form-item>
  54. <el-form-item label="是否启用" style="margin-bottom: 20px;">
  55. <div>
  56. <el-switch v-model="ruleForm.is_enable" :active-value="1" :inactive-value="0"></el-switch>
  57. </div>
  58. </el-form-item>
  59. <el-form-item label="参与赠送权限" prop="member_limit">
  60. <el-checkbox-group v-model="ruleForm.member_limit">
  61. <el-checkbox v-for="(row,index) in member_level_list" :label="row.level" :key="index">{{row.name}}</el-checkbox>
  62. </el-checkbox-group>
  63. </el-form-item>
  64. <el-form-item label="虚拟商品可用" style="margin-bottom: 20px;">
  65. <div>
  66. <el-switch v-model="ruleForm.is_enable_virtual" :active-value="1" :inactive-value="0"></el-switch>
  67. </div>
  68. </el-form-item>
  69. <el-button class="button-item" :loading="btnLoading" type="primary" @click="store('form')" size="small">保存</el-button>
  70. </el-form>
  71. </div>
  72. </el-card>
  73. </div>
  74. <script>
  75. const app = new Vue({
  76. el: '#app',
  77. data() {
  78. return {
  79. ruleForm: {
  80. name:'',
  81. discount:0,
  82. child_discount:0,
  83. child_num:0,
  84. child_expired_days:0,
  85. background_url:'',
  86. is_enable:0,
  87. member_limit:[],
  88. child_upgrade_links:'',
  89. is_enable_virtual:0,
  90. },
  91. member_level_list:[],
  92. id:0,
  93. rules: {
  94. name: [{
  95. required: true,
  96. message: '请输入亲友卡名称',
  97. trigger: 'change'
  98. }],
  99. discount: [{
  100. required: true,
  101. message: '请输入母卡折扣',
  102. trigger: 'change'
  103. }],
  104. },
  105. btnLoading: false,
  106. cardLoading: false,
  107. };
  108. },
  109. methods: {
  110. store(formName) {
  111. this.$refs[formName].validate((valid) => {
  112. let self = this;
  113. if (valid) {
  114. self.btnLoading = true;
  115. request({
  116. params: {
  117. r: 'members-card/default/edit'
  118. },
  119. method: 'post',
  120. data: {
  121. form: self.ruleForm,
  122. id:self.id,
  123. }
  124. }).then(e => {
  125. self.btnLoading = false;
  126. if (e.data.code == 0) {
  127. self.$message.success(e.data.msg);
  128. navigateTo({
  129. r: 'members-card/default/index'
  130. })
  131. } else {
  132. self.$message.error(e.data.msg);
  133. }
  134. }).catch(e => {
  135. self.$message.error(e.data.msg);
  136. self.btnLoading = false;
  137. });
  138. } else {
  139. console.log('error submit!!');
  140. return false;
  141. }
  142. });
  143. },
  144. getDetail() {
  145. let self = this;
  146. self.cardLoading = true;
  147. request({
  148. params: {
  149. r: 'members-card/default/edit',
  150. id: this.id,
  151. },
  152. method: 'get',
  153. }).then(e => {
  154. if (e.data.code == 0) {
  155. if(e.data.data.detail.id){
  156. self.ruleForm = e.data.data.detail;
  157. }
  158. self.member_level_list = e.data.data.levels;
  159. } else {
  160. self.$message.error(e.data.msg);
  161. }
  162. self.cardLoading = false;
  163. }).catch(e => {
  164. console.log(e);
  165. });
  166. },
  167. coverPic(e) { // 选择图片
  168. this.ruleForm.background_url = e[0].url
  169. },
  170. delPic(type, index) { // 删除图片
  171. switch (type) {
  172. case 'background_url':
  173. this.ruleForm.background_url = ''
  174. break;
  175. default:
  176. break;
  177. }
  178. },
  179. selectedUrl(value) {
  180. this.ruleForm.child_upgrade_links = value[0].route;
  181. console.log(value[0].route);
  182. },
  183. },
  184. mounted: function() {
  185. if (getQuery('id')) {
  186. this.id = getQuery('id');
  187. }
  188. this.getDetail();
  189. }
  190. });
  191. </script>