sendDialog.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <template>
  2. <el-dialog title="派发优惠券" v-model="showDialog" width="800px" @close="closeDialog">
  3. <div style="display: flex;align-items: center">
  4. <div style="border: #dadada 1px solid;padding: 5px 5px;border-radius: 3px;width: 100px;text-align: center">
  5. 姓名/手机号
  6. </div>
  7. <el-input v-model="quickSearch" style="margin-left: 10px;width: 300px" placeholder="请输入会员姓名或手机号"
  8. clearable
  9. prefix-icon="el-icon-Search" @change="getData">
  10. </el-input>
  11. </div>
  12. <div style="margin-top: 20px;display: flex;align-items: center;justify-content: space-between">
  13. <el-button style="margin-left: 0px" type="warning" @click="submit">派发({{ selectMember.length }})</el-button>
  14. <el-radio-group v-model="memberType" @change="getData()">
  15. <el-radio-button border :label="0">可选</el-radio-button>
  16. <el-radio-button border :label="1">已派发</el-radio-button>
  17. </el-radio-group>
  18. </div>
  19. <el-table :data="memberList" style="margin-top: 20px" border height="40vh" @selection-change="select">
  20. <el-table-column type="selection"></el-table-column>
  21. <el-table-column label="头像" width="100" align="center" header-align="left">
  22. <template #default="{row}">
  23. <el-avatar :size="50" :src="row.headPortrait" />
  24. </template>
  25. </el-table-column>
  26. <el-table-column prop="nickName" label="会员" width="160"></el-table-column>
  27. <el-table-column prop="mobileNumber" label="手机号" width="150"></el-table-column>
  28. <el-table-column prop="creatorName" label="来源" width="80"></el-table-column>
  29. <el-table-column prop="lastLoginTime" label="最近登陆时间"></el-table-column>
  30. </el-table>
  31. <el-pagination style="background: #ffffff;padding: 20px 20px"
  32. v-model:current-page="currentPage"
  33. v-model:page-size="pageSize"
  34. :page-sizes="[10, 20, 50, 100]"
  35. :background="true"
  36. layout="sizes, prev, pager, next, jumper"
  37. :total="total"
  38. @size-change="getData()"
  39. @current-change="getData()"
  40. />
  41. </el-dialog>
  42. </template>
  43. <script setup>
  44. import { ref } from "vue";
  45. import request from "/@/api/request";
  46. import { coupon } from "/@/api/controllerUrls";
  47. import { ElMessage } from "element-plus";
  48. let showDialog = ref(false);
  49. let memberType = ref(0);
  50. let quickSearch = ref("");
  51. let total = ref(0);
  52. let currentPage = ref(1);
  53. let pageSize = ref(10);
  54. let selectMember = ref([]);
  55. defineExpose({
  56. open
  57. });
  58. let data = ref({});
  59. function open(event) {
  60. data.value = event;
  61. getData();
  62. showDialog.value = true;
  63. }
  64. let memberList = ref([]);
  65. function getData() {
  66. request.index(coupon, {
  67. id: data.value.id,
  68. quickSearch: quickSearch.value,
  69. limit: pageSize.value,
  70. page: currentPage.value,
  71. memberType: memberType.value
  72. }, "member").then((res) => {
  73. if (res.code == 1) {
  74. memberList.value = res.data.list;
  75. total.value = +res.data.total;
  76. }
  77. });
  78. }
  79. function select(event) {
  80. selectMember.value = event;
  81. }
  82. function submit() {
  83. if (selectMember.value.length == 0) {
  84. ElMessage({ type: "warning", message: "请选择派发对象!", grouping: true });
  85. return;
  86. }
  87. let ids = [];
  88. selectMember.value.map(value => {
  89. ids.push(value.id);
  90. });
  91. request.edit(coupon, {
  92. id: data.value.id,
  93. ids: ids
  94. }, "distribution").then((res) => {
  95. if (res.code == 1) {
  96. getData()
  97. }
  98. });
  99. }
  100. const emit = defineEmits(["close"]);
  101. function closeDialog() {
  102. emit("close");
  103. }
  104. </script>
  105. <style scoped>
  106. </style>