distribution-edit.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <template id="distribution-edit">
  2. <el-dialog :visible.sync="edit.visible" width="20%" title="添加分销商">
  3. <div>
  4. <el-form @submit.native.prevent size="small" label-width="150px">
  5. <el-form-item label="用户昵称">
  6. <el-autocomplete size="small" v-model="edit.nickname" value-key="nickname" @keyup.enter.native="keyUp"
  7. :fetch-suggestions="querySearchAsync" placeholder="请输入用户昵称/id/手机号"
  8. @select="shareClick"></el-autocomplete>
  9. </el-form-item>
  10. <el-form @submit.native.prevent size="small" label-width="150px">
  11. <el-form-item label="等级">
  12. <el-select v-model="level" placeholder="请选择分销商等级">
  13. <el-option
  14. v-for="item in level_list"
  15. :label="item.name"
  16. :value="item.level">
  17. </el-option>
  18. </el-select>
  19. </el-form-item>
  20. </el-form>
  21. </el-form>
  22. </div>
  23. <span slot="footer" class="dialog-footer">
  24. <el-button @click="editCancel" type="default" size="small">取消</el-button>
  25. <el-button type="primary" :loading="edit.btnLoading" style="margin-bottom: 10px;" size="small" @click="editSave">保存</el-button>
  26. </span>
  27. </el-dialog>
  28. </template>
  29. <script>
  30. Vue.component('distribution-edit', {
  31. template: '#distribution-edit',
  32. props: {
  33. value: {
  34. type: Boolean,
  35. default: false
  36. }
  37. },
  38. data() {
  39. return {
  40. edit: {
  41. visible: false,
  42. keyword: '',
  43. nickname: '',
  44. user_id: '',
  45. id: '',
  46. btnLoading: false,
  47. },
  48. level_list: [],
  49. level:'',
  50. };
  51. },
  52. created() {
  53. this.getLevelList();
  54. },
  55. watch: {
  56. value() {
  57. if (this.value) {
  58. this.edit.visible = true;
  59. } else {
  60. this.edit.user_id = '';
  61. this.edit.id = '';
  62. this.edit.nickname = '';
  63. this.edit.keyword = '';
  64. this.edit.visible = false;
  65. }
  66. },
  67. 'edit.visible'() {
  68. if (!this.edit.visible) {
  69. this.editCancel();
  70. }
  71. }
  72. },
  73. methods: {
  74. querySearchAsync(queryString, cb) {
  75. this.edit.keyword = queryString;
  76. this.get_user(cb);
  77. },
  78. get_user(cb) {
  79. request({
  80. params: {
  81. r: 'distribution/default/search-user',
  82. keyword: this.edit.keyword
  83. }
  84. }).then(res => {
  85. if (res.data.code == 0) {
  86. cb(res.data.data.list)
  87. } else {
  88. this.$message.error(res.data.msg);
  89. }
  90. });
  91. },
  92. shareClick(row) {
  93. this.edit.user_id = row.id
  94. },
  95. editCancel() {
  96. this.$emit('input', false);
  97. },
  98. editSave() {
  99. if (!this.edit.user_id) {
  100. this.$message.error('请选择会员');
  101. return null;
  102. }
  103. this.edit.btnLoading = true;
  104. request({
  105. params: {
  106. r: 'distribution/default/edit',
  107. },
  108. method: 'post',
  109. data: {
  110. id: this.edit.id,
  111. user_id: this.edit.user_id,
  112. level: this.level
  113. }
  114. }).then(response => {
  115. this.edit.btnLoading = false;
  116. if (response.data.code == 0) {
  117. this.$message.success('添加成功');
  118. setTimeout(() => {
  119. location.reload();
  120. }, 500);
  121. this.editCancel();
  122. } else {
  123. this.$message.error(response.data.msg);
  124. }
  125. }).catch(response => {
  126. this.edit.btnLoading = false;
  127. });
  128. },
  129. keyUp() {
  130. console.log('key up')
  131. },
  132. getLevelList() {
  133. this.edit.btnLoading = true;
  134. request({
  135. params: {
  136. r: 'distribution/default/enable-list',
  137. },
  138. method: 'get',
  139. }).then(response => {
  140. this.edit.btnLoading = false;
  141. if (response.data.code == 0) {
  142. this.level_list = response.data.data.list
  143. } else {
  144. this.$message.error(response.data.msg);
  145. }
  146. }).catch(response => {
  147. this.edit.btnLoading = false;
  148. });
  149. },
  150. }
  151. });
  152. </script>